Topik ini menjelaskan cara menggunakan fitur Pushgateway yang disediakan oleh Managed Service for Prometheus untuk mendorong data metrik.
Ikhtisar
Jika server Prometheus tidak dapat menarik data dari sumber data Anda secara berkala (misalnya, di lingkungan tanpa koneksi jaringan stabil), Anda dapat menggunakan Pushgateway untuk mendorong data. Setelah data metrik dikirim dari sumber data ke Pushgateway, server Prometheus akan mengambil data tersebut secara berkala. Untuk mengimplementasikan ini, ikuti langkah-langkah berikut:
Peroleh titik akhir Pushgateway: Dapatkan titik akhir Pushgateway di konsol Managed Service for Prometheus.
Laporkan data: Jalankan perintah curl atau gunakan SDK Pushgateway open source untuk mendorong data metrik. Ini memastikan bahwa data metrik dapat dikumpulkan dan dipantau oleh Managed Service for Prometheus secara tepat waktu dan andal.
Konfigurasikan perlindungan data (opsional): Protokol Pushgateway standar tidak mencakup konten terkait perlindungan data. SDK Pushgateway hanya menyediakan autentikasi dasar dan tidak mendukung autentikasi canggih. Artinya, klien apa pun dapat mendorong data setelah mendapatkan titik akhir Pushgateway. Untuk memastikan keamanan data, Anda dapat memperoleh token di konsol Managed Service for Prometheus untuk mengimplementasikan protokol otentikasi JSON web standar (JWT).
Prasyarat
Sebuah Instans Prometheus telah dibuat. Untuk informasi lebih lanjut, lihat topik-topik berikut:
Langkah 1: Peroleh titik akhir Pushgateway
Masuk ke Konsol Cloud Monitor. Di panel navigasi kiri, pilih . Halaman Instances akan ditampilkan.
Di bagian atas daftar instans, pilih wilayah tempat Instans Prometheus Anda berada. Klik Settings di kolom Actions dari instans.
Pada tab Settings, peroleh URL publik di bagian Pushgateway URL.

Langkah 2: Laporkan data
Prometheus V1
Gunakan SDK Pushgateway open source untuk mendorong data metrik
Hanya spesifikasi Text Format dan Protobuf Delimited yang didukung. Spesifikasi Protobuf Text, Protobuf Compact Text, dan OpenMetrics tidak didukung. Secara default, SDK Pushgateway digunakan dengan Protobuf Delimited.
Bidang
Helpdalam metadata tidak mendukung karakter Cina. Jika karakter Cina dilewatkan, pelaporan data gagal.
Topik ini menjelaskan cara menggunakan Pushgateway SDK untuk Go dan Pushgateway SDK untuk Java untuk mendorong data metrik.
Pushgateway SDK untuk 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)
}Pushgateway SDK untuk 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");
}Saat menggunakan SDK Pushgateway open source, masukkan titik akhir Pushgateway yang diperoleh dari konsol Managed Service for Prometheus. Sistem secara otomatis membuat akhiran serupa dengan
/metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}. Jika Anda tidak menggunakan SDK Pushgateway open source, Anda harus membuat akhiran secara manual. Jika tidak, kesalahan 404 akan dikembalikan.Jika Anda perlu mendorong data metrik ke kluster yang dibagikan oleh beberapa penyewa dan dipantau oleh Managed Service for Prometheus, tambahkan tag
tenant_userid=****ke metrik. Nilai tag digunakan untuk membedakan hubungan antara metrik. Atur nilai tag ke ID Akun Alibaba Cloud yang memiliki metrik tersebut.
Jalankan perintah curl untuk mendorong data metrik
Permintaan tipe application/x-www-form-urlencoded tidak didukung. Dalam perintah curl, Anda harus menambahkan header untuk 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_2Anda dapat melampirkan beberapa label ke akhir URL, tetapi Anda perlu memperhatikan panjang keseluruhan URL.
Ganti
job_namedi URL dengan nama pekerjaan sebenarnya.
Konfigurasikan perlindungan data (opsional)
Peroleh token: Di panel navigasi kiri, klik Settings. Pada tab Settings, klik Generate Token di bagian Token.

Lewati token: Setelah token dihasilkan, Anda dapat melihat nilai token. Anda dapat menggunakan salah satu metode berikut untuk melewati token:
Metode 1: Tambahkan token ke header permintaan klien. Kemudian, Anda dapat mendorong data metrik. Jika tidak, sistem akan menolak penulisan data. Gambar berikut menunjukkan cara menambahkan token ke header permintaan klien.

