Mengumpulkan dan melihat metrik kube state


Halaman ini menjelaskan cara mengonfigurasi cluster Google Kubernetes Engine (GKE) untuk mengirimkan serangkaian status kube yang telah dikurasi, termasuk metrik untuk Pod dan Deployment, Cloud Monitoring menggunakan Google Cloud Managed Service for Prometheus. Halaman ini juga menjelaskan cara metrik ini diformat saat ditulis ke Monitoring, dan cara membuat kueri metrik.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Persyaratan

Untuk mengumpulkan metrik status kube, cluster GKE Anda harus memenuhi persyaratan berikut:

  • Cluster harus menjalankan versi berikut berdasarkan metrik yang ingin Anda aktifkan:
    • Untuk mengaktifkan paket metrik JobSet, cluster Anda harus menjalankan 1.32.1-gke.1357001 atau yang lebih baru. Mulai dari versi 1.32.1-gke.1357001, paket metrik JobSet diaktifkan secara default di cluster GKE Standard dan Autopilot yang baru dibuat.
    • Metrik kube_jobset_restarts tersedia di cluster 1.32 mulai dari 1.32.4-gke.1767000 dan di cluster 1.33 mulai dari 1.33.0-gke.1868000.
    • Untuk mengaktifkan paket metrik lain yang dijelaskan di halaman ini, cluster Anda harus menjalankan GKE 1.27.2-gke.1200 atau yang lebih baru. Mulai dari versi 1.29.2-gke.2000 untuk cluster GKE Standard dan versi 1.27.4-gke.900 untuk cluster GKE Autopilot, paket metrik status Kube diaktifkan secara default.
  • Cluster harus mengaktifkan metrik sistem.
  • Cluster harus mengaktifkan koleksi terkelola Google Cloud Managed Service for Prometheus. Koleksi terkelola Google Cloud Managed Service for Prometheus diaktifkan secara default untuk cluster baru.

Mengonfigurasi pengumpulan metrik kube state

Anda dapat mengaktifkan metrik status kube menggunakan konsol Google Cloud , gcloud CLI, atau Terraform:

Konsol

Anda dapat mengaktifkan metrik status kube dari tab Observability untuk cluster atau Deployment dalam cluster. Anda juga dapat melihat pratinjau diagram dan metrik yang tersedia sebelum mengaktifkan paket metrik.

Di tab Observability untuk cluster, Anda dapat memfilter kumpulan diagram untuk metrik status kube berdasarkan dua item berikut:

  • Status Workload: mencakup metrik untuk resource Pod, Deployment, StatefulSet, DaemonSet, dan HorizontalPodAutoscaler.
  • Penyimpanan > Persisten: mencakup metrik untuk Volume Persisten dan Klaim Volume Persisten.

Anda dapat mengaktifkan salah satu atau kedua set metrik.

Untuk mengaktifkan metrik status kube dari tab Observability untuk cluster, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Kubernetes clusters:

    Buka Kubernetes clusters

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Kubernetes Engine.

  2. Klik nama cluster Anda, lalu pilih tab Observability.

  3. Pilih Workloads State atau Storage > Persistent dari daftar fitur.

  4. Klik Aktifkan paket.

    Jika paket metrik kube state sudah diaktifkan, Anda akan melihat serangkaian diagram untuk metrik kube state.

Untuk mengaktifkan metrik status kube dari tab Observability untuk Deployment, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Workloads:

    Buka Workloads

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Kubernetes Engine.

  2. Klik nama Deployment Anda, lalu pilih tab Observability.

  3. Pilih Kube State dari daftar fitur.

  4. Klik Aktifkan paket. Paket diaktifkan untuk seluruh cluster.

    Jika paket metrik status kube sudah diaktifkan, Anda akan melihat serangkaian diagram untuk metrik dari Pod, Deployment, dan Horizontal Pod Autoscaler.

Untuk mengonfigurasi metrik status kube dari tab Detail untuk cluster, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Kubernetes clusters:

    Buka Kubernetes clusters

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Kubernetes Engine.

  2. Klik nama cluster Anda.

  3. Di baris Features berlabel Cloud Monitoring, klik ikon Edit.

  4. Pada dialog Edit Cloud Monitoring yang muncul, konfirmasi bahwa Aktifkan Cloud Monitoring dipilih.

  5. Di menu drop-down Components, pilih komponen status kube yang metriknya ingin Anda kumpulkan.

  6. Klik Oke.

  7. Klik Simpan Perubahan.

