Mengumpulkan dan melihat metrik status kube


Halaman ini menjelaskan cara mengonfigurasi cluster Google Kubernetes Engine (GKE) untuk kirim kumpulan status kube pilihan, termasuk metrik untuk Pod dan Deployment, Cloud Monitoring menggunakan Google Cloud Managed Service for Prometheus. Halaman ini juga menjelaskan bagaimana metrik ini diformat saat ditulis ke Pemantauan, dan cara membuat kueri metrik.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Mengaktifkan 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 harus memenuhi persyaratan berikut:

  • Cluster harus menjalankan GKE 1.27.2-gke.1200 atau yang lebih baru. Untuk cluster GKE Standard yang dimulai dengan versi 1.29.2-gke.2000 dan cluster GKE Autopilot dimulai pada versi 1.27.4-gke.900, paket metrik status Kube diaktifkan secara default.
  • Cluster harus memiliki metrik sistem mengaktifkan pembuatan versi.
  • Cluster harus memiliki Koleksi terkelola Google Cloud Managed Service for Prometheus mengaktifkan pembuatan versi. Pengumpulan terkelola Google Cloud Managed Service for Prometheus diaktifkan oleh {i>default<i} untuk cluster baru.

Mengonfigurasi kumpulan metrik status kube

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

Konsol

Anda dapat mengaktifkan metrik status kube dari Tab Kemampuan observasi untuk cluster atau Deployment dalam sebuah cluster. Anda juga dapat melihat pratinjau diagram dan metrik yang tersedia sebelum Anda mengaktifkan paket metrik.

Di tab Kemampuan observasi untuk cluster, Anda dapat memfilter kumpulan diagram untuk metrik status kube dengan dua item berikut:

  • Status Beban Kerja: mencakup metrik untuk Pod, Deployments, StatefulSets, DaemonSets, dan HorizontalPodAutoscaler Google Cloud Platform.
  • Penyimpanan > Persisten: mencakup metrik untuk Persisten Klaim Volume dan Volume Persisten.

Anda dapat mengaktifkan salah satu atau kedua kumpulan metrik.

Untuk mengaktifkan metrik status kube dari tab Kemampuan observasi untuk cluster, lakukan tindakan berikut:

  1. Di Google Cloud Console, buka halaman Cluster Kubernetes:

    Buka cluster Kubernetes

    Jika Anda menggunakan bilah pencarian untuk menemukan halaman ini, kemudian pilih hasil yang sub judulnya Kubernetes Engine.

  2. Klik nama cluster Anda, lalu pilih Observability .

  3. Pilih Workloads State atau Penyimpanan > Persisten dari daftar fitur.

  4. Klik Enable package.

    Jika paket metrik status kube sudah diaktifkan, Anda lihat kumpulan diagram untuk metrik status kube.

Untuk mengaktifkan metrik status kube dari tab Kemampuan observasi untuk Deployment, lakukan langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Workloads:

    Buka Workloads

    Jika Anda menggunakan bilah pencarian untuk menemukan halaman ini, kemudian pilih hasil yang sub judulnya Kubernetes Engine.

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

  3. Pilih Kube State dari daftar fitur.

  4. Klik Enable package. Paket diaktifkan untuk seluruh .

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

Untuk mengonfigurasi metrik status kube dari tab Details untuk , lakukan langkah berikut:

  1. Di Google Cloud Console, buka halaman Cluster Kubernetes:

    Buka cluster Kubernetes

    Jika Anda menggunakan bilah pencarian untuk menemukan halaman ini, kemudian pilih hasil yang sub judulnya Kubernetes Engine.

  2. Klik nama cluster Anda.

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

  4. Dalam dialog Edit Cloud Monitoring yang muncul, pastikan bahwa Enable Cloud Monitoring dipilih.

  5. Di menu drop-down Komponen, 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 menggantikan nilai sebelumnya deskripsi tempat.

Terraform

Untuk mengonfigurasi kumpulan metrik status kube menggunakan Terraform, melihat blok monitoring_config di Registry Terraform untuk google_container_cluster. Untuk mengetahui 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 Compute Engine API. Sebelum mengaktifkan metrik status kube, memeriksa puncak penggunaan baru-baru ini dari kuota tersebut. Jika Anda memiliki banyak klaster dalam project yang sama atau sudah mendekati batas kuota tersebut, Anda dapat meminta penambahan batas kuota sebelum mengaktifkan salah satu paket kemampuan observasi.

