Menggunakan metrik PromQL untuk Cloud Monitoring

Anda dapat menggunakan Prometheus Query Language (PromQL) untuk membuat kueri semua metrik di Cloud Monitoring, termasuk metrik sistem Google Cloud, metrik Kubernetes, metrik kustom, dan metrik berbasis log.

Memetakan nama metrik Cloud Monitoring ke PromQL

Nama metrik Cloud Monitoring mencakup dua komponen, domain (seperti compute.googleapis.com/) dan jalur (seperti instance/disk/max_read_ops_count). Karena PromQL hanya mendukung karakter khusus : dan _, Anda harus membuat nama metrik Monitoring kompatibel dengan PromQL terlebih dahulu. Untuk memetakan nama metrik Monitoring ke PromQL, terapkan aturan berikut:

  • Ganti / pertama dengan :.
  • Ganti semua karakter khusus lainnya (termasuk . dan karakter / lainnya) dengan _.

Tabel di bawah mencantumkan beberapa nama metrik dan padanan PromQL-nya:

Nama metrik Cloud Monitoring Nama metrik PromQL
kubernetes.io/container/cpu/limit_cores kubernetes_io:container_cpu_limit_cores
compute.googleapis.com/instance/cpu/utilization compute_googleapis_com:instance_cpu_utilization
logging.googleapis.com/log_entry_count logging_googleapis_com:log_entry_count
custom.googleapis.com/opencensus/opencensus.io/
http/server/request_count_by_method
custom_googleapis_com:opencensus_opencensus_io_
http_server_request_count_by_method
agent.googleapis.com/disk/io_time agent_googleapis_com:disk_io_time

Metrik distribusi Cloud Monitoring dapat dikueri seperti histogram Prometheus, dengan akhiran _count, _sum, atau _bucket yang ditambahkan ke nama metrik:

Nama metrik Cloud Monitoring Nama metrik PromQL
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

Menentukan jenis resource yang dipantau

Jika metrik hanya dikaitkan dengan satu jenis resource yang dipantau Cloud Monitoring, kueri PromQL akan berfungsi tanpa menentukan jenis resource secara manual. Namun, beberapa metrik dalam Cloud Monitoring, termasuk beberapa metrik sistem dan banyak metrik yang dihasilkan oleh metrik berbasis log, dipetakan ke lebih dari satu jenis resource.

Anda dapat melihat jenis resource yang dimonitor yang dipetakan ke metrik dengan melakukan salah satu tindakan berikut:

  • Untuk metrik yang diseleksi Google, Anda dapat melihat daftar metrik yang tersedia, termasuk metrik Google Cloud dan metrik Kubernetes. Setiap entri dalam dokumentasi mencantumkan jenis resource yang dipantau terkait di kolom pertama pada setiap entri di bawah jenis. Jika tidak ada jenis resource yang dimonitor, metrik dapat dikaitkan dengan jenis apa pun.
  • Anda dapat membuka tab Configuration di Metrics Explorer Cloud Monitoring dan mengetik nama metrik Anda. Daftar jenis resource yang valid akan muncul, misalnya, "VM Instance". Jika memilih metrik dan membuka tab MQL, Anda akan melihat jenis resource pemantauan yang mendasarinya di kolom fetch, misalnya gce_instance. Tab MQL berguna untuk metrik yang dapat dikaitkan dengan berbagai jenis resource yang dimonitor, misalnya metrik berbasis log, metrik kustom, atau metrik yang ditentukan pengguna.

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 dimonitor pada umumnya berupa string pendek, seperti gce_instance, namun terkadang muncul sebagai URI lengkap, seperti monitoring.googleapis.com/MetricIngestionAttribution. Kueri PromQL yang tersusun dengan baik mungkin terlihat seperti berikut ini:

  • logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
  • custom_googleapis_com:opencensus_opencensus_io_http_server_request_count_by_method{monitored_resource="global"}
  • loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}

Nilai "" untuk label monitored_resource bersifat khusus dan mengacu pada jenis resource prometheus_target default yang digunakan untuk metrik Layanan Terkelola untuk Prometheus.

Jika 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

Menggunakan label metadata

Anda dapat menggunakan label metadata di PromQL seperti label lainnya. Namun, seperti nama metrik, label metadata juga harus dibuat agar kompatibel dengan PromQL. Sintaksis untuk merujuk ke label sistem metadata version adalah metadata_system_version, dan sintaksis untuk label pengguna metadata version adalah metadata_user_version. Kueri PromQL yang diformat dengan baik menggunakan label metadata mungkin akan terlihat seperti berikut:

  • compute_googleapis_com:instance_cpu_utilization{monitored_resource="gce_instance",metadata_user_env="prod"}
  • sum(compute_googleapis_com:instance_cpu_utilization) by (metadata_system_region)

Satu-satunya karakter khusus yang dapat Anda gunakan di kunci label metadata adalah karakter _. Agregasi menggunakan label metadata dengan jenis MULTI_STRING atau KEY_VALUE tidak didukung.

Menyelesaikan konflik label

Di Cloud Monitoring, label dapat dimasukkan ke 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.

Sebagai contoh, misalnya Anda memiliki label resource dan label metrik bernama pod_name di metrik logging.googleapis.com/user/widget_count.

  • Untuk memfilter nilai label resource, gunakan
    logging_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • Untuk memfilter nilai label metrik, gunakan
    logging_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}

Topik tambahan

Aturan dan pemberitahuan

Anda dapat menggunakan metrik Cloud Monitoring dalam aturan perekaman dan pemberitahuan di Managed Service for Prometheus. Untuk mengetahui petunjuknya, lihat Evaluasi dan pemberitahuan aturan terkelola atau Evaluasi dan pemberitahuan aturan yang di-deploy sendiri.

Mempelajari PromQL

Untuk mempelajari dasar-dasar penggunaan PromQL, sebaiknya baca dokumentasi open source. Beberapa link yang bermanfaat mungkin adalah:

Perbedaan PromQL

PromQL untuk Layanan Terkelola untuk Prometheus mungkin berfungsi sedikit berbeda dari PromQL upstream. Untuk daftar perbedaan ini, lihat Perbedaan PromQL.