gcloud

Update cluster Anda untuk mengumpulkan metrik:

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --enable-managed-prometheus \
    --monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE

Ganti kode berikut:

Kumpulan nilai yang diberikan ke tanda monitoring akan menggantikan setelan sebelumnya.

Terraform

Untuk mengonfigurasi pengumpulan metrik status kube menggunakan Terraform, lihat blok monitoring_config di registry Terraform untuk google_container_cluster. Untuk informasi umum tentang penggunaan Google Cloud dengan Terraform, lihat Terraform dengan Google Cloud.

Kuota

Metrik status Kube menggunakan kuota Permintaan penyerapan deret waktu per menit dari Cloud Monitoring API. Sebelum mengaktifkan metrik status kube, periksa penggunaan puncak terbaru kuota tersebut. Jika memiliki banyak cluster dalam project yang sama atau sudah mendekati batas kuota tersebut, Anda dapat meminta penambahan batas kuota sebelum mengaktifkan salah satu paket kemampuan pengamatan.

Harga

Metrik status Kube menggunakan Google Cloud Managed Service for Prometheus untuk memuat metrik ke Cloud Monitoring. Biaya Cloud Monitoring untuk penyerapan metrik ini didasarkan pada jumlah sampel yang diserap. Namun, metrik ini tidak dikenai biaya untuk cluster terdaftar yang termasuk dalam project yang mengaktifkan edisi GKE Enterprise.

Untuk mengetahui informasi selengkapnya, lihat harga Cloud Monitoring.

Format metrik

Semua metrik status kube Kubernetes yang ditulis ke Cloud Monitoring menggunakan jenis resource prometheus_target. Setiap nama metrik diawali dengan prometheus.googleapis.com/ dan memiliki akhiran yang menunjukkan jenis metrik Prometheus, seperti /gauge, /histogram, atau /counter. Jika tidak, setiap nama metrik akan sama dengan nama metrik yang diekspos oleh Kubernetes open source.

Mengekspor dari Cloud Monitoring

Metrik status kube dapat diekspor dari Cloud Monitoring dengan menggunakan Cloud Monitoring API. Karena semua metrik status kube diserap menggunakan Google Cloud Managed Service for Prometheus, metrik status kube dapat dikueri menggunakan Prometheus Query Language (PromQL). Metrik ini juga dapat dikueri dengan menggunakan Monitoring Query Language (MQL).

Membuat kueri metrik

Saat Anda membuat kueri metrik status kube, nama yang Anda gunakan bergantung pada apakah Anda menggunakan PromQL atau fitur berbasis Cloud Monitoring seperti MQL atau Metrics Explorer antarmuka berbasis menu.

Tabel metrik status kube berikut menunjukkan dua versi dari setiap nama metrik:

  • Nama metrik PromQL: Saat menggunakan PromQL di halaman Cloud Monitoring di konsol Google Cloud atau di kolom PromQL pada Cloud Monitoring API, gunakan nama metrik PromQL.
  • Nama metrik Cloud Monitoring Saat menggunakan fitur Cloud Monitoring lainnya, gunakan nama metrik Cloud Monitoring dalam tabel di bawah. Nama ini harus diawali dengan prometheus.googleapis.com/, yang telah dihilangkan dari entri dalam tabel.

Metrik penyimpanan

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Kapasitas persistentvolume dalam byte. Dibuat sampelnya setiap 30 detik.

persistentvolume: persistentvolume.
kube_persistentvolume_claim_ref
kube_persistentvolume_claim_ref/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informasi tentang Referensi Klaim Volume Persisten. Dibuat sampelnya setiap 30 detik.

claim_name: claim_name.
name: nama.
persistentvolume: persistentvolume.
kube_persistentvolume_info
kube_persistentvolume_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informasi tentang persistentvolume. Dibuat sampelnya setiap 30 detik.

csi_driver: csi_driver.
csi_volume_handle: csi_volume_handle.
local_fs: local_fs.
local_path: local_path.
persistentvolume: persistentvolume.
storageclass: storageclass.
kube_persistentvolume_status_phase
kube_persistentvolume_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Fase menunjukkan apakah volume tersedia, terikat ke klaim, atau dilepaskan oleh klaim. Dibuat sampelnya setiap 30 detik.