Metode 2: SDK Pushgateway hanya mendukung autentikasi dasar dan tidak mendukung autentikasi JWT. Jika Anda ingin menggunakan SDK Pushgateway dan mengimplementasikan autentikasi tingkat lanjut pada saat yang sama, Anda dapat menggunakan antarmuka BasicAuth dan atur bidang Password ke nilai token. Sisi layanan kompatibel dengan metode autentikasi ini. Metode 1 dapat meningkatkan biaya pengembangan Anda. Dalam contoh ini, Pushgateway SDK untuk Go digunakan.
pusher := push.New(url, "test"). Collector(completionTime).Client(http.DefaultClient). Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/"). .BasicAuth("admin", "Nilai Token"). Format(expfmt.FmtProtoDelim)
Prometheus V2
1. Berikan izin baca dan tulis kepada Pengguna RAM pada Cloud Monitor
Jika Instans Prometheus Anda dibuat menggunakan Akun Alibaba Cloud dan Anda ingin menggunakan ID AccessKey dan Rahasia AccessKey Manajemen Akses Sumber Daya (RAM) untuk melakukan operasi baca dan tulis jarak jauh, Anda harus terlebih dahulu memberikan izin baca dan tulis kepada Pengguna RAM pada Cloud Monitor.
Masuk ke Konsol RAM sebagai administrator RAM atau dengan Akun Alibaba Cloud. Di panel navigasi kiri, pilih .
Di halaman Permission, klik Grant Permission. Di panel yang muncul, atur parameter yang tercantum dalam tabel berikut.
Parameter
Deskripsi
Resource Scope
Atur parameter ini berdasarkan kebutuhan bisnis Anda.
Principal
Pengguna RAM.
Policy
Pilih AliyunPrometheusMetricWriteAccess atau AliyunCloudMonitorFullAccess.
Klik Grant permissions, dan klik Close.
2. Push data
Gunakan SDK Pushgateway open source untuk mendorong data metrik
Hanya spesifikasi Text Format dan Protobuf Delimited yang didukung. Spesifikasi Protobuf Text, Protobuf Compact Text, dan OpenMetrics tidak didukung. Secara default, SDK Pushgateway digunakan dengan Protobuf Delimited.
Bidang
Helpdalam metadata tidak mendukung karakter Cina. Jika karakter Cina dilewatkan, pelaporan data gagal.
Topik ini menjelaskan cara menggunakan Pushgateway SDK untuk Go dan Pushgateway SDK untuk Java untuk mendorong data metrik.
Pushgateway SDK untuk 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)
}Pushgateway SDK untuk 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");
}Saat menggunakan SDK Pushgateway open source, masukkan titik akhir Pushgateway yang diperoleh dari konsol Managed Service for Prometheus. Sistem secara otomatis membuat akhiran serupa dengan
/metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>}. Jika Anda tidak menggunakan SDK Pushgateway open source, Anda harus membuat akhiran secara manual. Jika tidak, kesalahan 404 akan dikembalikan.Jika Anda perlu mendorong data metrik ke kluster yang dibagikan oleh beberapa penyewa dan dipantau oleh Managed Service for Prometheus, tambahkan tag
tenant_userid=****ke metrik. Nilai tag digunakan untuk membedakan hubungan antara metrik. Atur nilai tag ke ID Akun Alibaba Cloud yang memiliki metrik tersebut.API mendukung autentikasi Layanan Token Keamanan (STS). Dalam hal ini,
PassworddiBasicAuthberada dalam format{Rahasia AccessKey}${Token STS}.
Jalankan perintah curl untuk mendorong data metrik
Permintaan tipe application/x-www-form-urlencoded tidak didukung. Dalam perintah curl, Anda harus menambahkan header untuk 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_2Anda dapat melampirkan beberapa label ke akhir URL, tetapi Anda perlu memperhatikan panjang keseluruhan URL.
Ganti
job_namedi URL dengan nama pekerjaan sebenarnya.
Verifikasi hasil
Anda dapat menggunakan Grafana untuk memeriksa apakah data metrik telah didorong.
Pergi ke Dasbor ApiServer: Di panel navigasi kiri, klik Dashboards. Di halaman Dashboards, klik ApiServer.
Lihat data di halaman Explore: Di panel navigasi kiri, gerakkan pointer di atas ikon
(1 di gambar) dan klik Explore. Di halaman Explore, pilih sumber daya Anda dari daftar drop-down Explore (2 di gambar) untuk memeriksa apakah data metrik telah didorong.