All Products
Search
Document Center

Application Real-Time Monitoring Service:Dorong data metrik dengan Pushgateway

Last Updated:Mar 11, 2026

Pekerjaan batch, proses berumur pendek, dan lingkungan yang terisolasi secara jaringan tidak dapat mengekspos titik akhir HTTP yang stabil untuk di-scrape oleh Prometheus. Pushgateway mengatasi hal ini dengan menerima metrik yang didorong dan menyimpannya hingga server Prometheus mengambilnya pada interval scrape reguler. Gunakan Pushgateway dalam Managed Service for Prometheus untuk mengumpulkan metrik dari sumber data tersebut tanpa mengubah topologi jaringan Anda.

Cara kerja

Sumber data Anda mendorong metrik ke Pushgateway, dan server Prometheus secara berkala menarik data tersebut dari Pushgateway.

Architecture diagram

Untuk menyiapkan ini:

  1. Ambil titik akhir Pushgateway dari konsol Managed Service for Prometheus.

  2. Dorong data metrik menggunakan curl atau SDK Pushgateway (Go, Java).

  3. (Opsional) Aktifkan otentikasi berbasis token untuk membatasi siapa yang dapat mendorong data.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Format data yang didukung

FormatStatus
Text FormatDidukung
Protobuf DelimitedDidukung (default SDK)
Protobuf TextTidak didukung
Protobuf Compact TextTidak didukung
OpenMetricsTidak didukung
Penting

Bidang Help dalam metadata metrik tidak mendukung karakter Tionghoa. Mendorong metrik dengan karakter Tionghoa pada bidang ini menyebabkan pelaporan data gagal.

Langkah 1: Dapatkan titik akhir Pushgateway

  1. Masuk ke Konsol ARMS. Di panel navigasi sebelah kiri, pilih Managed Service for Prometheus > Instances.

  2. Klik nama instans Prometheus untuk membuka halaman detailnya.

    Instance list

  3. Di panel navigasi sebelah kiri, klik Settings. Pada tab Settings, salin URL publik dari bagian Push Gateway URL.

    Push Gateway URL

Langkah 2: Dorong data metrik

Dorong data metrik menggunakan SDK Pushgateway atau curl.

Gunakan SDK Pushgateway

Semua contoh SDK di bawah ini mendorong metrik ke titik akhir Pushgateway dari Langkah 1. SDK secara otomatis menambahkan sufiks URL dalam format /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}.

Catatan

Jika Anda tidak menggunakan SDK Pushgateway open-source, tambahkan sufiks ini secara manual. Jika tidak, akan dikembalikan error 404.

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)
}

Ganti nilai url dengan titik akhir Pushgateway dari konsol Anda.

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");
}

Ganti URL dalam new PushGateway(new URL(...)) dengan titik akhir Pushgateway dari konsol Anda.

Gunakan curl

Penting

Permintaan dengan tipe konten application/x-www-form-urlencoded tidak didukung. Tetapkan Content-Type: text/plain; version=0.0.4; charset=utf-8 di header permintaan.

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/label_key_1/label_value_1/label_key_2/label_value_2

Ganti URL dengan titik akhir Pushgateway dari konsol Anda. Tambahkan label sebagai pasangan kunci-nilai di akhir path URL. Pastikan panjang total URL tetap dalam batas wajar.

Dorong ke kluster multi-penyewa

Untuk mendorong data metrik ke kluster yang digunakan bersama oleh beberapa penyewa, sertakan tag tenant_userid=**** pada setiap metrik. Tetapkan nilai tag tersebut ke ID akun Alibaba Cloud yang memiliki metrik tersebut.

Langkah 3 (opsional): Amankan Pushgateway dengan otentikasi token

Secara default, client mana pun yang memiliki titik akhir Pushgateway dapat mendorong data. Untuk membatasi akses, hasilkan Token Web JSON (JWT) dan sertakan dalam setiap permintaan.

Hasilkan token

  1. Di panel navigasi sebelah kiri, klik Settings.

  2. Pada tab Settings, klik Generate Token di bagian Token.

    Generate Token

Sertakan token dalam permintaan

Gunakan salah satu metode berikut untuk menyertakan token:

Metode 1: Tambahkan token ke header permintaan

Tambahkan JWT ke header Authorization pada setiap permintaan dorong. Permintaan tanpa token yang valid akan ditolak.

Request header token

Metode 2: Gunakan BasicAuth (kompatibel dengan SDK)

Metode 1 dapat meningkatkan biaya pengembangan Anda. Sebagai alternatif, SDK Pushgateway mendukung autentikasi dasar tetapi tidak langsung mendukung JWT. Sebagai solusi, lewatkan token melalui antarmuka BasicAuth dengan mengatur bidang password ke nilai token Anda. Server menerima metode ini.

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

Ganti <your-token-value> dengan token yang dihasilkan di konsol.

Verifikasi hasil

Konfirmasi bahwa data metrik telah tiba dengan melakukan kueri di Grafana.

  1. Di panel navigasi sebelah kiri, klik Dashboards, lalu klik ApiServer.

  2. Arahkan kursor ke ikon Explore icon di panel navigasi sebelah kiri dan klik Explore.

  3. Pilih resource Anda dari daftar drop-down dan lakukan kueri terhadap metrik yang telah Anda dorong.

    Explore page