All Products
Search
Document Center

Container Service for Kubernetes:kube-apiserver: Metrics and dashboard

Last Updated:Sep 11, 2026

Pantau kesehatan kube-apiserver di kluster ACK. Komponen ini menyediakan RESTful API Kubernetes yang memungkinkan klien eksternal dan komponen internal kluster berinteraksi dengannya. Gunakan daftar metrik, panduan dasbor, dan analisis anomali dalam topik ini untuk mendiagnosis masalah.

Catatan penggunaan

Akses dasbor

Lihat Lihat dasbor komponen lapisan kontrol.

Metrik

Metrik merupakan salah satu cara komponen mengekspos status dan parameternya. Tabel berikut mencantumkan metrik kube-apiserver.

Metric

Type

Description

apiserver_request_duration_seconds_bucket

Histogram

Distribusi latensi permintaan klien ke API Server.

Dimensi:

  • Verb: jenis permintaan, seperti GET, POST, PUT, dan DELETE.

  • Group: grup API, yaitu kumpulan antarmuka terkait untuk memperluas Kubernetes API.

  • Version: versi API, seperti v1 dan v1beta1.

  • Resource: jenis resource target, seperti Pod, Service, dan Lease.

  • Subresource: subresource dari resource target, seperti detail pod dan log pod.

  • Scope: cakupan permintaan, seperti namespace-scoped atau cluster-scoped.

  • Component: komponen yang melakukan permintaan, seperti kube-controller-manager, kube-scheduler, atau cloud-controller-manager.

  • Client: klien yang melakukan permintaan, baik komponen internal maupun layanan eksternal.

Ambang batas bucket untuk histogram API Server: {0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 40, 50, 60}. Satuan: detik.

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 resourceVersion. Membantu mengidentifikasi permintaan LIST quorum-read berlebihan dan klien yang mengirimnya, sehingga perilaku permintaan klien dapat dioptimalkan dan kinerja kluster ditingkatkan. Dikelompokkan berdasarkan Group, Version, Resource, Scope, dan Client.

apiserver_current_inflight_requests

Gauge

Permintaan yang sedang diproses oleh API Server. Permintaan ini terbagi menjadi dua jenis:

  • ReadOnly: permintaan yang tidak mengubah status kluster, seperti menampilkan daftar pod atau menanyakan status node.

  • Mutating: permintaan yang mengubah status kluster, biasanya operasi membuat, memperbarui, atau menghapus resource, seperti membuat pod atau memperbarui konfigurasi Service.

apiserver_dropped_requests_total

Counter

Permintaan yang dibuang oleh API Server selama throttling, mengembalikan kode status HTTP 429 'Try again later'.

etcd_request_duration_seconds_bucket

Histogram

Distribusi latensi permintaan dari API Server ke etcd.

Dikelompokkan berdasarkan operasi dan jenis objek.

Ambang batas bucket: {0.005, 0.025, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 1.25, 1.5, 2, 3, 4, 5, 6, 8, 10, 15, 20, 30, 45, 60}. Satuan: detik.

apiserver_storage_db_size_in_use_quota_bytes

Gauge

Kuota penyimpanan yang dikonfigurasi untuk database etcd. Permintaan tulis akan ditolak ketika batas ini tercapai. Satuan: byte.

apiserver_storage_db_size_in_use_bytes

Gauge

Jumlah penyimpanan data yang saat ini digunakan oleh etcd. Satuan: byte.

apiserver_flowcontrol_request_concurrency_limit

Gauge

Jumlah teoretis maksimum permintaan yang dapat diproses secara konkuren oleh antrian prioritas di bawah mekanisme API Priority and Fairness (APF). Menunjukkan bagaimana API Server menggunakan kebijakan pengendalian trafik untuk mengalokasikan kapasitas di seluruh antrian prioritas agar permintaan prioritas tinggi diproses tanpa penundaan.

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 bersama 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