persistentvolume: persistentvolume.
phase: phase.
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informasi tentang klaim volume persisten. Dibuat sampelnya setiap 30 detik.

persistentvolumeclaim: persistentvolumeclaim.
storageclass: storageclass.
volumename: volumename.
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Kapasitas penyimpanan yang diminta oleh klaim volume persisten. Dibuat sampelnya setiap 30 detik.

persistentvolumeclaim: persistentvolumeclaim.
kube_persistentvolumeclaim_status_phase
kube_persistentvolumeclaim_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Fase klaim volume persisten saat ini. Dibuat sampelnya setiap 30 detik.

persistentvolumeclaim: persistentvolumeclaim.
phase: phase.

Untuk mengetahui informasi selengkapnya, lihat Metrik PersistentVolume dan Metrik PersistentVolumeClaim.

Metrik pod

Pod adalah grup yang terdiri dari satu atau beberapa container dengan spesifikasi tentang cara menjalankan container, yang berbagi resource penyimpanan dan jaringan.

Tabel metrik Pod

Metrik Pod memungkinkan Anda memantau dan membuat pemberitahuan tentang perilaku Pod. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube.

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_pod_container_status_ready
kube_pod_container_status_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Menjelaskan apakah pemeriksaan kesiapan container berhasil. Dibuat sampelnya setiap 30 detik.

container: container.
pod: pod.
uid: uid.
kube_pod_container_status_waiting_reason
kube_pod_status_container_status_waiting_reason/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Menjelaskan alasan penampung saat ini dalam status menunggu. Dibuat sampelnya setiap 30 detik.

container: container.
pod: pod.
reason: alasan.
uid: uid.
kube_pod_status_phase
kube_pod_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Fase pod saat ini. Dibuat sampelnya setiap 30 detik.

phase: fase.
pod: pod.
uid: uid.
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Menjelaskan status tidak dapat dijadwalkan untuk pod. Dibuat sampelnya setiap 30 detik.

pod: pod.
uid: uid.

Untuk mengetahui informasi selengkapnya, lihat Metrik Pod.

Contoh kueri untuk metrik Pod

Untuk menentukan apakah Anda memiliki Pod yang tidak dapat dijadwalkan, gunakan ekspresi PromQL berikut:

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})

Untuk memberikan pemberitahuan tentang jumlah pod yang tidak dapat dijadwalkan dalam namespace, Anda dapat menggunakan ekspresi PromQL berikut:

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT

Anda dapat menggunakan metrik kube_pod_container_status_waiting_reason untuk membuat pemberitahuan bagi penampung yang macet dalam status menunggu tertentu dengan menggunakan ekspresi PromQL seperti berikut:

max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

Nilai REASON menentukan status menunggu container, misalnya:

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

Untuk membuat pemberitahuan bagi container yang macet di salah satu status menunggu, gunakan ekspresi PromQL berikut:

max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

Untuk menentukan jumlah container yang gagal dalam pemeriksaan kesiapan, gunakan ekspresi PromQL berikut

sum(kube_pod_container_status_ready) by (pod, container) == 0

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.

Playbook interaktif

Metrik status Kube juga digunakan dalam playbook interaktif GKE untuk memecahkan masalah Pod yang tidak dapat dijadwalkan atau mengalami crashloop. Untuk mengetahui informasi selengkapnya tentang mode kegagalan ini, lihat dokumen pemecahan masalah berikut:

Tanpa paket metrik status kube yang diaktifkan, cara utama untuk mendeteksi masalah penjadwalan pod adalah dengan membuat kueri peristiwa log "Failed Scheduling". Setelah mengaktifkan paket metrik status kube, Anda dapat menggunakan metrik kube_pod_status_unschedulable, yang memiliki tujuan yang sama, tetapi lebih mudah digabungkan dan diplot. Dengan menggunakan metrik ini, Anda dapat melihat jumlah Pod yang tidak dapat dijadwalkan dan kapan masalah dimulai.

Demikian pula, metrik sistem GKE kubernetes.io/container/restart_count dapat membantu Anda mendeteksi Pod yang mengalami crashloop. Metrik kube_pod_container_status_waiting_reason juga mencantumkan Pod yang mengalami loop error, dan memungkinkan Anda menentukan apakah Pod mengalami masalah dalam status menunggu selain CrashLookBackOff, seperti ImagePullBackOff dan ContainerCreating.

