Edit This Page

Metrik-Metrik untuk Control Plane Kubernetes

Metrik dari komponen sistem dapat memberikan pandangan yang lebih baik tentang apa yang sedang terjadi di dalam sistem. Metrik sangat berguna untuk membuat dasbor (dashboard) dan peringatan (alert).

Metrik di dalam control plane Kubernetes disajikan dalam format prometheus dan dapat terbaca oleh manusia.

Metrik-Metrik pada Kubernetes

Dalam kebanyakan kasus, metrik tersedia pada endpoint /metrics dari server HTTP. Untuk komponen yang tidak mengekspos endpoint secara bawaan, endpoint tersebut dapat diaktifkan dengan menggunakan opsi --bind-address.

Contoh-contoh untuk komponen tersebut adalah:

Di dalam lingkungan produksi, kamu mungkin ingin mengonfigurasi Server Prometheus atau scraper metrik (pengambil metrik) lainnya untuk mengumpulkan metrik-metrik ini secara berkala dan membuatnya tersedia dalam semacam basis data yang time series.

Perlu dicatat bahwa kubeletAgen yang dijalankan pada setiap node di klaster dan bertugas memastikan kontainer dijalankan di dalam pod. juga mengekspos metrik pada endpoint-endpoint seperti /metrics/cadvisor, /metrics/resource dan /metrics/probes. Metrik-metrik tersebut tidak memiliki siklus hidup yang sama.

Jika klaster kamu menggunakan RBACManages authorization decisions, allowing admins to dynamically configure access policies through the Kubernetes API. , untuk membaca metrik memerlukan otorisasi melalui sebuah User, Group, atau ServiceAccount dengan ClusterRole yang memperbolehkan mengakses /metrics.

Sebagai contoh:

apiVersion: rbac.authorization.k8s.io/v1	
kind: ClusterRole	
metadata:	
  name: prometheus	
rules:	
  - nonResourceURLs:	
      - "/metrics"	
    verbs:	
      - get

Siklus Hidup (Lifecycle) Metrik

Alpha metric → Stable metric → Deprecated metric → Hidden metric → Deletion

Metrik-metrik Alpha tidak memiliki jaminan stabilitas; dengan demikian mereka dapat dimodifikasi atau dihapus kapan saja.

Metrik-metrik Stable dijamin tidak berubah (dijamin stabilitasnya); Secara khusus, stabilitas berarti:

  • metrik itu sendiri tidak akan dihapus (atau diganti namanya)
  • jenis metrik tidak akan dimodifikasi

Metrik Deprecated memberi penanda bahwa metrik tersebut suatu saat akan dihapus; untuk menemukan versi yang mana, kamu perlu memeriksa anotasi, yang mencakup dari versi Kubernetes mana yang metrik tersebut akan dianggap deprecated.

Sebelum deprecation:

# HELP some_counter this counts things
# TYPE some_counter counter
some_counter 0

Sesudah deprecation:

# HELP some_counter (Deprecated since 1.15.0) this counts things
# TYPE some_counter counter
some_counter 0

Setelah metrik disembunyikan maka secara bawaan metrik tidak dipublikasikan untuk scraping (pengambilan metrik). Untuk menggunakan metrik yang tersembunyi, kamu perlu mengganti (override) konfigurasi untuk komponen klaster yang relevan.

Setelah metrik dihapus, metrik tidak dipublikasikan. Kamu tidak dapat mengubah metrik tersebut dengan menggunakan override.

Melihat Metrik tersembunyi

Seperti dijelaskan di atas, para admin dapat mengaktifkan metrik tersembunyi melalui opsi pada baris perintah (command line) untuk binary (program) tertentu. Ini ditujukan untuk digunakan sebagai solusi bagi para admin apabila mereka gagal memigrasi metrik yang sudah deprecated dalam rilis terakhir.

Opsi show-hidden-metrics-for-version menunjukkan versi yang ingin kamu tampilkan metrik yang sudah deprecated dalam rilis tersebut. Versi ini ditampilkan dalam bentuk x.y, di mana x adalah versi major, y ​​adalah versi minor. Versi patch tidak diperlukan meskipun metrik dapat di_-deprecate_ dalam rilis _patch_, hal ini adalah karena kebijakan _deprecation_ untuk metrik hanya berlaku terhadap rilis minor.

Opsi tersebut hanya dapat menggunakan versi minor sebelumnya sebagai parameternya. Semua metrik yang disembunyikan di versi sebelumnya akan dikeluarkan jika para admin mengatur versi sebelumnya ke show-hidden-metrics-for-version. Versi yang terlalu lama tidak diizinkan karena hal ini melanggar kebijakan untuk metrik yang sudah deprecated.

Ambil metrik A sebagai contoh, di sini diasumsikan bahwa A sudah deprecated pada rilis 1.n. Menurut kebijakan metrik yang sudah deprecated, kita dapat mencapai kesimpulan sebagai berikut:

  • Pada rilis 1.n, metrik sudah di_-deprecated_, dan dapat diperlihatkan secara bawaan.
  • Pada rilis 1.n + 1, metrik disembunyikan secara bawaan dan dapat diperlihatkan dengan baris perintah show-hidden-metrics-for-version=1.n.
  • Pada rilis 1.n + 2, metrik harus dihapus dari codebase. Tidak ada jalan keluar lagi.

Jika kamu meng-upgrade dari rilis 1.12 ke 1.13, tetapi masih bergantung pada metrik A yang di-deprecate dalam 1.12, kamu harus mengatur metrik tersembunyi melalui baris perintah: --show-hidden-metrics=1.12 dan ingatlah untuk menghapus ketergantungan terhadap metrik ini sebelum meng-upgrade ke 1.14.

Metrik komponen

Metrik kube-controller-manager

Metrik Controller Manager memberikan pandangan penting tentang kinerja dan kesehatan Controller Manager. Metrik ini mencakup metrik runtime berbahasa Go yang umum seperti jumlah go_routine dan metrik khusus pengontrol seperti latensi request etcd atau latensi API dari Cloud provider (AWS, GCE, OpenStack) yang dapat digunakan untuk mengukur kesehatan klaster.

Mulai dari Kubernetes 1.7, metrik Cloud provider yang detail tersedia untuk operasi penyimpanan untuk GCE, AWS, Vsphere, dan OpenStack. Metrik ini dapat digunakan untuk memantau kesehatan operasi PersistentVolume.

Misalnya, untuk GCE metrik tersebut adalah:

cloudprovider_gce_api_request_duration_seconds { request = "instance_list"}
cloudprovider_gce_api_request_duration_seconds { request = "disk_insert"}
cloudprovider_gce_api_request_duration_seconds { request = "disk_delete"}
cloudprovider_gce_api_request_duration_seconds { request = "attach_disk"}
cloudprovider_gce_api_request_duration_seconds { request = "detach_disk"}
cloudprovider_gce_api_request_duration_seconds { request = "list_disk"}

Selanjutnya