Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ambil metrik mentah bidang kontrol di Prometheus format
Bagian Kubernetes bidang kontrol memperlihatkan sejumlah metrik yang direpresentasikan dalam format Prometheus.
Untuk melihat output metrik mentah, jalankan perintah berikut.
kubectl get --raw
endpoint
Perintah ini memungkinkan Anda untuk melewati jalur titik akhir apa pun dan mengembalikan respons mentah. Output mencantumkan metrik yang berbeda line-by-line, dengan setiap baris termasuk nama metrik, tag, dan nilai.
metric_name{tag="value"[,...]} value
Ambil metrik dari server API
Titik akhir API server umum diekspos di bidang EKS kontrol Amazon. Titik akhir ini terutama berguna ketika melihat metrik tertentu.
kubectl get --raw /metrics
Contoh output adalah sebagai berikut.
[...] # HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host. # TYPE rest_client_requests_total counter rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994 rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1 rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06 rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173 rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2 rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3 rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8 # HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts # TYPE ssh_tunnel_open_count counter ssh_tunnel_open_count 0 # HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts # TYPE ssh_tunnel_open_fail_count counter ssh_tunnel_open_fail_count 0
Output mentah ini mengembalikan kata demi kata apa yang diekspos server. API
Ambil metrik bidang kontrol dengan metrics.eks.amazonaws.com
Untuk cluster baru yang Kubernetes versi 1.28
dan di atasnya, Amazon EKS juga mengekspos metrik di bawah grup. API metrics.eks.amazonaws.com
Metrik ini mencakup komponen bidang kontrol seperti kube-scheduler
dankube-controller-manager
. Metrik ini juga tersedia untuk cluster yang ada yang memiliki versi platform yang sama atau lebih baru dibandingkan dengan tabel berikut.
Versi Kubernetes | Versi platform |
---|---|
|
|
|
|
|
|
|
|
Ambil metrik kube-scheduler
Untuk mengambil kube-scheduler
metrik, gunakan perintah berikut.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"
Contoh output adalah sebagai berikut.
# TYPE scheduler_pending_pods gauge scheduler_pending_pods{queue="active"} 0 scheduler_pending_pods{queue="backoff"} 0 scheduler_pending_pods{queue="gated"} 0 scheduler_pending_pods{queue="unschedulable"} 18 # HELP scheduler_pod_scheduling_attempts [STABLE] Number of attempts to successfully schedule a pod. # TYPE scheduler_pod_scheduling_attempts histogram scheduler_pod_scheduling_attempts_bucket{le="1"} 79 scheduler_pod_scheduling_attempts_bucket{le="2"} 79 scheduler_pod_scheduling_attempts_bucket{le="4"} 79 scheduler_pod_scheduling_attempts_bucket{le="8"} 79 scheduler_pod_scheduling_attempts_bucket{le="16"} 79 scheduler_pod_scheduling_attempts_bucket{le="+Inf"} 81 [...]
Ambil metrik kube-controller-manager
Untuk mengambil kube-controller-manager
metrik, gunakan perintah berikut.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"
Contoh output adalah sebagai berikut.
[...] workqueue_work_duration_seconds_sum{name="pvprotection"} 0 workqueue_work_duration_seconds_count{name="pvprotection"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-08"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-07"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-06"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-06"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-05"} 19 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.001"} 109 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.01"} 139 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.1"} 181 workqueue_work_duration_seconds_bucket{name="replicaset",le="1"} 191 workqueue_work_duration_seconds_bucket{name="replicaset",le="10"} 191 workqueue_work_duration_seconds_bucket{name="replicaset",le="+Inf"} 191 workqueue_work_duration_seconds_sum{name="replicaset"} 4.265655885000002 [...]
Memahami metrik scheduler dan controller manager
Tabel berikut menjelaskan metrik scheduler dan controller manager yang tersedia untuk Prometheus gaya menggores. Untuk informasi selengkapnya tentang metrik ini, lihat Referensi Metrik Kubernetes di
Metrik | Komponen bidang kontrol | Deskripsi |
---|---|---|
scheduler_pending_pods |
penjadwal |
Jumlah Pod yang menunggu untuk dijadwalkan ke sebuah node untuk dieksekusi. |
scheduler_schedule_attempts_total |
penjadwal |
Jumlah upaya yang dilakukan untuk menjadwalkan Pod. |
scheduler_preemption_attempts_total |
penjadwal |
Jumlah upaya yang dilakukan oleh penjadwal untuk menjadwalkan Pod prioritas yang lebih tinggi dengan mengusir Pod prioritas yang lebih rendah. |
scheduler_preemption_victims |
penjadwal |
Jumlah Pod yang telah dipilih untuk penggusuran untuk memberi ruang bagi Pod dengan prioritas yang lebih tinggi. |
scheduler_pod_scheduling_attempts |
penjadwal |
Jumlah upaya untuk berhasil menjadwalkan sebuah Pod. |
scheduler_scheduling_attempt_duration_seconds |
penjadwal |
Menunjukkan seberapa cepat atau lambat scheduler dapat menemukan tempat yang cocok untuk menjalankan Pod berdasarkan berbagai faktor seperti ketersediaan sumber daya dan aturan penjadwalan. |
scheduler_pod_scheduling_sli_duration_seconds |
penjadwal |
end-to-endLatensi untuk Pod sedang dijadwalkan, sejak Pod memasuki antrean penjadwalan. Ini mungkin melibatkan beberapa upaya penjadwalan. |
kube_pod_resource_request |
penjadwal |
Sumber daya yang diminta oleh beban kerja pada klaster, dipecah oleh Pod. Ini menunjukkan penggunaan sumber daya yang diharapkan oleh scheduler dan kubelet per Pod untuk sumber daya bersama dengan unit untuk sumber daya jika ada. |
kube_pod_resource_limit |
penjadwal |
Batas sumber daya untuk beban kerja di klaster, dipecah berdasarkan Pod. Ini menunjukkan penggunaan sumber daya yang diharapkan oleh scheduler dan kubelet per Pod untuk sumber daya bersama dengan unit untuk sumber daya jika ada. |
cronjob_controller_job_creation_skew_duration_seconds |
manajer pengontrol |
Waktu antara kapan cronjob dijadwalkan untuk dijalankan, dan saat pekerjaan yang sesuai dibuat. |
workqueue_depth |
manajer pengontrol |
Kedalaman antrian saat ini. |
workqueue_adds_total |
manajer pengontrol |
Jumlah total penambahan ditangani oleh workqueue. |
workqueue_queue_duration_seconds |
manajer pengontrol |
Waktu dalam hitungan detik item tetap berada dalam antrean kerja sebelum diminta. |
workqueue_work_duration_seconds |
manajer pengontrol |
Waktu dalam hitungan detik memproses item dari antrean kerja membutuhkan waktu. |
Terapkan scraper Prometheus untuk mengikis metrik secara konsisten
Untuk menerapkan scraper Prometheus untuk mengikis metrik secara konsisten, gunakan konfigurasi berikut:
--- apiVersion: v1 kind: ConfigMap metadata: name: prometheus-conf data: prometheus.yml: |- global: scrape_interval: 30s scrape_configs: # apiserver metrics - job_name: apiserver-metrics kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https # Scheduler metrics - job_name: 'ksh-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https # Controller Manager metrics - job_name: 'kcm-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https --- apiVersion: v1 kind: Pod metadata: name: prom-pod spec: containers: - name: prom-container image: prom/prometheus ports: - containerPort: 9090 volumeMounts: - name: config-volume mountPath: /etc/prometheus/ volumes: - name: config-volume configMap: name: prometheus-conf
Izin yang mengikuti diperlukan untuk Pod untuk mengakses endpoint metrik baru.
{ "effect": "allow", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] },
Untuk menambal peran yang digunakan, Anda dapat menggunakan perintah berikut.
kubectl patch clusterrole <role-name> --type=json -p='[ { "op": "add", "path": "/rules/-", "value": { "verbs": ["get"], "apiGroups": ["metrics.eks.amazonaws.com"], "resources": ["kcm/metrics", "ksh/metrics"] } } ]'
Kemudian Anda dapat melihat Prometheus dasbor dengan mem-proxy port dari Prometheus scraper ke port lokal Anda.
kubectl port-forward pods/prom-pod 9090:9090
Untuk EKS klaster Amazon Anda, metrik bidang kontrol Kubernetes inti juga dimasukkan ke dalam Metrik Amazon CloudWatch di bawah namespace. AWS/EKS
Untuk melihatnya, buka CloudWatch konsolAWS/EKS
namespace dan dimensi metrik untuk klaster Anda.