Untuk menjelajahi playbook interaktif, lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman  Dasbor:

    Buka Dasbor

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Filter daftar dasbor dengan mengklik kategori G​C​P.
  3. Klik nama dasbor "GKE Interactive Playbook" dalam daftar.

Metrik deployment

Deployment adalah pengontrol yang mengupdate status resource seperti Pod, untuk mengelola peristiwa seperti peluncuran dan penonaktifan.

Tabel metrik Deployment

Metrik Deployment memungkinkan Anda memantau dan membuat pemberitahuan tentang perilaku pengontrol. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube:

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_deployment_spec_replicas
kube_deployment_spec_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah pod yang diinginkan untuk deployment. Dibuat sampelnya setiap 30 detik.

deployment: deployment.
kube_deployment_status_replicas_available
kube_deployment_status_replicas_available/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika yang tersedia per deployment. Dibuat sampelnya setiap 30 detik.

deployment: deployment.
kube_deployment_status_replicas_updated
kube_deployment_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika yang diupdate per deployment. Dibuat sampelnya setiap 30 detik.

deployment: deployment.

Untuk mengetahui informasi selengkapnya, lihat Metrik Deployment.

Contoh kueri untuk metrik Deployment

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap Deployment dengan memfilter metrik Deployment menurut cluster, namespace, dan nama Deployment.

Misalnya, untuk membandingkan jumlah replika yang tersedia dengan jumlah replika yang diharapkan dalam satu Deployment, Anda dapat menggunakan kueri PromQL berikut untuk memetakan kedua metrik dalam satu diagram:

kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
dan
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}

Untuk memberikan pemberitahuan tentang Deployment yang gagal atau terhenti, Anda dapat menggunakan ekspresi PromQL berikut:

(
  kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
    >
  kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
) and (
  changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m])
    ==
  0
)

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.

Metrik StatefulSet

StatefulSet adalah pengontrol yang mengelola deployment dan penskalaan kumpulan Pod untuk aplikasi stateful. Pengontrol ini mengelola pengurutan dan keunikan Pod.

Tabel metrik StatefulSet

Metrik StatefulSet memungkinkan Anda memantau dan menerima pemberitahuan tentang perilaku pengontrol. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube:

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_statefulset_replicas
kube_statefulset_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah pod yang diinginkan untuk StatefulSet. Dibuat sampelnya setiap 30 detik.

statefulset: statefulset.
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika yang siap per StatefulSet. Dibuat sampelnya setiap 30 detik.

statefulset: statefulset.
kube_statefulset_status_replicas_updated
kube_statefulset_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika yang diupdate per StatefulSet. Dibuat sampelnya setiap 30 detik.

statefulset: statefulset.

Untuk mengetahui informasi selengkapnya, lihat Metrik StatefulSet.

Contoh kueri untuk metrik StatefulSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap StatefulSet dengan memfilter metrik StatefulSet menurut cluster, namespace, dan nama StatefulSet.

Misalnya, untuk membandingkan jumlah replika yang tersedia dengan jumlah replika yang diharapkan dalam satu StatefulSet, Anda dapat menggunakan kueri PromQL berikut untuk memetakan kedua metrik pada satu diagram:

kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
dan
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}

Untuk memberikan pemberitahuan tentang peluncuran StatefulSet yang gagal atau terhenti, Anda dapat menggunakan ekspresi PromQL berikut:

(
  kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
    >
  kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
) and (
  changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m])
    ==
  0
)

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.

Metrik DaemonSet

DaemonSet adalah pengontrol yang memastikan bahwa beberapa set Node menjalankan salinan Pod. Misalnya, saat Node ditambahkan ke cluster, DaemonSet akan menambahkan Pod ke Node. Pengontrol ini berguna untuk memastikan proses tertentu berjalan di setiap node.

Tabel metrik DaemonSet

Metrik DaemonSet memungkinkan Anda memantau dan membuat pemberitahuan tentang perilaku pengontrol. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube:

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_daemonset_status_desired_number_scheduled
kube_daemonset_status_desired_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah node yang harus menjalankan pod daemon. Dibuat sampelnya setiap 30 detik.

