Kueri PromQL di Google Cloud Managed Service for Prometheus dievaluasi sebagian di backend Monarch, dan ada beberapa perbedaan yang diketahui dalam hasil kueri. Dokumen ini menjelaskan perbedaannya.
Selain perbedaan yang tercantum dalam dokumen ini, PromQL di Managed Service for Prometheus setara dengan PromQL yang tersedia di Prometheus versi 2.44.Fungsi PromQL yang ditambahkan setelah Prometheus versi 2.44 mungkin tidak didukung.
Dukungan UTF-8
PromQL untuk Cloud Monitoring mendukung kueri UTF-8.
Jika nama metrik Prometheus Anda hanya terdiri dari karakter alfanumerik ditambah karakter _
atau :
, dan jika kunci label Anda hanya terdiri dari karakter alfanumerik ditambah karakter _
, Anda dapat membuat kueri menggunakan sintaksis PromQL tradisional.
Misalnya, kueri yang valid mungkin terlihat seperti
job:my_metric:sum{label_key="label_value"}
.
Namun, jika nama metrik Prometheus Anda menggunakan karakter khusus
kecuali karakter _
atau :
, atau jika kunci label Anda menggunakan karakter khusus
kecuali karakter _
, maka Anda harus membuat kueri
sesuai dengan spesifikasi UTF-8 untuk PromQL.
Nama metrik UTF-8 harus diapit tanda petik dan dipindahkan ke dalam tanda kurung. Nama label juga harus diapit tanda petik jika berisi karakter yang tidak kompatibel dengan versi lama. Contoh kueri valid berikut semuanya setara:
{"my.domain.com/metric/name_bucket", "label.key"="label.value"}
{__name__="my.domain.com/metric/name_bucket", "label.key"="label.value"}
{"__name__"="my.domain.com/metric/name_bucket", "label.key"="label.value"}
Mencocokkan nama metrik
Hanya pencocokan persis pada nama metrik yang didukung. Anda harus menyertakan kecocokan persis pada nama metrik dalam kueri Anda.
Sebaiknya gunakan solusi berikut untuk skenario umum yang menggunakan pencocokan ekspresi reguler pada label __name__
:
- Konfigurasi adaptor Prometheus sering menggunakan operator
=~
untuk mencocokkan beberapa nama metrik. Untuk memperbaiki penggunaan ini, perluas konfigurasi untuk menggunakan kebijakan terpisah untuk setiap metrik dan beri nama setiap metrik secara eksplisit. Hal ini juga mencegah Anda melakukan penskalaan otomatis secara tidak sengaja pada metrik yang tidak terduga. - Ekspresi reguler sering digunakan untuk membuat grafik beberapa metrik non-dimensi
pada diagram yang sama. Misalnya, jika Anda memiliki metrik seperti
cpu_servicename_usage
, Anda dapat menggunakan karakter pengganti untuk membuat grafik semua layanan Anda secara bersamaan. Menggunakan metrik non-dimensi seperti ini adalah praktik yang sangat buruk di Cloud Monitoring, dan praktik ini menyebabkan performa kueri yang sangat buruk. Untuk memperbaiki penggunaan ini, pindahkan semua dimensi ke dalam label metrik, bukan menyematkan dimensi dalam nama metrik. - Kueri untuk beberapa metrik sering digunakan untuk melihat metrik yang tersedia untuk dikueri. Sebaiknya gunakan panggilan
/labels/__name__/values
untuk menemukan metrik. Anda juga dapat menemukan metrik menggunakan UI Cloud Monitoring. - Mencocokkan beberapa metrik berguna untuk melihat berapa banyak sampel yang di-scraping, diserap, dan ditagih berdasarkan per metrik. Cloud Monitoring memberikan informasi ini kepada Anda di halaman Pengelolaan Metrik. Anda juga dapat mengakses informasi ini sebagai data metrik menggunakan metrik Sampel yang Di-Ingest atau metrik Sampel yang Ditulis oleh ID Atribusi.
Tidak berlaku
Keterlambatan tidak didukung di backend Monarch.
Penghitungan irate
Jika periode lihat balik untuk fungsi irate
kurang dari ukuran langkah, kami akan memperbesar periode menjadi ukuran langkah.
Monarch memerlukan perubahan ini untuk memastikan bahwa tidak ada data
input yang sepenuhnya diabaikan dalam output. Perbedaan ini juga berlaku untuk penghitungan
rate
.
Penghitungan rate
dan increase
Jika periode lihat balik untuk fungsi rate
kurang dari ukuran langkah, kami akan memperbesar periode menjadi ukuran langkah.
Monarch memerlukan perubahan ini untuk memastikan bahwa tidak ada data input yang
diabaikan sepenuhnya dalam output. Perbedaan ini juga berlaku untuk penghitungan
irate
.
Ada perbedaan dalam penghitungan interpolasi dan ekstrapolasi. Monarch menggunakan algoritma interpolasi yang berbeda dengan Prometheus, dan perbedaan ini dapat menyebabkan hasil yang sedikit berbeda. Misalnya, sampel penghitung Monarch disimpan dengan rentang waktu, bukan stempel waktu tunggal yang digunakan Prometheus. Oleh karena itu, contoh penghitung di Monarch dapat disertakan dalam penghitungan rasio meskipun stempel waktu Prometheus akan mengecualikannya. Hal ini umumnya menghasilkan hasil tarif yang lebih akurat, terutama saat membuat kueri di awal atau akhir deret waktu pokok.
Penghitungan histogram_quantile
Penghitungan histogram_quantile
PromQL pada histogram tanpa sampel menghasilkan nilai NaN. Penghitungan bahasa kueri internal tidak menghasilkan nilai;
titik pada stempel waktu akan dihilangkan.
Perbedaan perhitungan tarif juga dapat memengaruhi input ke kueri
histogram_quantile
.
Fungsi khusus jenis pada metrik dengan jenis yang berbeda
Meskipun Prometheus upstream diketik secara lemah, Monarch diketik secara kuat. Artinya, menjalankan fungsi khusus untuk satu jenis pada metrik dengan jenis yang berbeda (misalnya, menjalankan rate()
pada metrik GAUGE atau histogram_quantile()
pada metrik COUNTER atau metrik tanpa jenis) tidak berfungsi di Managed Service for Prometheus, meskipun fungsi ini berfungsi di Prometheus upstream.