Menggunakan metrik kube state


Anda dapat mengonfigurasi cluster Google Kubernetes Engine (GKE) untuk mengirim sekumpulan metrik status kube pilihan, termasuk metrik untuk Pod, Deployment, dan lainnya. ke Cloud Monitoring menggunakan Google Cloud Managed Service for Prometheus. Dokumen ini menjelaskan cara metrik ini diformat saat ditulis ke Cloud Monitoring dan cara membuat kuerinya. Dokumen ini juga menyediakan tabel yang mencantumkan metrik di setiap kumpulan dan memberikan informasi tentang cara menggunakan metrik ini.

Sebelum dapat menggunakan metrik status kube, Anda harus mengaktifkan pengumpulannya.

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 identik 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 dengan menggunakan Prometheus Query Language (PromQL). Kueri juga dapat dibuat menggunakan menggunakan Bahasa Kueri Monitoring (MQL).

Membuat kueri metrik

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

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

  • Nama metrik PromQL: Saat menggunakan PromQL di halaman Cloud Monitoring pada Konsol Google Cloud atau di kolom PromQL Cloud Monitoring API, gunakan nama metrik PromQL.
  • Nama metrik Cloud Monitoring Saat menggunakan fitur Cloud Monitoring lainnya, gunakan nama metrik Cloud Monitoring pada 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, Jenis, Unit
Resource yang dipantau
Versi GKE yang diperlukan
Deskripsi
Label
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Kapasitas volume persisten dalam byte. Diambil sampelnya setiap 30 detik.

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

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

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

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

persistentvolumeclaim: klaim persistentvolume.
storageclass: kelas penyimpanan.
volumename: nama volume.
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. Diambil sampelnya setiap 30 detik.

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

persistentvolumeclaim: klaim persistentvolume.
phase: fase.

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

Metrik pod

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

Tabel metrik Pod

Dengan metrik Pod, Anda dapat 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, Jenis, Unit
Resource yang dipantau
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. Diambil sampelnya setiap 30 detik.

container: penampung.
pod: tim.
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. Diambil sampelnya setiap 30 detik.

container: penampung.
pod: tim.
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. Diambil sampelnya setiap 30 detik.

phase: fase.
pod: tim.
uid: UID.
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Menjelaskan status pod yang tidak dapat dijadwalkan. Diambil 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 memberi tahu sejumlah 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 untuk container yang mengalami status menunggu tertentu 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 penampung, misalnya:

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

Untuk membuat pemberitahuan bagi penampung yang terjebak dalam salah satu status tunggu, 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 Diagram Helm komunitas Prometheus di GitHub.

Playbook interaktif

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

Jika paket metrik status kube tidak 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 fungsi yang sama, tetapi lebih mudah untuk digabungkan dan dibuat diagramnya. Dengan 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 error loop. Metrik kube_pod_container_status_waiting_reason juga menghitung Pod errorlooping, dan juga memungkinkan Anda menentukan apakah Pod terhenti dalam status menunggu selain CrashLookBackOff, seperti ImagePullBackOff dan ContainerCreating.

Untuk mempelajari playbook interaktif, lakukan hal berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih  Dashboards:

    Buka Dasbor

  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 penghentian.

Tabel metrik Deployment

Dengan metrik Deployment, Anda dapat 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, Jenis, Unit
Resource yang dipantau
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. Diambil 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. Diambil 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. Diambil sampelnya setiap 30 detik.

deployment: deployment.

Untuk 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 tersebut pada 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 memberi tahu 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 Diagram Helm komunitas Prometheus di GitHub.

Metrik StatefulSet

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

Tabel metrik StatefulSet

Metrik StatefulSet memungkinkan Anda memantau dan membuat pemberitahuan 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, Jenis, Unit
Resource yang dipantau
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. Diambil 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 siap per StatefulSet. Diambil 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 diperbarui per StatefulSet. Diambil sampelnya setiap 30 detik.

statefulset: statefulset.

Untuk informasi selengkapnya, lihat Metrik StatefulSet.

Contoh kueri untuk metrik StatefulSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap StatefulSets 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 dalam satu diagram:

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

Untuk memberi tahu 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 Diagram Helm komunitas Prometheus di GitHub.

Metrik DaemonSet

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

Tabel metrik DaemonSet

Metrik DaemonSet memungkinkan Anda memantau dan memberi tahu 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, Jenis, Unit
Resource yang dipantau
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. Diambil 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 tidak seharusnya. Diambil 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. Diambil 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 diperbarui. Diambil sampelnya setiap 30 detik.

daemonset: daemonset.

Untuk informasi selengkapnya, lihat Metrik DaemonSet.

Contoh kueri untuk metrik DaemonSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk tiap-tiap DaemonSets dengan memfilter metrik daemonset berdasarkan 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 tersebut pada 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 memberi tahu 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 Diagram Helm komunitas Prometheus di GitHub.

Metrik HorizontalPodAutoscaler

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

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

Tabel metrik HPA

Metrik HorizontalPodAutoscaler memungkinkan Anda memantau dan memberi tahu 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, Jenis, Unit
Resource yang dipantau
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 jumlah pod yang dapat disetel oleh penskalaan otomatis tidak boleh lebih kecil dari MinReplicas. Diambil 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 disetel oleh penskalaan otomatis, default 1. Diambil 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 penskala otomatis ini saat menghitung jumlah replika yang diinginkan. Diambil 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 penghitung skala otomatis ini. Diambil 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 penskala otomatis ini. Diambil 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 yang diinginkan dari pod yang dikelola oleh penskala otomatis ini. Diambil sampelnya setiap 30 detik.

horizontalpodautoscaler: horizontalpodautoscaler.

Untuk informasi selengkapnya, lihat Metrik Autoscaler 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 dapat meningkatkan spesifikasi untuk jumlah maksimum pod. Anda dapat menggunakan ekspresi PromQL berikut untuk membuat pemberitahuan guna 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 mengetahui apakah ada perbedaan antara jumlah replika saat ini dan yang dibutuhkan. Perbedaan mungkin menunjukkan adanya batasan resource dalam cluster. Ekspresi PromQL berikut mencari perbedaan antara jumlah replika saat ini dan jumlah replika yang dibutuhkan, minimum, dan maksimum, serta perubahan 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 timbangan:

    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 Diagram Helm komunitas Prometheus di GitHub.