daemonset: daemonset.
kube_daemonset_status_number_misscheduled
kube_daemonset_status_number_misscheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah node yang menjalankan pod daemon, tetapi seharusnya tidak. Dibuat sampelnya setiap 30 detik.

daemonset: daemonset.
kube_daemonset_status_number_ready
kube_daemonset_status_number_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah node yang harus menjalankan pod daemon dan memiliki satu atau beberapa pod daemon yang berjalan dan siap. Dibuat sampelnya setiap 30 detik.

daemonset: daemonset.
kube_daemonset_status_updated_number_scheduled
kube_daemonset_status_updated_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah node yang menjalankan pod daemon yang diupdate. Dibuat sampelnya setiap 30 detik.

daemonset: daemonset.

Untuk mengetahui informasi selengkapnya, lihat Metrik DaemonSet.

Contoh kueri untuk metrik DaemonSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap DaemonSet dengan memfilter metrik daemonset menurut cluster, namespace, dan nama DaemonSet.

Misalnya, untuk membandingkan jumlah replika yang tersedia dengan jumlah replika yang diharapkan dalam satu DaemonSet, Anda dapat menggunakan kueri PromQL berikut untuk memetakan kedua metrik dalam satu diagram:

kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
dan
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}

Untuk memberikan pemberitahuan tentang peluncuran DaemonSet yang gagal atau terhenti, Anda dapat menggunakan ekspresi PromQL berikut:

(
  (
    kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    0
  ) or (
    kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
  )
) and (
  changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m])
    ==
  0
)

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.

Metrik HorizontalPodAutoscaler

HorizontalPodAutoscaler (HPA) adalah pengontrol yang secara berkala mengubah jumlah pod dalam workload, seperti Deployment atau StatefulSet, sebagai respons terhadap beberapa metrik seperti pemakaian CPU atau memori. Mengubah jumlah pod yang tersedia untuk workload membuat workload tetap responsif, tetapi efisien.

Untuk mengetahui informasi selengkapnya tentang HPA, lihat Melihat detail tentang Horizontal Pod Autoscaler.

Tabel metrik HPA

Metrik HorizontalPodAutoscaler memungkinkan Anda memantau dan membuat pemberitahuan tentang perilaku pengontrol. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube:

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_horizontalpodautoscaler_spec_max_replicas
kube_horizontalpodautoscaler_spec_max_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Batas atas untuk jumlah pod yang dapat ditetapkan oleh autoscaler, tidak boleh lebih kecil dari MinReplicas. Dibuat sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_min_replicas
kube_horizontalpodautoscaler_spec_min_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Batas bawah untuk jumlah pod yang dapat ditetapkan oleh penskala otomatis, default 1. Dibuat sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_target_metric
kube_horizontalpodautoscaler_spec_target_metric/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Spesifikasi metrik yang digunakan oleh autoscaler ini saat menghitung jumlah replika yang diinginkan. Dibuat sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.
metric_name: metric_name.
metric_target_type: metric_target_type.
kube_horizontalpodautoscaler_status_condition
kube_horizontalpodautoscaler_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Kondisi autoscaler ini. Dibuat sampelnya setiap 30 detik.

condition: kondisi.
horizontalpodautoscaler: horizontalpodautoscaler.
namespace: namespace.
status: status.
kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_status_current_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika pod saat ini yang dikelola oleh autoscaler ini. Dibuat sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_status_desired_replicas
kube_horizontalpodautoscaler_status_desired_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika pod yang diinginkan yang dikelola oleh autoscaler ini. Dibuat sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.

Untuk mengetahui informasi selengkapnya, lihat Metrik Penskalaan Otomatis Pod Horizontal.

Contoh kueri untuk metrik HPA

Misalnya, untuk menentukan apakah HPA mendekati jumlah maksimum replika, Anda dapat memetakan rasio berikut:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

Saat HPA berjalan dengan jumlah replika maksimum, Anda mungkin ingin meningkatkan spesifikasi untuk jumlah maksimum pod. Anda dapat menggunakan ekspresi PromQL berikut untuk membuat pemberitahuan yang akan memberi tahu Anda tentang kasus ini:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
  ==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

