Pantau kesehatan kube-apiserver di kluster ACK menggunakan metrik, dasbor, dan diagnosis anomali.
Catatan penggunaan
Akses dasbor
Lihat Lihat dasbor pemantauan komponen lapisan kontrol kluster.
Metrik
Tabel berikut mencantumkan metrik kube-apiserver.
|
Metric |
Type |
Description |
|
apiserver_request_duration_seconds_bucket |
Histogram |
Distribusi latensi untuk permintaan dari klien API Server ke API Server. Dimensi:
Ambang batas bucket untuk Histogram API Server: |
|
apiserver_request_total |
Counter |
Total permintaan API Server, dikelompokkan berdasarkan Verb, Group, Version, Resource, Scope, Component, HTTP contentType, kode HTTP (kode status respons), dan Client. |
|
apiserver_request_no_resourceversion_list_total |
Counter |
Permintaan LIST ke API Server tanpa parameter |
|
apiserver_current_inflight_requests |
Gauge |
Permintaan yang sedang diproses oleh API Server, dalam dua jenis:
|
|
apiserver_dropped_requests_total |
Counter |
Permintaan yang dibuang oleh API Server selama throttling, mengembalikan kode status HTTP |
|
etcd_request_duration_seconds_bucket |
Histogram |
Distribusi latensi permintaan dari API Server ke etcd. Dikelompokkan berdasarkan operasi dan jenis objek. Ambang batas bucket: |
|
apiserver_flowcontrol_request_concurrency_limit |
Gauge |
Batas maksimum permintaan konkuren yang dapat diproses oleh antrian prioritas di bawah throttling APF (API Priority and Fairness). Menunjukkan bagaimana API Server mengalokasikan kapasitas di seluruh antrian prioritas untuk memprioritaskan permintaan. Usang di Kubernetes 1.30 dan dihapus di 1.31. Untuk kluster yang menjalankan Kubernetes 1.31 atau lebih baru, gunakan metrik apiserver_flowcontrol_nominal_limit_seats sebagai gantinya. |
|
apiserver_flowcontrol_current_executing_requests |
Gauge |
Permintaan yang sedang dieksekusi dalam antrian prioritas, merepresentasikan beban konkuren aktual. Pantau bersamaan dengan batas konkurensi untuk menentukan apakah API Server mendekati titik jenuh. |
|
apiserver_flowcontrol_current_inqueue_requests |
Gauge |
Permintaan yang menunggu dalam antrian prioritas. Antrean yang terus bertambah menunjukkan tekanan trafik pada API Server dan kemungkinan kelebihan beban antrian. |
|
apiserver_flowcontrol_nominal_limit_seats |
Gauge |
Batas maksimum nominal kursi konkuren di API Server di bawah APF, menunjukkan alokasi kapasitas di seluruh antrian prioritas. Mengindikasikan bagaimana API Server mendistribusikan sumber daya melalui kebijakan pengendalian trafik. Satuan: seats. |
|
apiserver_flowcontrol_current_limit_seats |
Gauge |
Batas konkurensi APF saat ini dalam satuan seats untuk antrian prioritas — jumlah maksimum seats konkuren yang diizinkan setelah penyesuaian dinamis berdasarkan beban sistem. Berbeda dengan |
|
apiserver_flowcontrol_current_executing_seats |
Gauge |
Seats yang dikonsumsi oleh permintaan yang sedang dieksekusi dalam antrian prioritas, mencerminkan beban aktual. Jika Untuk meningkatkan kapasitas, tingkatkan maxMutatingRequestsInflight dan maxRequestsInflight untuk API Server. Lihat Sesuaikan parameter komponen lapisan kontrol di kluster ACK Pro. |
|
apiserver_flowcontrol_current_inqueue_seats |
Gauge |
Seats yang ditempati oleh permintaan yang menunggu dalam antrian prioritas, merepresentasikan antrean tertunda. |
|
apiserver_flowcontrol_request_execution_seconds_bucket |
Histogram |
Waktu eksekusi permintaan, dari awal hingga selesai. Ambang batas bucket adalah {0, 0.005, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 15, 30}. Satuan: detik. |
|
apiserver_flowcontrol_request_wait_duration_seconds_bucket |
Histogram |
Waktu tunggu permintaan dalam antrian sebelum eksekusi dimulai. Ambang batas bucket adalah {0, 0.005, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 15, 30}. Satuan: detik. |
|
apiserver_flowcontrol_dispatched_requests_total |
Counter |
Total permintaan yang berhasil didispatch oleh API Server di bawah APF. |
|
apiserver_flowcontrol_rejected_requests_total |
Counter |
Permintaan yang ditolak karena melebihi batas konkurensi atau kapasitas antrian. |
|
apiserver_admission_controller_admission_duration_seconds_bucket |
Histogram |
Latensi pemrosesan admission controller. Label: nama controller, operasi (seperti CREATE, UPDATE, CONNECT), resource API, jenis operasi (validate atau admit), dan status penolakan (true atau false). Ambang batas bucket: |
|
apiserver_admission_webhook_admission_duration_seconds_bucket |
Histogram |
Latensi pemrosesan admission webhook. Label: nama controller, operasi (seperti CREATE, UPDATE, CONNECT), resource API, jenis operasi (seperti validate atau admit), dan status penolakan (true atau false). Ambang batas bucket: |
|
apiserver_admission_webhook_admission_duration_seconds_count |
Counter |
Permintaan yang diproses oleh admission webhook. Label: nama controller, operasi (seperti CREATE, UPDATE, CONNECT), resource API, jenis operasi (validate atau admit), dan status penolakan (true atau false). |
|
cpu_utilization_core |
Gauge |
Jumlah core CPU yang digunakan. Satuan: core. |
|
memory_utilization_byte |
Gauge |
Jumlah memori yang digunakan. Satuan: byte. |
|
resource_utilization_level |
Gauge |
Tingkat pemanfaatan sumber daya.
|
|
up |
Gauge |
Menunjukkan apakah layanan tersedia.
|
Metrik pemanfaatan sumber daya berikut tidak lagi digunakan. Hapus semua aturan peringatan atau pemantauan yang bergantung pada metrik ini:
cpu_utilization_ratio: Pemanfaatan CPU.
memory_utilization_ratio: Pemanfaatan memori.
Dasbor
Panel dasbor dalam urutan yang direkomendasikan:
-
Metrik utama: Dapatkan ikhtisar cepat metrik kluster utama.
-
Ikhtisar: Analisis latensi respons API Server, jumlah permintaan yang sedang berlangsung, dan peristiwa throttling apa pun.
-
Analisis sumber daya: Tinjau tingkat pemanfaatan sumber daya komponen yang dikelola.
-
QPS dan latensi: Lakukan analisis mendalam multidimensi terhadap queries per second (QPS) dan waktu respons (RT).
-
Throttling APF: Gunakan metrik APF untuk menganalisis distribusi trafik permintaan API Server, status throttling-nya, dan bottleneck kinerja sistem.
-
Admission controller dan webhook: Analisis QPS dan RT admission controller serta webhook.
-
Analisis klien: Lakukan analisis multidimensi QPS berdasarkan klien.
Filter
Konfigurasikan Verb, Resource, dan Quantile untuk permintaan API Server, serta Interval PromQL di atas dasbor.
Quantile 0.9 (P90) menunjukkan nilai di mana 90% sampel histogram berada di bawah atau sama dengannya, sehingga menyaring outlier ekor panjang. Quantile 0.99 (P99) mencakup sampel ekor panjang.

