All Products
Search
Document Center

Managed Service for Prometheus:Dorong data menggunakan Pushgateway

Last Updated:Jun 23, 2026

Dorong data pemantauan ke Managed Service for Prometheus dengan menggunakan Pushgateway, yang ideal untuk sumber data yang tidak dapat di-scrape secara berkala.

Ikhtisar solusi

Jika sumber data Anda tidak dapat atau sebaiknya tidak di-scrape secara berkala oleh Prometheus Server—misalnya di lingkungan tanpa konektivitas jaringan yang stabil—Anda dapat menggunakan Pushgateway sebagai gantinya. Sumber data mengirimkan data pemantauan ke Pushgateway, dan Prometheus Server mengambilnya secara berkala. Ikuti langkah-langkah berikut:

  1. Dapatkan titik akhir Pushgateway: Peroleh titik akhir Pushgateway dari konsol Managed Service for Prometheus.

  2. Laporkan data: Gunakan perintah curl atau SDK open source untuk mendorong data. Pastikan metrik dikumpulkan dan dipantau oleh Prometheus secara tepat waktu dan andal.

  3. Tambahkan konfigurasi perlindungan data (opsional): Protokol Pushgateway standar tidak menyertakan fitur perlindungan data. SDK Pushgateway hanya mendukung Basic Auth dan tidak memiliki autentikasi lanjutan yang distandarkan. Klien apa pun yang memperoleh titik akhir Pushgateway dapat mendorong data. Untuk mengamankan data Anda, peroleh token dari konsol Managed Service for Prometheus dan terapkan autentikasi berbasis JWT standar.

Prasyarat

Anda telah membuat Prometheus instance. Untuk informasi selengkapnya, lihat:

Langkah 1: Dapatkan titik akhir Push Gateway

  1. Masuk ke Konsol Cloud Monitor. Di panel navigasi kiri, pilih Managed Service for Prometheus > Instances. Halaman Instances akan muncul.

  2. Di bilah menu bagian atas halaman, pilih wilayah tempat instans Prometheus Anda berada. Di kolom Actions kluster tujuan, klik Settings.

  3. Di tab Settings, temukan bagian Pushgateway URL dan salin URL publiknya.

    Bagian ini juga menyediakan URL Push Gateway jaringan pribadi. Pilih URL yang sesuai berdasarkan lingkungan jaringan aktual Anda.

Langkah 2: Laporkan data

Versi V1

Dorong data menggunakan SDK open source

Penting
  • Protokol data saat ini mendukung Text Format dan Protobuf Delimited. Protokol ini tidak mendukung Protobuf Text, Protobuf Compact-Text, atau OpenMetrics. SDK biasanya menggunakan Protobuf Delimited sebagai default.

  • Metadata HELP metrik tidak mendukung karakter Tionghoa. Jika HELP berisi karakter Tionghoa, pelaporan data akan gagal.

Contoh Go dan Java berikut menunjukkan cara mendorong metrik menggunakan SDK open source.

Contoh Go:

completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
    Name: "db_backup_last_completion_timestamp_seconds",
    Help: "The timestamp of the last successful completion of a DB backup.",
})
completionTime.SetToCurrentTime()
url :   = "https://cn-hangzhou.arms.aliyuncs.com/prometheus/52b12ea9cf4bb9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2"
pusher := push.New(url, "test").
    Collector(completionTime).Client(http.DefaultClient).
    Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
    Format(expfmt.FmtProtoDelim)
if err := pusher.Push(); err != nil {
    fmt.Println("Could not push completion time to PushGateway: ", err)
}

Contoh Java:

CollectorRegistry registry = new CollectorRegistry();
Gauge duration = Gauge.build()
        .name("my_batch_job_duration_seconds").help("Duration of my batch job in seconds.").register(registry);
