Dokumen ini menjelaskan cara mengonfigurasi Grafana untuk membaca data metrik dari Cloud Monitoring. Kemudian, Anda dapat menggunakan PromQL untuk memvisualisasikan dan memetakan data. Grafana dan Cloud Monitoring ditautkan bersama oleh proses yang disebut penyinkron sumber data, yang memungkinkan komunikasi antara sumber data Grafana dan Cloud Monitoring. Penyinkron sumber data melakukan hal berikut:
- Mengirim nilai konfigurasi ke sumber data Grafana.
- Mempertahankan kredensial autentikasi untuk Trusted Cloud by S3NS akun layanan yang dapat membaca data metrik dari Cloud Monitoring.
Dokumen ini menjelaskan cara menyiapkan sinkronisasi sumber data dan memberikan informasi khusus untuk penggunaan PromQL di Cloud Monitoring. Dokumen ini mengasumsikan bahwa Anda sudah memahami Grafana.
Memberi otorisasi Grafana untuk membaca data metrik
Bagian ini menjelaskan cara menyiapkan otorisasi antara Cloud Monitoring dan Grafana menggunakan penyinkron sumber data untuk membuat dan menyinkronkan kredensial.
Menggunakan penyinkron sumber data untuk otorisasi
Trusted Cloud by S3NS Semua API memerlukan autentikasi menggunakan OAuth2; namun, Grafana tidak mendukung autentikasi OAuth2 untuk akun layanan yang digunakan dengan sumber data Prometheus. Untuk menggunakan Grafana dengan Cloud Monitoring, Anda menggunakan penyinkron sumber data untuk membuat kredensial OAuth2 bagi akun layanan Anda dan menyinkronkannya ke Grafana melalui API sumber data Grafana.
Anda harus menggunakan penyinkron sumber data untuk mengonfigurasi dan memberi otorisasi Grafana agar dapat membuat kueri data secara global. Jika Anda tidak mengikuti langkah-langkah ini, Grafana hanya mengeksekusi kueri terhadap data di server Prometheus lokal.
Penyinkron sumber data adalah alat antarmuka command line yang mengirimkan nilai konfigurasi dari jarak jauh ke sumber data Grafana Prometheus tertentu. Hal ini memastikan bahwa sumber data Grafana Anda telah dikonfigurasi dengan benar sebagai berikut:
- Autentikasi, dilakukan dengan menyegarkan token akses OAuth2 secara berkala
- Kumpulan Cloud Monitoring API ditetapkan sebagai URL server Prometheus
- Metode HTTP ditetapkan ke GET
- Jenis dan versi Prometheus ditetapkan minimal ke 2.40.x
- Nilai waktu tunggu HTTP dan Kueri ditetapkan ke 2 menit
Penyinkron sumber data harus dijalankan berulang kali. Karena masa aktif token akses Trusted Cloud by S3NS API adalah satu jam, menjalankan sinkronisasi sumber data setiap 10 menit akan memastikan Anda memiliki koneksi yang diautentikasi tanpa gangguan antara Grafana dan Cloud Monitoring API.
Mengonfigurasi dan mengautentikasi sumber data Grafana
Anda dapat menggunakan Grafana untuk membuat kueri data metrik Cloud Monitoring dari layanan Google Kubernetes Engine atau lingkungan lainnya. Petunjuk menggunakan variabel yang dapat diedit untuk membuat perintah yang dapat dijalankan. Kami sangat menyarankan penggunaan variabel yang dapat diedit dan ikon salin-tempel yang dapat diklik yang disematkan dalam contoh kode.
GKE
Untuk men-deploy dan menjalankan penyinkron sumber data di cluster Kubernetes, lakukan hal berikut:
Pilih project, cluster, dan namespace untuk men-deploy sinkronisasi sumber data.
Selanjutnya, pastikan Anda mengonfigurasi dan mengizinkan penyinkron sumber data dengan benar:
- Jika Anda menggunakan Workload Identity Federation untuk GKE, ikuti petunjuk untuk membuat dan memberi otorisasi akun layanan. Pastikan untuk mengikatnya ke namespace Kubernetes tempat Anda ingin menjalankan sinkronisasi sumber data.
- Jika Anda tidak menggunakan Workload Identity Federation untuk GKE, pastikan Anda tidak mengubah akun layanan Compute Engine default.
Tentukan URL instance Grafana Anda, misalnya
https://yourcompanyname.grafana.net
untuk deployment Grafana Cloud atauhttp://grafana.NAMESPACE_NAME.svc:3000
untuk instance lokal yang dikonfigurasi menggunakan YAML deployment pengujian.Jika Anda men-deploy Grafana secara lokal dan cluster Anda dikonfigurasi untuk mengamankan semua traffic dalam cluster menggunakan TLS, Anda harus menggunakan
https://
di URL dan melakukan autentikasi menggunakan salah satu opsi autentikasi TLS yang didukung.Pilih sumber data Grafana Prometheus yang ingin Anda gunakan untuk Cloud Monitoring, yang dapat berupa sumber data baru atau yang sudah ada, lalu temukan dan catat UID sumber data. UID sumber data dapat ditemukan di bagian terakhir URL saat menjelajahi atau mengonfigurasi sumber data, misalnya
https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID.
Jangan salin seluruh URL sumber data. Salin hanya ID unik di URL.Siapkan akun layanan Grafana dengan membuat akun layanan dan membuat token untuk digunakan akun tersebut:
- Di sidebar navigasi Grafana, klik Administration > Users and Access > Service Accounts.
Buat akun layanan dengan mengklik Tambahkan akun layanan, beri nama, dan berikan peran "Admin" di Grafana. Jika versi Grafana Anda mengizinkan izin yang lebih terperinci, Anda dapat menggunakan peran Sumber Data > Penulis.
Klik Tambahkan token akun layanan.
Tetapkan masa berlaku token ke "Tidak ada masa berlaku", lalu klik Buat token, lalu salin token yang dibuat ke papan klip untuk digunakan sebagai GRAFANA_SERVICE_ACCOUNT_TOKEN di langkah berikutnya.
Siapkan variabel lingkungan berikut menggunakan hasil langkah-langkah sebelumnya:
# These values are required. PROJECT_ID=SCOPING_PROJECT_ID # The value from Step 1. GRAFANA_API_ENDPOINT=GRAFANA_INSTANCE_URL # The value from step 2. This is a URL. DATASOURCE_UIDS=GRAFANA_DATASOURCE_UID # The value from step 3. This is not a URL. GRAFANA_API_TOKEN=GRAFANA_SERVICE_ACCOUNT_TOKEN # The value from step 4. GCM_ENDPOINT_OVERRIDE=--gcm-endpoint-override="https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Jalankan perintah berikut untuk membuat CronJob yang memuat ulang sumber data saat inisialisasi, lalu setiap 10 menit. Jika Anda menggunakan Workload Identity Federation untuk GKE, nilai NAMESPACE_NAME harus sama dengan namespace yang sebelumnya Anda ikat ke akun layanan.
curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.15.3/cmd/datasource-syncer/datasource-syncer.yaml \ | sed 's|$DATASOURCE_UIDS|'"$DATASOURCE_UIDS"'|; s|$GRAFANA_API_ENDPOINT|'"$GRAFANA_API_ENDPOINT"'|; s|$GRAFANA_API_TOKEN|'"$GRAFANA_API_TOKEN"'|; s|$PROJECT_ID|'"$PROJECT_ID"'|;' s|$GCM_ENDPOINT_OVERRIDE|'"$GCM_ENDPOINT_OVERRIDE"'|; \ | kubectl -n NAMESPACE_NAME apply -f -
Buka sumber data Grafana yang baru dikonfigurasi dan verifikasi bahwa nilai URL server Prometheus dimulai dengan
https://monitoring.apis-s3ns.fr
. Anda mungkin harus memuat ulang halaman. Setelah diverifikasi, buka bagian bawah halaman dan pilih Simpan & uji. Anda harus memilih tombol ini setidaknya sekali untuk memastikan pelengkapan otomatis label di Grafana berfungsi.
Memverifikasi kredensial akun layanan
Jika cluster Kubernetes Anda telah mengaktifkan Workload Identity Federation untuk GKE, Anda dapat melewati bagian ini.
Saat berjalan di GKE, Cloud Monitoring
secara otomatis mengambil kredensial dari lingkungan berdasarkan
akun layanan default Compute Engine. Akun layanan default memiliki izin yang diperlukan, monitoring.metricWriter
dan monitoring.viewer
, secara default. Jika Anda tidak menggunakan Workload Identity Federation untuk GKE, dan sebelumnya telah
menghapus salah satu peran tersebut dari akun layanan node default, Anda harus
menambahkan kembali izin yang hilang tersebut sebelum melanjutkan.
Mengonfigurasi akun layanan untuk Workload Identity Federation for GKE
Jika cluster Kubernetes Anda tidak mengaktifkan Workload Identity Federation untuk GKE, Anda dapat melewati bagian ini.
Cloud Monitoring merekam data metrik menggunakan Cloud Monitoring API. Jika cluster Anda menggunakan Workload Identity Federation for GKE, Anda harus memberikan izin akun layanan Kubernetes ke Monitoring API. Bagian ini menjelaskan hal berikut:
- Membuat akun layananTrusted Cloud by S3NS khusus,
SERVICE_ACCT_NAME
. - Mengikat Trusted Cloud akun layanan ke akun layanan
Kubernetes default di namespace pengujian,
NAMESPACE_NAME
. - Memberikan izin yang diperlukan ke akun layanan Trusted Cloud .
Buat dan ikat akun layanan
Langkah ini muncul di beberapa tempat dalam dokumentasi Cloud Monitoring. Jika Anda telah melakukan langkah ini sebagai bagian dari tugas sebelumnya, Anda tidak perlu mengulanginya. Lanjutkan ke Melakukan otorisasi akun layanan.
Urutan perintah berikut membuat akun layanan SERVICE_ACCT_NAME
dan mengikatnya ke akun layanan Kubernetes default di namespace
NAMESPACE_NAME
:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create SERVICE_ACCT_NAME \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ SERVICE_ACCT_NAME@PROJECT_ID. \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=SERVICE_ACCT_NAME@PROJECT_ID.
Jika Anda menggunakan namespace atau akun layanan GKE yang berbeda, sesuaikan perintah dengan tepat.
Memberikan otorisasi akun layanan
Grup izin terkait dikumpulkan ke dalam peran, dan Anda memberikan peran tersebut kepada akun utama, dalam contoh ini, akun layanan Trusted Cloud. Untuk mengetahui informasi selengkapnya tentang peran Monitoring, lihat Kontrol akses.
Perintah berikut memberikan peran Monitoring API yang diperlukan akun layanan Trusted Cloud ,SERVICE_ACCT_NAME
, untuk membaca data metrik.
Jika Anda telah memberikan peran tertentu kepada Trusted Cloud akun layanan sebagai bagian dari tugas sebelumnya, Anda tidak perlu melakukannya lagi.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT_NAME@PROJECT_ID. \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCT_NAME@PROJECT_ID. \ --role=roles/iam.serviceAccountTokenCreator
Men-debug konfigurasi Workload Identity Federation for GKE
Jika Anda mengalami masalah saat mengaktifkan Workload Identity Federation for GKE, lihat dokumentasi untuk memverifikasi penyiapan Workload Identity Federation for GKE dan panduan pemecahan masalah Workload Identity Federation for GKE.
Karena kesalahan ketik dan penyalinan-penempelan sebagian adalah sumber kesalahan paling umum saat mengonfigurasi Workload Identity Federation untuk GKE, kami sangat merekomendasikan penggunaan variabel yang dapat diedit dan ikon salin-tempel yang dapat diklik yang disematkan dalam contoh kode dalam petunjuk ini.
Workload Identity Federation for GKE di lingkungan produksi
Contoh yang dijelaskan dalam dokumen ini mengikat akun layanan Trusted Cloud ke akun layanan Kubernetes default dan memberikan semua izin yang diperlukan kepada akun layanan Trusted Clouduntuk menggunakan Monitoring API.
Dalam lingkungan produksi, Anda mungkin ingin menggunakan pendekatan yang lebih terperinci, dengan akun layanan untuk setiap komponen, yang masing-masing memiliki izin minimal. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi akun layanan untuk pengelolaan workload identity, lihat Menggunakan Workload Identity Federation untuk GKE.
Di tempat lainnya
Untuk men-deploy dan menjalankan penyinkron sumber data di lingkungan selain Google Kubernetes Engine, lakukan hal berikut:
Siapkan akun layanan yang akan digunakan oleh penyinkron sumber data:
Tetapkan project default untuk perintah
gcloud
:gcloud config set project PROJECT_ID
Buat akun layanan untuk digunakan oleh penyinkron sumber data:
gcloud iam service-accounts create DS_SYNCER_SVCACCT_NAME
Beri akun layanan izin untuk membaca data metrik:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:DS_SYNCER_SVCACCT_NAME@PROJECT_ID. \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:DS_SYNCER_SVCACCT_NAME@PROJECT_ID. \ --role=roles/iam.serviceAccountTokenCreator
Buat kunci untuk akun layanan:
gcloud iam service-accounts keys create DS_SYNCER_SVCACCT_KEYFILE_NAME.json \ --iam-account DS_SYNCER_SVCACCT_NAME@PROJECT_ID.
Jalur ke direktori ini digunakan untuk menyetel variabel lingkungan pada langkah berikutnya. Untuk mendapatkan jalur, jalankan perintah
pwd
dan catat nilainya:pwd DS_SYNCER_SVCACCT_KEYFILE_DIR
Tentukan URL instance Grafana Anda, misalnya
https://yourcompanyname.grafana.net
untuk deployment Grafana Cloud atauhttps://localhost:3000
untuk instance pengujian lokal. Nilai ini digunakan dalam perintah untuk menjalankan penyinkron sumber data.Jika Anda men-deploy Grafana secara lokal untuk cluster Kubernetes yang dikonfigurasi untuk mengamankan semua traffic dalam cluster menggunakan TLS, Anda harus menggunakan
https://
di URL dan, pada langkah berikutnya, melakukan autentikasi menggunakan salah satu opsi autentikasi TLS yang didukung.Di Grafana, tambahkan sumber data Prometheus untuk digunakan bagi Cloud Monitoring, dan catat UID sumber data:
Klik Koneksi > Sumber data > Tambahkan sumber data baru. Pilih Prometheus dari daftar database deret waktu.
Di kolom Prometheus server URL, masukkan nilai berikut:
https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/
Klik Simpan dan uji
URL di browser untuk halaman sumber data berisi UI sumber data, misalnya,
https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID.
Mencatat UID sumber data. Nilai ini digunakan dalam perintah untuk menjalankan penyinkron sumber data. Jangan menyalin seluruh URL sumber data. Salin hanya ID unik di URL, yang merupakan nilai seperti
ee0z3woqjah34e
:GRAFANA_DATASOURCE_UID
Siapkan akun layanan Grafana dengan membuat akun layanan dan membuat token untuk digunakan akun layanan:
- Di sidebar navigasi Grafana, klik Administration > Users and Access > Service Accounts.
Buat akun layanan dengan mengklik Tambahkan akun layanan, beri nama, dan berikan peran "Admin" di Grafana.
Klik Tambahkan token akun layanan.
Tetapkan masa berlaku token ke "Tidak ada masa berlaku", lalu klik Buat token, lalu salin token yang dibuat ke variabel yang dapat diedit berikut. Nilai ini digunakan dalam perintah untuk menjalankan penyinkron sumber data.
GRAFANA_SERVICE_ACCOUNT_TOKEN
Jalankan penyinkron sumber data. Anda dapat menjalankan sinkronisasi dari image container yang telah dibuat sebelumnya menggunakan Docker, atau Anda dapat mem-build kode dari sumber dan menjalankannya secara manual. Penyinkron sumber data adalah aplikasi Go, jadi Anda harus menginstal Go untuk membuat penyinkron dari sumber.
Docker
Jalankan penyinkron sumber data dari Docker menggunakan image container
gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0
. Untuk pengujian, Anda dapat menjalankan penyinkron secara manual. Setelah memverifikasi bahwa koneksi berfungsi, karena token akses memiliki masa aktif satu jam, Anda harus menggunakan mekanisme otomatis seperti tugas cron untuk menjalankan sinkronisasi sumber data setiap 10 menit guna memastikan koneksi Anda tidak terganggu.Gunakan perintah Docker berikut untuk menjalankan penyinkron data sumber:
docker run --network container:grafana -v "DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json:/app/DS_SYNCER_SVCACCT_KEYFILE_NAME.json" gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0 -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Untuk membuat tugas
cron
guna menjalankan sinkronisasi sumber data, lakukan hal berikut:Edit tabel cron:
cron -e
Tambahkan entri yang menjalankan perintah sebelumnya setiap 10 menit:
*/10 * * * * * docker run --network container:grafana -v "DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json:/app/<KEY_ID>" gke.gcr.io/prometheus-engine/datasource-syncer:v0.15.3-gke.0 -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Untuk mengetahui informasi selengkapnya tentang opsi command line yang tersedia saat menjalankan penyinkron data sumber, lihat dokumen README.
Kode sumber
Untuk membuat sinkronisasi sumber data sendiri, lakukan hal berikut:
Buat direktori untuk memuat kode, lalu ubah ke direktori tersebut:
mkdir data-source-syncer-code cd data-source-syncer-code
Jalur ke direktori ini digunakan untuk menyetel variabel lingkungan pada langkah berikutnya. Untuk mendapatkan jalur, jalankan perintah
pwd
dan catat di variabel yang dapat diedit:pwd PATH_TO_LOCAL_REPO_COPY
Clone kode dari rilis repositori saat ini:
git clone -b 'v0.15.3' --single-branch https://github.com/GoogleCloudPlatform/prometheus-engine
Buka direktori
datasource-syncer
dan bangun kode:cd prometheus-engine/cmd/datasource-syncer go build main.go
Jalankan penyinkron sumber data. Untuk pengujian, Anda dapat menjalankan sinkronisasi secara manual. Setelah memverifikasi bahwa koneksi berfungsi, karena token akses memiliki masa aktif satu jam, Anda harus menggunakan mekanisme otomatis seperti tugas
cron
untuk menjalankan sinkronisasi sumber data setiap 10 menit guna memastikan koneksi Anda tidak terganggu.Gunakan perintah berikut untuk menjalankan penyinkron data sumber secara manual:
main -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Untuk membuat tugas
cron
guna menjalankan sinkronisasi sumber data, lakukan hal berikut:Edit tabel cron:
cron -e
Tambahkan entri yang menjalankan perintah sebelumnya setiap 10 menit:
*/10 * * * * * main -datasource-uids=UID_OF_GRAFANA_DATASOURCE -grafana-api-token=GRAFANA_SERVICE_ACCOUNT_TOKEN -grafana-api-endpoint=URL_OF_GRAFANA_INSTANCE -project-id=PROJECT_ID -query.credentials-file=DS_SYNCER_SVCACCT_KEYFILE_DIR/DS_SYNCER_SVCACCT_KEYFILE_NAME.json -gcm-endpoint-override="https://monitoring.apis-s3ns.fr/v1/projects/PROJECT_ID/location/global/prometheus/"
Untuk mengetahui informasi selengkapnya tentang opsi command line yang tersedia saat menjalankan penyinkron data sumber, lihat dokumen README.
Buka sumber data Grafana yang baru dikonfigurasi dan pastikan nilai URL server Prometheus dimulai dengan
https://monitoring.apis-s3ns.fr
. Anda mungkin perlu memuat ulang halaman. Setelah diverifikasi, buka bagian bawah halaman, lalu klik Simpan & uji. Anda harus mengklik tombol ini setidaknya sekali untuk memastikan pelengkapan otomatis label di Grafana berfungsi.
Melihat metrik di Grafana
Untuk melihat metrik dari Trusted Cloud project Anda di Grafana, lakukan hal berikut:
Klik Jelajahi di panel navigasi atau di halaman Sumber Data.
Di kolom Metrik, gunakan menu drop-down untuk memilih metrik. Anda juga dapat memilih Metrics Explorer untuk menelusuri metrik tertentu. Jika metrik dikaitkan dengan lebih dari satu resource yang dipantau, Anda harus menambahkan filter label
monitored_resource
ke kueri dan memilih jenis resource.Tambahkan filter dan operasi label tambahan untuk membuat kueri.
Untuk mengetahui informasi tentang cara membuat visualisasi dan dasbor di Grafana, lihat Panel dan visualisasi.
Membuat kueri metrik Cloud Monitoring menggunakan PromQL
Metrik Cloud Monitoring dapat dikueri menggunakan spesifikasi UTF-8 untuk
PromQL. Nama metrik UTF-8 harus diapit tanda kutip dan dipindahkan ke dalam tanda kurung kurawal. Nama label juga harus diapit tanda petik jika berisi karakter yang tidak kompatibel dengan versi lama. Untuk metrik Cloud Monitoring
kubernetes.io/container/cpu/limit_utilization
, kueri berikut setara:
{"kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
{__name__="kubernetes.io/container/cpu/limit_utilization", pod_name="foo"}
.{"__name__"="kubernetes.io/container/cpu/limit_utilization", "pod_name"="foo"}
.
Metrik bernilai distribusi Cloud Monitoring dapat dikueri seperti histogram Prometheus, dengan akhiran _count
, _sum
, atau _bucket
ditambahkan ke nama metrik.
Diagram dan dasbor yang dibuat sebelum kueri kompatibilitas UTF-8 Cloud Monitoring menggunakan metrik dengan mengonversi namanya menjadi yang setara dan kompatibel dengan PromQL lama. Untuk mengetahui informasi selengkapnya tentang aturan konversi PromQL lama, lihat Memetakan metrik Cloud Monitoring ke PromQL lama.
Mempelajari PromQL
Untuk mempelajari dasar-dasar penggunaan PromQL, sebaiknya lihat dokumentasi open source. Referensi berikut dapat membantu Anda memulai:
Menentukan jenis resource yang dimonitor
Jika metrik Cloud Monitoring hanya dikaitkan dengan satu jenis resource yang dipantau Cloud Monitoring, kueri PromQL akan berfungsi tanpa perlu menentukan jenis resource secara manual. Namun, beberapa metrik dalam Cloud Monitoring, termasuk beberapa metrik sistem, dipetakan ke lebih dari satu jenis resource.Anda dapat melihat jenis resource yang dimonitor yang dipetakan ke metrik dengan melihat daftar metrikTrusted Cloud by S3NS . Setiap entri dalam dokumentasi mencantumkan jenis resource yang dimonitor terkait di kolom pertama setiap entri di bawah jenis. Jika tidak ada jenis resource yang dimonitor yang tercantum, metrik dapat dikaitkan dengan jenis apa pun.
Jika metrik dikaitkan dengan lebih dari satu jenis resource, Anda harus
menentukan jenis resource dalam kueri PromQL. Ada label khusus,
monitored_resource
, yang dapat Anda gunakan untuk memilih jenis resource.
Jenis resource yang dipantau sebagian besar berupa string pendek,
seperti gce_instance
, tetapi terkadang muncul sebagai URI lengkap, seperti
monitoring.googleapis.com/MetricIngestionAttribution
. Kueri PromQL yang disusun dengan benar mungkin terlihat seperti berikut:
logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}
Jika Anda tidak menggunakan label monitored_resource
saat diperlukan, Anda akan menerima error berikut:
metric is configured to be used with more than one monitored resource type;
series selector must specify a label matcher on monitored resource name
Menyelesaikan konflik label
Di Cloud Monitoring, label dapat termasuk dalam metrik atau resource.
Jika label metrik memiliki nama kunci yang sama dengan label resource, Anda dapat merujuk ke
label metrik secara khusus dengan menambahkan awalan metric_
ke nama
kunci label dalam kueri Anda.
Misalnya, anggaplah Anda memiliki label resource dan label metrik yang keduanya bernama pod_name
dalam metrik example.googleapis.com/user/widget_count
.
Untuk memfilter nilai label resource, gunakan
example_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}
Untuk memfilter nilai label metrik, gunakan
example_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}
Memetakan nama metrik Cloud Monitoring ke PromQL lama
Nama metrik Cloud Monitoring mencakup dua komponen, yaitu domain (seperti
compute.googleapis.com/
) dan jalur (seperti
instance/disk/max_read_ops_count
). Karena PromQL lama hanya mendukung karakter khusus
:
dan _
, Anda harus menerapkan aturan berikut agar nama metrik Monitoring kompatibel dengan PromQL lama:
- Ganti
/
pertama dengan:
. - Ganti semua karakter khusus lainnya (termasuk
.
dan karakter/
lainnya) dengan_
.
Tabel berikut mencantumkan beberapa nama metrik dan PromQL lama yang setara:
Nama metrik Cloud Monitoring | Nama metrik PromQL lama |
---|---|
compute.googleapis.com/instance/cpu/utilization |
compute_googleapis_com:instance_cpu_utilization |
logging.googleapis.com/log_entry_count |
logging_googleapis_com:log_entry_count |
Metrik bernilai distribusi Cloud Monitoring dapat dikueri seperti histogram Prometheus, dengan akhiran _count
, _sum
, atau _bucket
ditambahkan ke nama metrik:
Nama metrik Cloud Monitoring | Nama metrik PromQL lama |
---|---|
networking.googleapis.com/vm_flow/rtt |
networking_googleapis_com:vm_flow_rtt_sum networking_googleapis_com:vm_flow_rtt_count networking_googleapis_com:vm_flow_rtt_bucket
|
Kompatibilitas PromQL
PromQL untuk Cloud Monitoring mungkin berfungsi sedikit berbeda dengan PromQL upstream.
Kueri PromQL di Cloud Monitoring dievaluasi sebagian di backend Monarch menggunakan bahasa kueri internal, dan ada beberapa perbedaan yang diketahui dalam hasil kueri. Selain perbedaan yang tercantum di bagian ini, PromQL di Cloud Monitoring 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.
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 Cloud Monitoring, meskipun fungsi ini berfungsi di Prometheus upstream.