Pilih rentang waktu dan interval refresh menggunakan filter ini.
Metrik utama
Tampilan dasbor
Rincian metrik
|
Name |
PromQL |
Description |
|
API QPS |
sum(irate(apiserver_request_total[$interval])) |
Total QPS untuk API Server. |
|
Read request success rate |
sum(irate(apiserver_request_total{code=~"20.*",verb=~"GET|LIST"}[$interval]))/sum(irate(apiserver_request_total{verb=~"GET|LIST"}[$interval])) |
Tingkat keberhasilan permintaan baca untuk API Server. |
|
Write request success rate |
sum(irate(apiserver_request_total{code=~"20.*",verb!~"GET|LIST|WATCH|CONNECT"}[$interval]))/sum(irate(apiserver_request_total{verb!~"GET|LIST|WATCH|CONNECT"}[$interval])) |
Tingkat keberhasilan permintaan tulis untuk API Server. |
|
Number of in-flight read requests |
sum(apiserver_current_inflight_requests{requestKind="readOnly"}) |
Permintaan baca yang sedang diproses oleh API Server. |
|
Number of in-flight write requests |
sum(apiserver_current_inflight_requests{requestKind="mutating"}) |
Permintaan tulis yang sedang diproses oleh API Server. |
|
Request throttling rate |
sum(irate(apiserver_dropped_requests_total[$interval])) |
Laju kebijakan throttling API Server dalam membuang permintaan. Persentase total permintaan yang dibuang oleh kebijakan throttling API server. |
Ikhtisar
Tampilan dasbor
Rincian metrik
|
Name |
PromQL |
Description |
|
GET read request latency |
histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb="GET",resource!="",subresource!~"log|proxy"}[$interval])) by (pod, verb, resource, subresource, scope, le)) |
Waktu respons permintaan GET, dikelompokkan berdasarkan pod API Server, resource, dan scope. |
|
LIST read request latency |
histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb="LIST"}[$interval])) by (pod_name, verb, resource, scope, le)) |
Waktu respons permintaan LIST, dikelompokkan berdasarkan pod API Server, resource, dan scope. |
|
Write request latency |
histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb!~"GET|WATCH|LIST|CONNECT"}[$interval])) by (cluster, pod_name, verb, resource, scope, le)) |
Waktu respons permintaan mutating, dikelompokkan berdasarkan pod API Server, verb (tidak termasuk GET, WATCH, LIST, CONNECT), resource, dan scope. |
|
Number of in-flight read requests |
apiserver_current_inflight_requests{request_kind="readOnly"} |
Permintaan baca yang sedang diproses oleh API Server. |
|
Number of in-flight write requests |
apiserver_current_inflight_requests{request_kind="mutating"} |
Permintaan tulis yang sedang diproses oleh API Server. |
|
Request throttling rate |
sum(irate(apiserver_dropped_requests_total{request_kind="readOnly"}[$interval])) by (name) sum(irate(apiserver_dropped_requests_total{request_kind="mutating"}[$interval])) by (name) |
Laju throttling permintaan untuk API Server. |
Analisis sumber daya
Tampilan dasbor