Jumlah kursi konkuren nominal maksimum di API Server di bawah APF, menunjukkan bagaimana kebijakan pengendalian trafik mengalokasikan kapasitas di seluruh antrian prioritas. 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. Nilai ini mencerminkan kapasitas konkurensi aktual antrian dan dapat berubah secara dinamis karena beban sistem atau faktor lainnya.

Berbeda dengan nominal_limit_seats, nilai ini dapat dipengaruhi oleh kebijakan pengendalian trafik global.

apiserver_flowcontrol_current_executing_seats

Gauge

Seats yang dikonsumsi oleh permintaan yang sedang dieksekusi dalam antrian prioritas, mencerminkan beban aktual.

Jika current_executing_seats mendekati current_limit_seats, sumber daya konkuren antrian mungkin segera habis.

Untuk mengoptimalkan konfigurasi, tingkatkan nilai 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, dan status penolakan (true atau false). Jenis operasi adalah validate, yang memeriksa validitas permintaan, atau admit, yang menentukan apakah permintaan valid diizinkan.

Ambang batas bucket: {0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

apiserver_admission_webhook_admission_duration_seconds_bucket

Histogram

Latensi pemrosesan admission webhook. Label: nama webhook, operasi (seperti CREATE, UPDATE, CONNECT), resource API, jenis operasi (admit atau validating), dan status penolakan (true atau false).

Ambang batas bucket: {0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

apiserver_admission_webhook_admission_duration_seconds_count

Counter

Permintaan yang diproses oleh admission webhook. Label: nama webhook, operasi (seperti CREATE, UPDATE, CONNECT), resource API, jenis operasi (admit atau validating), 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 resource.

  • resource: Jenis resource. Nilai yang valid: cpu dan memory.

  • utilization_level: Tingkat pemanfaatan. Nilai yang valid: high (pemanfaatan ≥ 80%) dan normal (pemanfaatan < 80%).

  • container: Kontainer target. Nilai yang valid: kube-apiserver, kube-scheduler, kube-controller-manager, cloud-controller-manager, dan etcd.

up

Gauge

Menunjukkan apakah layanan tersedia.

  • 1: Layanan tersedia.

  • 0: Layanan tidak tersedia.

Catatan

Metrik pemanfaatan resource berikut tidak lagi digunakan. Hapus semua alert atau aturan pemantauan yang bergantung pada metrik ini:

  • cpu_utilization_ratio: Pemanfaatan CPU.

  • memory_utilization_ratio: Pemanfaatan memori.

Dasbor

Dasbor dibangun dari metrik komponen dan kueri PromQL terkait.

Panel dasbor diurutkan berdasarkan penggunaan paling umum:

  1. Metrik Utama: Dapatkan ikhtisar cepat metrik kluster utama.

  2. Ikhtisar: Analisis latensi respons API Server, jumlah permintaan yang sedang berjalan, dan peristiwa throttling apa pun.

  3. Analisis Resource: Tinjau tingkat pemanfaatan resource komponen terkelola.

  4. QPS dan Latensi: Lakukan analisis multidimensi mendalam terhadap queries per second (QPS) dan waktu respons (RT).

  5. Throttling APF: Gunakan metrik APF untuk menganalisis distribusi trafik permintaan API Server, status throttling-nya, dan bottleneck kinerja sistem.

  6. Admission Controller dan Webhook: Analisis QPS dan RT admission controller serta webhook.

  7. Analisis Klien: Lakukan analisis multidimensi QPS berdasarkan klien.

Filter

Gunakan filter di atas dasbor untuk mengonfigurasi Verb, Resource, dan Quantile untuk permintaan API Server, serta interval sampling PromQL yang digunakan panel.

Kuantil 0,9 (P90) menunjukkan nilai di mana 90% sampel histogram berada di bawah atau sama dengannya, sehingga menghilangkan outlier ekor panjang. Kuantil 0,99 (P99) mencakup sampel ekor panjang.

Filters

Gunakan filter berikut untuk memilih rentang waktu dan interval refresh. Filters 2

Metrik utama

Tampilan dasbor 100

Detail 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 read requests processed

sum(apiserver_current_inflight_requests{requestKind="readOnly"})

Permintaan baca yang sedang berjalan.

Number of write requests processed

sum(apiserver_current_inflight_requests{requestKind="mutating"})

Permintaan tulis yang sedang berjalan.

Request limit rate

sum(irate(apiserver_dropped_requests_total[$interval]))

Persentase total permintaan yang dibuang oleh kebijakan throttling API server.

Ikhtisar

Tampilan dasbor 50

Detail 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 cakupan.

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

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

Number of read requests processed

apiserver_current_inflight_requests{request_kind="readOnly"}

Permintaan baca yang sedang diproses oleh API Server.

Number of write requests processed

apiserver_current_inflight_requests{request_kind="mutating"}

Permintaan tulis yang sedang diproses oleh API Server.

Request limit 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)

Tingkat pembatasan permintaan untuk API Server. No data atau 0 menunjukkan tidak ada throttling.

Analisis resource

Tampilan dasbor

image

Detail 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

  • max by(resource)(apiserver_storage_objects)

  • max by(resource)(etcd_object_counts)

  • Untuk kluster ACK yang menjalankan v1.22 atau lebih baru, nama metriknya adalah apiserver_storage_objects.

  • Untuk kluster ACK yang menjalankan v1.22 atau lebih lama, nama metriknya adalah etcd_object_counts.

Karena masalah kompatibilitas, kedua metrik apiserver_storage_objects dan etcd_object_counts ada di versi 1.22.

Tingkat pemanfaatan memori

  • resource_utilization_level{resource="memory",container="kube-apiserver",utilization_level="high"}

  • resource_utilization_level{resource="memory",container="kube-apiserver",utilization_level="normal"}

  • Jika resource_utilization_level{utilization_level="high",...} bernilai 1, tingkat pemanfaatan resource kontainer ≥ 80%.

  • Jika resource_utilization_level{utilization_level="normal",...} bernilai 1, tingkat pemanfaatan resource kontainer < 80%.

Tingkat pemanfaatan CPU

  • resource_utilization_level{resource="cpu",container="kube-apiserver",utilization_level="high"}

  • resource_utilization_level{resource="cpu",container="kube-apiserver",utilization_level="normal"}

QPS dan latensi

Tampilan dasbor 48

Detail 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

Catatan

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 add-on berikut:

    • Add-on pemantauan kluster kontainer: versi 0.06 atau lebih baru.

    • Add-on ack-arms-prometheus: v1.1.31 atau lebih baru.

    • Add-on probe terkelola: v1.1.31 atau lebih baru.

    Untuk meningkatkan add-on ini, lihat Tingkatkan komponen pemantauan.

Tampilan dasbor

image

image

Detail metrik

Beberapa metrik dalam tabel berikut dikelompokkan berdasarkan PL, Instance, dan FS.

  • PL: Dimensi Priority Level, yang mengelompokkan metrik berdasarkan level prioritas.

  • Instance: Instans API server.

  • FS: Dimensi Flow Schema, yang mengelompokkan metrik berdasarkan klasifikasi permintaan.

Untuk detail 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. Ini merepresentasikan jumlah maksimum teoretis permintaan konkuren per antrian prioritas.

apiserver_flowcontrol_request_concurrency_limit usang di Kubernetes 1.30 dan dihapus di 1.31. Untuk kluster yang menjalankan v1.31 atau lebih baru, gunakan apiserver_flowcontrol_nominal_limit_seats sebagai gantinya.

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:

  • Nominal limit seats: jumlah maksimum seat konkuren per Antrian prioritas.

  • Seats limit saat ini: jumlah maksimum seats konkuren setelah penyesuaian dinamis per antrian prioritas.

  • Seats yang sedang dieksekusi: seats yang dikonsumsi oleh permintaan yang sedang dieksekusi per antrian prioritas.

  • Seats dalam antrean: seats yang dikonsumsi oleh permintaan yang menunggu per antrian prioritas.

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_duration_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 47

Detail 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 admit.

Bucket histogram:{0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

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

Bucket histogram:{0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

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

Bucket histogram:{0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

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

Bucket histogram:{0.005, 0.025, 0.1, 0.5, 2.5}. Satuan: detik.

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 45

Detail 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 server API, dikelompokkan berdasarkan verb, resource, dan klien.

QPS of LIST requests without resourceVersion

sum(irate(apiserver_request_no_resourceversion_list_total[$interval]))by(resource,client)

  • QPS permintaan LIST yang tidak menyertakan bidang resourceVersion, dikelompokkan berdasarkan resource dan klien.

  • Analisis bagian permintaan LIST ke API Server yang mencapai etcd. Gunakan metrik ini untuk mengidentifikasi dan mengoptimalkan perilaku LIST klien.

Anomali metrik umum

Gunakan bagian berikut untuk menentukan apakah anomali metrik bersifat wajar.

Read/write request success rate

Description

Normal

Abnormal

Description

Read request success rate dan Write request success rate seharusnya mendekati 100%.

Read request success rate dan Write request success rate tetap pada persentase rendah, misalnya kurang dari 90%.

Banyak permintaan mengembalikan kode status non-2xx.

Solusi yang direkomendasikan

Periksa panel QPS of read requests with non-2xx responses dan QPS of write requests with non-2xx responses 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 perilaku ini diharapkan, lalu ambil langkah-langkah untuk mengoptimalkan permintaan tersebut.

GET/LIST read and write request latency

Description

Normal

Abnormal

Description

GET read request latency, LIST read request latency, dan Write request latency berkorelasi dengan ukuran kluster dan jumlah resource yang diakses. Tidak ada ambang batas tetap—latensi dapat diterima selama tidak memengaruhi aplikasi Anda. Misalnya, semakin besar volume resource yang diakses klien, semakin lama permintaan LIST membutuhkan waktu. Biasanya, GET read request latency dan Write request latency di bawah 1 detik, serta LIST read request latency di bawah 5 detik dianggap normal.

  • GET read request latency atau Write request latency melebihi 1 detik.

  • LIST read request latency melebihi 5 detik.

Jika latensi permintaan tinggi, periksa apakah faktor seperti jumlah resource kluster yang besar atau panggilan webhook yang lambat turut berkontribusi.

Solusi yang direkomendasikan

  • Tinjau dasbor untuk mengidentifikasi jenis permintaan dan resource dengan latensi tinggi. Periksa metrik GET read request latency, LIST read request latency, dan Write request latency, lalu ambil tindakan korektif.

    Metrik apiserver_request_duration_seconds_bucket dibatasi hingga 60 detik—permintaan yang melebihi 60 detik dicatat sebagai 60 detik. Permintaan koneksi persisten, seperti POST pod/exec atau 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.

Read/write requests processed and request limit rate

Description

Normal

Abnormal

Description

Umumnya, Number of read requests processed dan Number of write requests processed berada di bawah 100, dan Request limit rate bernilai 0.

  • Number of read requests processed atau Number of write requests processed melebihi 100.

  • Request limit rate lebih besar dari 0.

Jika antrean permintaan memiliki backlog, singkirkan faktor seperti lonjakan permintaan mendadak atau webhook yang lambat. Jika kapasitas antrean terlampaui, API server akan 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 dasbor Analisis klien untuk mengidentifikasi permintaan teratas berdasarkan volume, dan evaluasi apakah permintaan tersebut diharapkan. 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

Description

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 diharapkan. Copot pemasangan webhook yang tidak lagi diperlukan.

Referensi