Gauge.Timer durationTimer = duration.startTimer();
try {
    // Your code here.
    // This is only added to the registry after success,
    // so that a previous success in the Pushgateway isn't overwritten on failure.
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry);
    lastSuccess.setToCurrentTime();
} finally {
    durationTimer.setDuration();
    PushGateway pg = new PushGateway(new URL("https://cn-hangzhou.arms.aliyuncs.com/prometheus/52b12ea9cf4bb9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2"));
    pg.pushAdd(registry, "my_batch_job");
}
Catatan
  • Saat Anda menggunakan SDK open source dan memasukkan titik akhir Pushgateway yang diperoleh dari konsol Pemantauan Prometheus, sistem secara otomatis menambahkan sufiks seperti /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}. Jika Anda tidak menggunakan SDK open source, Anda harus menambahkan sufiks ini sendiri. Jika tidak, Anda akan menerima error 404.

  • Jika Anda mendorong data ke kluster penyewa bersama Managed Service for Prometheus, semua metrik harus menyertakan label tenant_userid=****. Nilai tag tersebut harus berupa ID akun Alibaba Cloud (yaitu ID akun root) tempat metrik tersebut berasal. Hal ini membedakan kepemilikan metrik.

Dorong data menggunakan perintah curl

Penting

Tipe permintaan application/x-www-form-urlencoded tidak didukung. Dalam perintah curl, tambahkan header yang menentukan Content-Type: text/plain; version=0.0.4; charset=utf-8.

echo "some_metric 3.14" | curl -H "Content-Type: text/plain; version=0.0.4; charset=utf-8" --data-binary @- https://cn-hangzhou.arms.aliyuncs.com/prometheus/51bbea9ck41b9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2/metrics/job/job_name/label_key_1/label_value_1/label_key_2/label_value_2
Catatan
  • Anda dapat menambahkan beberapa label ke URL, tetapi pastikan panjang total URL tetap dalam batas yang diizinkan.

  • Ganti “job_name” dalam URL dengan nama job aktual Anda.

Tambahkan konfigurasi perlindungan data (opsional)

  1. Dapatkan token: Di panel navigasi kiri, pilih Settings. Di tab Settings, pada bagian Token, klik Generate Token.

  2. Kirimkan token: Setelah menghasilkan token, gunakan salah satu metode berikut untuk mengirimkannya.

    • Metode 1: Atur token dalam header permintaan klien untuk mendorong data secara normal. Jika tidak, sistem akan menolak permintaan tulis. Gunakan format header berikut:

      Authorization: Bearer <token>
    • Metode 2: SDK Pushgateway hanya mendukung Basic Auth dan tidak mendukung JWT. Untuk menggunakan SDK dengan autentikasi, gunakan antarmuka BasicAuth dan atur password ke nilai token. Sisi server mendukung metode autentikasi ini. Metode 1 memerlukan upaya pengembangan tambahan. Contoh berikut menggunakan SDK Go.

      pusher := push.New(url, "test").
              Collector(completionTime).Client(http.DefaultClient).
              Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
              .BasicAuth("admin", "actual token value").
              Format(expfmt.FmtProtoDelim)

Versi V2

1. Berikan izin baca dan tulis CMS kepada pengguna RAM

Jika instans Prometheus Alibaba Cloud Anda dibuat oleh akun Alibaba Cloud, dan Anda perlu menggunakan ID AccessKey dan rahasia AccessKey pengguna RAM untuk operasi baca dan tulis jarak jauh, Anda harus terlebih dahulu memberikan izin baca dan tulis CMS kepada pengguna RAM tersebut.

  1. Masuk ke Konsol Resource Access Management (RAM) menggunakan akun Alibaba Cloud atau administrator RAM. Di panel navigasi kiri, pilih Permission Management > Authorization.

  2. Di halaman Authorization, klik Create Authorization. Di halaman Create Authorization, konfigurasikan parameter berikut.

    Parameter

    Deskripsi

    Resource Scope

    Pilih cakupan resource sesuai kebutuhan.

    Principal

    Pilih pengguna RAM yang ingin Anda otorisasi.

    Policy

    Pilih AliyunPrometheusMetricWriteAccess atau AliyunCloudMonitorFullAccess.

  3. Klik OK, lalu klik Close.

2. Kirim data

Dorong data menggunakan SDK open source

Penting
  • Protokol data saat ini mendukung Text Format dan Protobuf Delimited. Protokol ini tidak mendukung Protobuf Text, Protobuf Compact-Text, atau OpenMetrics. SDK biasanya menggunakan Protobuf Delimited sebagai default.

  • Metadata HELP metrik tidak mendukung karakter Tionghoa. Jika HELP berisi karakter Tionghoa, pelaporan data akan gagal.