Rincian metrik
|
Name |
PromQL |
Description |
|
Memory usage |
memory_utilization_byte{container="kube-apiserver"} |
Penggunaan memori API Server. Satuan: byte. |
|
CPU usage |
cpu_utilization_core{container="kube-apiserver"}*1000 |
Penggunaan CPU API Server. Satuan: millicores. |
|
Resource object count |
|
Catatan
Karena masalah kompatibilitas, kedua metrik |
|
Tingkat pemanfaatan memori |
|
|
|
Tingkat pemanfaatan CPU |
|
QPS dan latensi
Tampilan dasbor
Rincian metrik
|
Name |
PromQL |
Description |
|
QPS analysis by verb |
sum(irate(apiserver_request_total{verb=~"$verb"}[$interval]))by(verb) |
QPS permintaan, dikelompokkan berdasarkan verb. |
|
QPS analysis by verb and resource |
sum(irate(apiserver_request_total{verb=~"$verb",resource=~"$resource"}[$interval]))by(verb,resource) |
QPS permintaan, dikelompokkan berdasarkan verb dan resource. |
|
Request latency analysis by verb |
histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb=~"$verb", verb!~"WATCH|CONNECT",resource!=""}[$interval])) by (le,verb)) |
Latensi permintaan, dikelompokkan berdasarkan verb. |
|
Request latency analysis by verb and resource |
histogram_quantile($quantile, sum(irate(apiserver_request_duration_seconds_bucket{verb=~"$verb", verb!~"WATCH|CONNECT", resource=~"$resource",resource!=""}[$interval])) by (le,verb,resource)) |
Latensi permintaan, dikelompokkan berdasarkan verb dan resource. |
|
QPS of read requests with non-2xx responses |
sum(irate(apiserver_request_total{verb=~"GET|LIST",resource=~"$resource",code!~"2.*"}[$interval])) by (verb,resource,code) |
QPS permintaan baca yang mengembalikan kode status non-2xx, seperti 4xx atau 5xx. |
|
QPS of write requests with non-2xx responses |
sum(irate(apiserver_request_total{verb!~"GET|LIST|WATCH",verb=~"$verb",resource=~"$resource",code!~"2.*"}[$interval])) by (verb,resource,code) |
QPS permintaan tulis yang mengembalikan kode status non-2xx, seperti 4xx atau 5xx. |
|
API Server to etcd request latency |
histogram_quantile($quantile, sum(irate(etcd_request_duration_seconds_bucket[$interval])) by (le,operation,type,instance)) |
Latensi permintaan dari API Server ke etcd. |
Throttling APF
Pemantauan metrik throttling APF sedang dalam rilis canary.
-
Metrik terkait APF hanya tersedia untuk kluster ACK yang menjalankan Kubernetes 1.20 atau lebih baru. Untuk meningkatkan kluster Anda, lihat Tingkatkan kluster ACK secara manual.
-
dasbor metrik APF juga memerlukan peningkatan komponen berikut. Lihat Tingkatkan komponen pemantauan.
-
Komponen pemantauan kluster kontainer: 0.06 atau lebih baru.
-
Komponen ack-arms-prometheus: v1.1.31 atau lebih baru.
-
managed probe: v1.1.31 atau lebih baru.
-
Tampilan dasbor