Anda juga dapat membandingkan nilai metrik kube_horizontalpodautoscaler_status_current_replicas dan kube_horizontalpodautoscaler_status_desired_replicas untuk menentukan apakah ada perbedaan antara jumlah replika saat ini dan yang diperlukan. Perbedaan mungkin menunjukkan batasan resource di cluster. Ekspresi PromQL berikut mencari perbedaan antara jumlah replika saat ini dan jumlah replika yang diperlukan, minimum, dan maksimum, serta perubahan pada jumlah replika saat ini:

(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  !=
kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  >
kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  <
kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0

Label condition dan status pada metrik kube_horizontalpodautoscaler_status_condition juga dapat membantu Anda mendeteksi saat HPA mengalami berbagai mode kegagalan. Contoh:

  • Kondisi ScalingLimited dan status true menunjukkan bahwa HPA terikat oleh jumlah replika minimum atau maksimumnya:
    kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
  • Kondisi AbleToScale dan status false menunjukkan bahwa HPA mengalami masalah saat mengambil atau memperbarui skala:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1

  • Kondisi ScalingActive dan status false menunjukkan bahwa HPA dinonaktifkan atau tidak dapat menghitung skala baru:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.

Metrik JobSet

Jobset adalah API beban kerja yang memungkinkan Anda mengelola sekelompok Tugas Kubernetes sebagai satu unit. Kasus penggunaan yang paling umum untuk JobSet adalah pelatihan terdistribusi, tetapi Anda juga dapat menggunakannya untuk menjalankan workload batch.

Untuk mengetahui informasi selengkapnya tentang JobSet, lihat Dokumentasi JobSet.

Tabel metrik JobSet

Metrik JobSet memungkinkan Anda memantau dan membuat pemberitahuan tentang perilaku JobSet. Tabel berikut menunjukkan metrik yang tersedia dalam paket metrik status kube:

Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan prometheus.googleapis.com/. Awalan tersebut telah dihilangkan dari entri dalam tabel.

Nama metrik PromQL
Nama metrik Cloud Monitoring
Jenis, Tipe, Unit
Resource yang dimonitor
Versi GKE yang diperlukan
Deskripsi
Label
kube_jobset_specified_replicas
kube_jobset_specified_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika yang ditentukan per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_ready_replicas
kube_jobset_ready_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika dalam status 'SIAP' per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_succeeded_replicas
kube_jobset_succeeded_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika dalam status 'BERHASIL' per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_failed_replicas
kube_jobset_failed_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika dalam status 'GAGAL' per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_active_replicas
kube_jobset_active_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika dalam status 'AKTIF' per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_suspended_replicas
kube_jobset_suspended_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Jumlah replika dalam status 'DITANGGUHKAN' per Tugas yang direplikasi dalam JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
replicated_job_name: replicated_job_name.
kube_jobset_status_condition
kube_jobset_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.32.1-gke.1357001
Kondisi status saat ini dari JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.
condition: kondisi.
kube_jobset_restarts
kube_jobset_restarts/gauge
GAUGEDOUBLE1
prometheus_target
1.32.4-gke.1767000
1.33.0-gke.1868000
Jumlah mulai ulang JobSet. Dibuat sampelnya setiap 30 detik.

jobset_name: jobset_name.

Contoh kueri untuk metrik JobSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap JobSet dengan memfilter metrik JobSet menurut cluster, namespace, dan nama JobSet.

Misalnya, untuk membandingkan jumlah replika dalam status READY dengan jumlah replika yang diharapkan dalam satu JobSet, petakan kedua metrik pada satu diagram menggunakan kueri PromQL berikut:

kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
dan
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}

Untuk memberikan pemberitahuan tentang peluncuran JobSet yang gagal atau tidak tersedia, Anda dapat menggunakan ekspresi PromQL berikut:

kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
  >
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}

Label condition pada metrik kube_jobset_status_condition juga dapat membantu Anda mendeteksi saat JobSet mengalami berbagai mode kegagalan, misalnya:

  • Kondisi Failed menunjukkan bahwa JobSet gagal dieksekusi:
    kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1
  • Kondisi Suspended menunjukkan bahwa JobSet ditangguhkan:
    kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Suspended"} == 1

Beberapa ekspresi kueri dan pemberitahuan di bagian ini diadaptasi dari file kubernetes-apps.yaml di repositori Prometheus community Kubernetes Helm Charts di GitHub.