Contoh Go dan Java berikut menunjukkan cara mendorong metrik menggunakan SDK open source.

Contoh Go:

completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
    Name: "db_backup_last_completion_timestamp_seconds",
    Help: "The timestamp of the last successful completion of a DB backup.",
})
completionTime.SetToCurrentTime()
url :   = "https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway"
pusher := push.New(url, "test").
    Collector(completionTime).Client(http.DefaultClient).
    Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
    BasicAuth("ak", "sk").  
    Format(expfmt.FmtProtoDelim)
if err := pusher.Push(); err != nil {
    fmt.Println("Could not push completion time to PushGateway: ", err)
}

Contoh Java:

CollectorRegistry registry = new CollectorRegistry();
Gauge duration = Gauge.build()
        .name("my_batch_job_duration_seconds").help("Duration of my batch job in seconds.").register(registry);
Gauge.Timer durationTimer = duration.startTimer();
try {
    // Your code here.
    // This is only added to the registry after success,
    // so that a previous success in the Pushgateway isn't overwritten on failure.
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry);
    lastSuccess.setToCurrentTime();
} finally {
    durationTimer.setDuration();
    PushGateway pg = new PushGateway(new URL("https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway"));       
    pg.setConnectionFactory(new BasicAuthHttpConnectionFactory("ak", "sk"));  
    pg.pushAdd(registry, "my_batch_job");
}
Catatan
  • Saat Anda menggunakan SDK open source dan memasukkan titik akhir Pushgateway yang diperoleh dari konsol Pemantauan Prometheus, sistem secara otomatis menambahkan sufiks seperti /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}. Jika Anda tidak menggunakan SDK open source, Anda harus menambahkan sufiks ini sendiri. Jika tidak, Anda akan menerima error 404.

  • Jika Anda mendorong data ke kluster penyewa bersama Managed Service for Prometheus, semua metrik harus menyertakan label tenant_userid=****. Nilai tag tersebut harus berupa ID akun Alibaba Cloud (yaitu ID akun root) tempat metrik tersebut berasal. Hal ini membedakan kepemilikan metrik.

  • Operasi API mendukung autentikasi Security Token Service (STS). Dalam kasus ini, password dalam BasicAuth menggunakan format {AccessKey Secret}${STS Token}.

Dorong data menggunakan perintah curl

Penting

Tipe permintaan application/x-www-form-urlencoded tidak didukung. Dalam perintah curl, tambahkan header yang menentukan Content-Type: text/plain; version=0.0.4; charset=utf-8.

echo "some_metric 3.14" | curl -u 'ak:sk' -H "Content-Type: text/plain; version=0.0.4; charset=utf-8" --data-binary @- https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway/metrics/job/job_name/label_key_1/label_value_1/label_key_2/label_value_2
Catatan
  • Anda dapat menambahkan beberapa label ke URL, tetapi pastikan panjang total URL tetap dalam batas yang diizinkan.

  • Ganti “job_name” dalam URL dengan nama job aktual Anda.

Verifikasi hasil

Gunakan Grafana untuk memverifikasi bahwa data telah berhasil didorong.

  1. Buka dasbor ApiServer: Di panel navigasi sebelah kiri, pilih Dashboards. Lalu klik tautan dasbor ApiServer. Sistem akan mengalihkan Anda ke halaman dasbor tersebut.

  2. Pilih Explore untuk melihat data: Di halaman dasbor, arahkan kursor ke ikon eu di panel navigasi sebelah kiri. Di kotak pop-up yang muncul, klik Explore. Di sisi kanan halaman Explore, gunakan menu dropdown untuk memilih instans Explore yang sesuai dan periksa apakah data telah berhasil didorong.

    Di bidang Metrics, masukkan nama metrik yang Anda dorong (misalnya db_backup_last_completion_timestamp_seconds). Atur Query type menjadi Range. Setelah mengklik Run, jika muncul kurva di area Graph di bawah ini, berarti data telah berhasil didorong.