Rincian metrik
Beberapa metrik dikelompokkan berdasarkan PL, Instance, dan FS.
-
PL: Priority Level.
-
Instance: Instans API Server.
-
FS: Flow Schema.
Untuk rincian APF dan dimensi, lihat dokumentasi Kubernetes API Priority and Fairness.
|
Name |
PromQL |
Description |
|
APF request concurrency limit (by PL) |
sum by(priority_level) (apiserver_flowcontrol_request_concurrency_limit) |
Batas konkurensi permintaan APF, dikelompokkan berdasarkan PL atau Instance + PL. Jumlah maksimum teoretis permintaan konkuren per antrian prioritas.
|
|
APF request concurrency limit (by Instance + PL) |
sum by(instance,priority_level) (apiserver_flowcontrol_request_concurrency_limit) |
|
|
Number of current APF executing requests (by FS + PL) |
sum by(flow_schema,priority_level) (apiserver_flowcontrol_current_executing_requests) |
Permintaan yang sedang dieksekusi di bawah APF, dikelompokkan berdasarkan FS + PL atau Instance + FS + PL. |
|
Number of current APF executing requests (by Instance + FS + PL) |
sum by(instance,flow_schema,priority_level)(apiserver_flowcontrol_current_executing_requests) |
|
|
Number of current APF in-queue requests (by FS + PL) |
sum by(flow_schema,priority_level) (apiserver_flowcontrol_current_inqueue_requests) |
Permintaan yang menunggu dalam antrean, dikelompokkan berdasarkan FS + PL atau Instance + FS + PL. |
|
Number of current APF in-queue requests (by Instance + FS + PL) |
sum by(instance,flow_schema,priority_level) (apiserver_flowcontrol_current_inqueue_requests) |
|
|
APF nominal limit seats |
sum by(instance,priority_level) (apiserver_flowcontrol_nominal_limit_seats) |
Metrik seat APF berdasarkan Instance + PL:
|
|
APF current limit seats |
sum by(instance,priority_level) (apiserver_flowcontrol_current_limit_seats) |
|
|
APF current executing seats |
sum by(instance,priority_level) (apiserver_flowcontrol_current_executing_seats) |
|
|
APF current in-queue seats |
sum by(instance,priority_level) (apiserver_flowcontrol_current_inqueue_seats) |
|
|
APF request execution time |
histogram_quantile($quantile, sum(irate(apiserver_flowcontrol_request_execution_seconds_bucket[$interval])) by (le,instance, flow_schema,priority_level)) |
Waktu dari awal eksekusi permintaan hingga selesai. |
|
APF request wait time |
histogram_quantile($quantile, sum(irate(apiserver_flowcontrol_request_wait_seconds_bucket[$interval])) by (le,instance, flow_schema,priority_level)) |
Waktu permintaan menunggu dalam antrean sebelum eksekusi. |
|
QPS of successfully dispatched APF requests |
sum(irate(apiserver_flowcontrol_dispatched_requests_total[$interval]))by(instance,flow_schema,priority_level) |
QPS permintaan yang berhasil didispatch. |
|
QPS of rejected APF requests |
sum(irate(apiserver_flowcontrol_rejected_requests_total[$interval]))by(instance,flow_schema,priority_level) |
QPS permintaan yang ditolak karena melebihi batas konkurensi atau kapasitas antrean. |
Admission controller dan webhook
Tampilan dasbor
Rincian metrik
|
Name |
PromQL |
Description |
|
Admission controller latency [admit] |
histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_controller_admission_duration_seconds_bucket{type="admit"}[$interval])) ) |
Nama, operasi, status penolakan, dan waktu eksekusi admission controller tipe Bucket histogram: |
|
Admission controller latency [validate] |
histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_controller_admission_duration_seconds_bucket{type="validate"}[$interval])) ) |
Nama, operasi, status penolakan, dan waktu eksekusi admission controller tipe Bucket histogram: |
|
Admission webhook latency [admit] |
histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_webhook_admission_duration_seconds_bucket{type="admit"}[$interval])) ) |
Nama, operasi, status penolakan, dan waktu eksekusi webhook tipe Bucket histogram: |
|
Admission webhook latency [validating] |
histogram_quantile($quantile, sum by(operation, name, le, type, rejected) (irate(apiserver_admission_webhook_admission_duration_seconds_bucket{type="validating"}[$interval])) ) |
Nama, operasi, status penolakan, dan waktu eksekusi webhook tipe Bucket histogram: |
|
Admission webhook request QPS |
sum(irate(apiserver_admission_webhook_admission_duration_seconds_count[$interval]))by(name,operation,type,rejected) |
QPS permintaan admission webhook. |
Analisis klien
Tampilan dasbor
Rincian metrik
|
Name |
PromQL |
Description |
|
QPS analysis by client |
sum(irate(apiserver_request_total{client!=""}[$interval])) by (client) |
QPS berdasarkan klien, menunjukkan klien mana yang mengakses API Server. |
|
QPS analysis by verb, resource, and client |
sum(irate(apiserver_request_total{client!="",verb=~"$verb", resource=~"$resource"}[$interval]))by(verb,resource,client) |
QPS permintaan API Server, dikelompokkan berdasarkan verb, resource, dan klien. |
|
QPS of LIST requests without resourceVersion |
sum(irate(apiserver_request_no_resourceversion_list_total[$interval]))by(resource,client) |
|
Anomali metrik umum
Gunakan bagian berikut untuk menentukan apakah anomali metrik bersifat wajar.
Read/write request success rate
Deskripsi
|
Normal |
Abnormal |
Description |
|
read request success rate dan write request success rate seharusnya mendekati 100%. |
read request success rate dan write request success rate secara konsisten di bawah 90%. |
Banyak permintaan mengembalikan kode status non-2xx. |
Solusi yang direkomendasikan
Periksa panel Non-2xx Read Request QPS dan Non-2xx Write Request QPS untuk mengidentifikasi jenis permintaan dan resource yang menyebabkan respons non-2xx. Misalnya, GET/deployment 404 berarti permintaan GET Deployment mengembalikan 404, sehingga menurunkan read request success rate. Tentukan apakah hal ini bersifat wajar.
GET/LIST read and write request latency
Deskripsi
|
Normal |
Abnormal |
Description |
|
GET read request latency P[0.9], LIST read request latency P[0.9], dan write request latency P[0.9] berkorelasi dengan ukuran kluster dan jumlah resource yang diakses. Tidak ada ambang batas tetap — latensi dapat diterima selama tidak memengaruhi aplikasi Anda. Biasanya, GET read request latency P[0.9] dan write request latency P[0.9] di bawah 1 detik, serta LIST read request latency P[0.9] di bawah 5 detik dianggap normal. |
|
Jika latensi permintaan tinggi, Anda harus menyingkirkan faktor seperti jumlah resource kluster yang besar atau panggilan webhook yang lambat. |
Solusi yang direkomendasikan
-
Tinjau dasbor untuk mengidentifikasi jenis permintaan dan resource dengan latensi tinggi pada metrik GET read request latency P[0.9], LIST read request latency P[0.9], dan write request latency P[0.9], lalu ambil tindakan korektif.
Metrik
apiserver_request_duration_seconds_bucketdibatasi hingga 60 detik — permintaan yang melebihi 60 detik dicatat sebagai 60 detik. Permintaan koneksi persisten, sepertiPOST pod/execatau pembacaan log, biasanya melebihi ambang ini dan dapat diabaikan saat troubleshooting.
-
Periksa latensi admission webhook untuk menentukan apakah webhook yang lambat menyebabkan latensi permintaan API server yang tinggi.
In-flight requests and dropped requests
Deskripsi
|
Normal |
Abnormal |
Description |
|
Umumnya, number of read requests processed dan number of write requests processed di bawah 100, dan request limit rate bernilai 0. |
|
Jika antrean permintaan memiliki backlog, singkirkan faktor seperti lonjakan permintaan mendadak atau webhook yang lambat. Jika kapasitas antrean terlampaui, API server melakukan throttling terhadap permintaan, menyebabkan request limit rate naik di atas 0 dan memengaruhi stabilitas kluster. |
Solusi yang direkomendasikan
-
Tinjau dasbor QPS dan latensi serta analisis klien untuk mengidentifikasi permintaan terbanyak berdasarkan volume. Jika permintaan berasal dari aplikasi Anda, tentukan apakah Anda dapat mengurangi volumenya.
-
Periksa latensi admission webhook untuk menentukan apakah webhook yang lambat menyebabkan pemrosesan permintaan API server yang lambat.
Latensi admission webhook
Deskripsi
|
Normal |
Abnormal |
Description |
|
admission webhook latency seharusnya kurang dari 0,5 detik. |
admission webhook latency terus-menerus melebihi 0,5 detik. |
Respons webhook yang lambat memengaruhi latensi respons API server. |
Solusi yang direkomendasikan
Tinjau log webhook untuk menentukan apakah perilaku tersebut bersifat wajar. Copot pemasangan webhook yang tidak lagi diperlukan.
Referensi
-
Metrik, dasbor, dan troubleshooting anomali untuk komponen lapisan kontrol lainnya:
-
Untuk mengkueri data pemantauan Prometheus menggunakan konsol atau API, lihat Kueri Data Pemantauan Prometheus Menggunakan PromQL.
-
Untuk membuat aturan peringatan kustom dengan PromQL di pemantauan Prometheus Alibaba Cloud, lihat Buat Aturan Peringatan Prometheus.