Harga

Metrik status Kube menggunakan Google Cloud Managed Service for Prometheus untuk dimuat metrik kustom ke dalam Cloud Monitoring. Biaya Cloud Monitoring untuk penyerapan metrik ini didasarkan pada jumlah sampel yang diserap. Namun, metrik ini tanpa biaya untuk terdaftar cluster yang termasuk dalam project yang Edisi GKE Enterprise mengaktifkan pembuatan versi.

Untuk 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 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). Mereka juga dapat dikueri dengan menggunakan dengan menggunakan Bahasa Kueri Monitoring (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 berbasis menu.

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

  • Nama metrik PromQL: Waktu menggunakan PromQL di halaman Cloud Monitoring konsol Google Cloud atau di kolom PromQL pada Cloud Monitoring API, gunakan nama metrik PromQL.
  • Nama metrik Cloud Monitoring Saat menggunakan Fitur Cloud Monitoring, gunakan nama metrik Cloud Monitoring pada tabel di bawah ini. 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, Satu
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 persistentvolume dalam byte. Pengambilan sampel 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. Pengambilan sampel 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. Pengambilan sampel 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 menunjukkan apakah volume tersedia, terikat pada klaim, atau dilepaskan oleh klaim. Pengambilan sampel 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. Pengambilan sampel setiap 30 detik.

persistentvolumeclaim: klaim volume persisten.
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. Pengambilan sampel setiap 30 detik.

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

persistentvolumeclaim: klaim volume persisten.
phase: fase.

Untuk informasi selengkapnya, lihat Metrik PersistentVolume dan Metrik PersistentVolumeKlaim.

Metrik pod

Pod adalah sekelompok yang terdiri dari satu atau beberapa container yang memiliki spesifikasi terkait cara menjalankan kontainer, yang berbagi sumber daya penyimpanan dan jaringan.

Tabel metrik Pod

Dengan metrik Pod, Anda dapat memantau dan memberikan pemberitahuan tentang perilaku Pod. Tabel berikut menunjukkan metrik yang tersedia di status kube paket metrik:

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, Satu
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. Pengambilan sampel setiap 30 detik.

container: penampung.
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 berada dalam status menunggu. Pengambilan sampel setiap 30 detik.

container: penampung.
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. Pengambilan sampel 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 yang tidak dapat dijadwalkan untuk pod. Pengambilan sampel setiap 30 detik.

pod: pod.
uid: uid.

Untuk informasi selengkapnya, lihat Metrik Pod.

Contoh kueri untuk metrik Pod

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

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

Untuk memberi tahu tentang sejumlah pod yang tidak dapat dijadwalkan dalam namespace, Anda dapat menggunakan berikut ekspresi PromQL:

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 terjebak dalam status tunggu tertentu dengan menggunakan PromQL ekspresi 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 untuk 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 metode setelah ekspresi PromQL

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

Beberapa ekspresi kueri dan peringatan dalam diadaptasi dari File kubernetes-apps.yaml di repositori Helm Chart Kubernetes komunitas Prometheus di GitHub.

Playbook interaktif

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

Tanpa mengaktifkan paket metrik status kube, cara utama untuk mendeteksi masalah penjadwalan pod adalah dengan membuat kueri "Penjadwalan Gagal" mencatat peristiwa ke dalam log. Sesudah mengaktifkan paket metrik status kube, Anda dapat menggunakan kube_pod_status_unschedulable, yang memiliki tujuan sama, tetapi lebih mudah diagregasi dan dibuat diagram. Dengan menggunakan metrik, Anda dapat melihat berapa banyak Pod tidak dapat dijadwalkan dan saat masalah dimulai.

Demikian pula, metrik sistem GKE kubernetes.io/container/restart_count dapat membantu Anda mendeteksi Pod yang mengalami errorlooping. Tujuan Metrik kube_pod_container_status_waiting_reason juga menghitung errorlooping Pod, dan juga memungkinkan Anda menentukan apakah Pod terjebak dalam status menunggu dari CrashLookBackOff, seperti ImagePullBackOff dan ContainerCreating.

Untuk menjelajahi playbook interaktif, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman  Dashboards:

    Buka Dasbor

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

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

Metrik deployment

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

Tabel metrik Deployment

Metrik Deployment memungkinkan Anda memantau dan memberitahukan perilaku pengontrol. Tabel berikut menampilkan 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, Satu
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. Pengambilan sampel 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. Pengambilan sampel 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. Pengambilan sampel 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 berdasarkan cluster, namespace, dan nama Penyebaran.

Misalnya, untuk membandingkan jumlah replika yang tersedia dengan jumlah replika yang diharapkan dalam satu Deployment, Anda dapat menggunakan Kueri PromQL untuk memetakan kedua metrik di 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:

(
  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 peringatan dalam diadaptasi dari File kubernetes-apps.yaml di repositori Helm Chart Kubernetes komunitas Prometheus di GitHub.

Metrik StatefulSet

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

Tabel metrik StatefulSet

Metrik StatefulSet memungkinkan Anda memantau dan memberi tahu tentang perilakunya pengontrol. Tabel berikut menampilkan 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, Satu
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. Pengambilan sampel setiap 30 detik.

statefulset: kumpulan stateful.
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Jumlah replika siap per StatefulSet. Pengambilan sampel setiap 30 detik.

statefulset: kumpulan stateful.
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. Pengambilan sampel setiap 30 detik.

statefulset: kumpulan stateful.

Untuk informasi selengkapnya, lihat Metrik StatefulSet.

Contoh kueri untuk metrik StatefulSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap StatefulSet dengan memfilter metrik statefulset berdasarkan 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 untuk memetakan kedua metrik di 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:

(
  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 peringatan dalam diadaptasi dari File kubernetes-apps.yaml di repositori Helm Chart Kubernetes komunitas Prometheus di GitHub.

Metrik DaemonSet

DaemonSet adalah pengontrol yang memastikan bahwa beberapa set Node menjalankan salinan dari sebuah Pod. Misalnya, saat Node ditambahkan ke cluster, DaemonSet akan menambahkan Pod ke Node. Pengontrol ini berguna untuk memastikan bahwa proses yang berjalan di setiap {i>node<i}.

Tabel metrik DaemonSet

Metrik DaemonSet memungkinkan Anda memantau dan memberi tahu tentang perilaku pengontrol. Tabel berikut menampilkan 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, Satu
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 seharusnya menjalankan pod daemon. Pengambilan sampel 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. Pengambilan sampel 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 seharusnya menjalankan pod daemon dan memiliki satu atau beberapa pod {i>daemon<i} yang sedang berjalan dan siap digunakan. Pengambilan sampel 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. Pengambilan sampel setiap 30 detik.

daemonset: daemonset.

Untuk informasi selengkapnya, lihat Metrik DaemonSet.

Contoh kueri untuk metrik DaemonSet

Anda dapat membuat diagram dan kebijakan pemberitahuan untuk setiap DaemonSet 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 untuk memetakan kedua metrik di 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:

(
  (
    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 peringatan dalam diadaptasi dari File kubernetes-apps.yaml di repositori Helm Chart Kubernetes komunitas Prometheus di GitHub.

Metrik HorizontalPodAutoscaler

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

Untuk informasi selengkapnya tentang HPA, baca Melihat detail tentang Pod Horizontal Penskala otomatis.

Tabel metrik HPA

Metrik HorizontalPodAutoscaler memungkinkan Anda memantau dan memberi tahu tentang perilaku tersebut pengontrol. Tabel berikut menampilkan 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, Satu
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 autoscaler, tidak boleh lebih kecil dari MinReplicas. Pengambilan sampel 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 autoscaler, secara default 1. Pengambilan sampel 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. Pengambilan sampel 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. Pengambilan sampel 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. Pengambilan sampel 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. Pengambilan sampel 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 memplot rasio berikut:

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

Ketika HPA berjalan dengan jumlah replika maksimum, Anda mungkin ingin meningkatkan spesifikasi untuk jumlah maksimum pod. Anda dapat menggunakan Ekspresi PromQL 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 kube_horizontalpodautoscaler_status_current_replicas dan metrik kube_horizontalpodautoscaler_status_desired_replicas untuk menentukan apakah ada perbedaan antara fasilitas yang jumlah replika. Perbedaannya mungkin menunjukkan adanya batasan resource dalam cluster. Ekspresi PromQL berikut mencari perbedaan antara jumlah replika saat ini dengan yang dibutuhkan, minimum, dan maksimum jumlah replika, 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 kapan HPA menjalankan 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 timbangan baru:

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

Beberapa ekspresi kueri dan peringatan dalam diadaptasi dari File kubernetes-apps.yaml di repositori Helm Chart Kubernetes komunitas Prometheus di GitHub.