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.
Untuk menyiapkan ini:
Ambil titik akhir Pushgateway dari konsol Managed Service for Prometheus.
Dorong data metrik menggunakan curl atau SDK Pushgateway (Go, Java).
(Opsional) Aktifkan otentikasi berbasis token untuk membatasi siapa yang dapat mendorong data.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans Prometheus untuk target pemantauan Anda. Untuk membuatnya, lihat:
Format data yang didukung
| Format | Status |
|---|---|
| Text Format | Didukung |
| Protobuf Delimited | Didukung (default SDK) |
| Protobuf Text | Tidak didukung |
| Protobuf Compact Text | Tidak didukung |
| OpenMetrics | Tidak didukung |
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
Masuk ke Konsol ARMS. Di panel navigasi sebelah kiri, pilih Managed Service for Prometheus > Instances.
Klik nama instans Prometheus untuk membuka halaman detailnya.

Di panel navigasi sebelah kiri, klik Settings. Pada tab Settings, salin URL publik dari bagian 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>}.
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
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_2Ganti 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
Di panel navigasi sebelah kiri, klik Settings.
Pada tab Settings, klik Generate Token di bagian 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.

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.
Di panel navigasi sebelah kiri, klik Dashboards, lalu klik ApiServer.
Arahkan kursor ke ikon
di panel navigasi sebelah kiri dan klik Explore.Pilih resource Anda dari daftar drop-down dan lakukan kueri terhadap metrik yang telah Anda dorong.
