All Products
Search
Document Center

Container Service for Kubernetes:Mengonfigurasi aturan peringatan menggunakan Prometheus

Last Updated:Mar 26, 2026

Kluster ACK mendukung Prometheus Alibaba Cloud dan Prometheus open source. Jika metrik yang telah dikonfigurasi sebelumnya tidak mencakup kebutuhan pemantauan Anda, tulis ekspresi PromQL kustom untuk membuat aturan peringatan bagi node kluster, host, replika kontainer, dan workload. Aturan peringatan dipicu ketika suatu metrik melewati ambang batas atau kondisi tertentu terpenuhi.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Mengonfigurasi aturan peringatan dengan PromQL kustom

Baik Prometheus Alibaba Cloud maupun Prometheus open source mendukung aturan peringatan berbasis PromQL kustom. Ketika kondisi aturan peringatan terpenuhi, sistem akan menghasilkan event peringatan dan mengirimkan notifikasi.

Prometheus Alibaba Cloud

Untuk membuat aturan peringatan Prometheus menggunakan PromQL kustom, lihat Buat aturan peringatan Prometheus.

Prometheus open source

  1. Konfigurasikan kebijakan notifikasi peringatan. Prometheus open source mendukung webhook, robot DingTalk, dan email. Tetapkan metode notifikasi dengan mengonfigurasi parameter receiver pada aplikasi ack-prometheus-operator. Untuk detailnya, lihat Konfigurasi peringatan.

  2. Buat aturan peringatan. Terapkan Custom Resource Definition (CRD) PrometheusRule di kluster untuk menentukan aturan peringatan. Sebagai referensi, lihat Menyebarkan aturan Prometheus. Contoh berikut memicu peringatan ketika penggunaan CPU node melebihi 90% dalam jendela waktu 2 menit. Bidang expr menentukan ekspresi PromQL dan kondisi pemicu untuk setiap aturan peringatan.

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      labels:
        # Label harus sesuai dengan ruleSelector.matchLabels di CRD Prometheus.
        prometheus: example
        role: alert-rules
      name: prometheus-example-rules
    spec:
      groups:
      - name: example.rules
        rules:
        - alert: ExampleAlert
          # expr: Kueri PromQL dan kondisi pemicu.
          # Lihat kolom konfigurasi PromQL pada tabel aturan peringatan di bawah ini.
          expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 90
  3. Verifikasi bahwa aturan peringatan aktif.

    1. Teruskan layanan Prometheus ke port 9090 pada mesin lokal Anda: ``bash kubectl port-forward svc/ack-prometheus-operator-prometheus 9090:9090 -n monitoring ``

    2. Buka localhost:9090 di browser Anda.

    3. Di bagian atas halaman, pilih Status > Rules. Jika aturan peringatan target muncul di halaman Rules, artinya aturan tersebut aktif.

Referensi aturan peringatan

Berdasarkan pengalaman operasi dan pemeliharaan (O&M) lintas kluster dan aplikasi, ACK menyediakan konfigurasi aturan peringatan Prometheus yang direkomendasikan berikut. Aturan ini mencakup stabilitas kluster, anomali node, penggunaan resource node, anomali replika kontainer, anomali workload, pengecualian penyimpanan, dan pengecualian jaringan.

Aturan peringatan menggunakan tingkat keparahan berikut:

  • Critical: Masalah ini memengaruhi kluster, aplikasi, atau bisnis Anda. Memerlukan penanganan segera.

  • Warning: Masalah ini memengaruhi kluster, aplikasi, atau bisnis Anda. Segera selidiki.

  • Normal: Peringatan ini terkait dengan perubahan fitur penting.

Kolom Rule description merujuk pada tab Alert Rules di halaman Alerts sebagai titik masuk operasi. Untuk memperbarui aturan peringatan, login ke Konsol Container Service for Kubernetes (ACK), klik nama kluster target dalam daftar Clusters, pilih Operations > Alerts di panel navigasi kiri, lalu klik tab Alert Rules.

Replika kontainer abnormal

DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Status Pod abnormalCriticalmin_over_time(sum by (namespace, pod, phase) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[5m:1m]) > 0> 05 menitDipicu jika sebuah Pod memiliki status abnormal (Pending, Unknown, atau Failed) dalam 5 menit terakhir. Di titik masuk operasi, klik Alert Rule Set for Pod Exceptions dan konfigurasikan aturan peringatan Pod anomaly. Lihat Kelola peringatan di ACK.Lihat Troubleshoot pod exceptions.
Startup Pod gagalCriticalsum_over_time(increase(kube_pod_container_status_restarts_total{}[1m])[5m:1m]) > 3> 3 kali restart5 menitDipicu jika sebuah Pod gagal startup lebih dari 3 kali dalam 5 menit terakhir. Di titik masuk operasi, klik Alert Rule Set for Pod Exceptions dan konfigurasikan aturan peringatan Pod startup failures. Lihat Kelola peringatan di ACK.Lihat Troubleshoot pod exceptions.
Lebih dari 1.000 Pod gagal dijadwalkanCriticalsum(sum(max_over_time(kube_pod_status_phase{phase=~"Pending"}[5m])) by (pod)) > 1000> 1.000 Pod5 menitDipicu ketika lebih dari 1.000 Pod berada dalam status Pending akibat kegagalan penjadwalan dalam 5 menit terakhir.Hal ini dapat mengindikasikan tekanan penjadwalan berlebihan pada kluster berskala besar. Kluster ACK yang dikelola Edisi Pro menyediakan fitur penjadwalan yang ditingkatkan dan SLA (Perjanjian Tingkat Layanan). Lihat Ikhtisar Kluster ACK yang Dikelola Edisi Pro.
Throttling CPU kontainer sering terjadiWarningrate(container_cpu_cfs_throttled_seconds_total[3m]) * 100 > 25> 25% waktu throttled3 menitDipicu ketika waktu CPU yang dibatasi (throttled) melebihi 25% dari total waktu CPU dalam 3 menit terakhir. Throttling CPU mengurangi alokasi time slice ke proses, yang dapat meningkatkan waktu proses dan memperlambat logika aplikasi.Periksa apakah resource limit CPU untuk Pod terlalu rendah. Gunakan kebijakan CPU Burst untuk mengurangi throttling — lihat Aktifkan kebijakan CPU Burst. Pada node multi-core, gunakan penjadwalan yang sadar topologi CPU untuk memaksimalkan sumber daya CPU terfragmentasi — lihat Aktifkan penjadwalan yang sadar topologi CPU.
Penggunaan CPU Pod > 85% dari limitWarning(sum(irate(container_cpu_usage_seconds_total{pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*",container!="",container!="POD"}[1m])) by (namespace,pod) / sum(container_spec_cpu_quota{pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*",container!="",container!="POD"}/100000) by (namespace,pod) * 100 <= 100 or on() vector(0)) >= 85>= 85% dari limit Pod1 menitDipicu ketika penggunaan CPU Pod melebihi 85% dari limit-nya dalam namespace tertentu atau untuk Pod tertentu. Tidak berpengaruh jika Pod tidak memiliki limit yang dikonfigurasi. Ambang batas 85% adalah nilai default yang direkomendasikan — sesuaikan bila perlu. Untuk memfilter berdasarkan Pod atau namespace, ganti pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*" dengan nilai aktual; hapus filter untuk mengkueri semua Pod.Penggunaan CPU tinggi dapat menyebabkan throttling dan mengurangi alokasi time slice. Periksa apakah resource limit CPU terlalu rendah. Lihat Aktifkan kebijakan CPU Burst dan Aktifkan penjadwalan yang sadar topologi CPU.
Penggunaan memori Pod > 85% dari limitWarning((sum(container_memory_working_set_bytes{pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*",container!="",container!="POD"}) by (pod,namespace) / sum(container_spec_memory_limit_bytes{pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*",container!="",container!="POD"}) by (pod, namespace) * 100) <= 100 or on() vector(0)) >= 85>= 85% dari limit PodDipicu ketika penggunaan memori Pod melebihi 85% dari limit-nya. Tidak berpengaruh jika Pod tidak memiliki limit yang dikonfigurasi. Ambang batas 85% adalah nilai default yang direkomendasikan — sesuaikan bila perlu.Penggunaan memori tinggi dapat menyebabkan Pod dihentikan oleh OOM (out-of-memory) killer, sehingga mengakibatkan restart. Periksa apakah resource limit memori terlalu rendah. Gunakan fitur profiling resource untuk menetapkan limit memori yang sesuai — lihat Resource profiling.

Workload abnormal

DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Ketidaksesuaian replika DeploymentCriticalkube_deployment_spec_replicas{} != kube_deployment_status_replicas_available{}Ada ketidaksesuaianDipicu ketika jumlah replika yang tersedia untuk Deployment tidak sesuai dengan jumlah yang diinginkan. Di titik masuk operasi, klik Alert Rule Set for Workload Exceptions dan atur aturan peringatan Deployment pod anomaly. Lihat Kelola peringatan di ACK.Lihat Troubleshoot pod exceptions.
Ketidaksesuaian replika DaemonSetCritical((100 - kube_daemonset_status_number_ready{} / kube_daemonset_status_desired_number_scheduled{} * 100) or (kube_daemonset_status_desired_number_scheduled{} - kube_daemonset_status_current_number_scheduled{})) > 0> 0Dipicu ketika jumlah replika yang tersedia untuk DaemonSet tidak sesuai dengan jumlah yang diinginkan. Di titik masuk operasi, klik Alert Rule Set for Workload Exceptions dan atur aturan peringatan DaemonSet pod anomaly. Lihat Kelola peringatan di ACK.Lihat Troubleshoot pod exceptions.
Error penjadwalan DaemonSetCriticalkube_daemonset_status_number_misscheduled{job} > 0> 0Dipicu ketika replika DaemonSet dijadwalkan ke node tempat seharusnya tidak dijalankan. Di titik masuk operasi, klik Alert Rule Set for Workload Exceptions dan atur aturan peringatan DaemonSet pod scheduling errors. Lihat Kelola peringatan di ACK.Lihat Troubleshoot pod exceptions.
Job gagalCriticalkube_job_status_failed{} > 0> 0Dipicu ketika Job gagal dieksekusi. Di titik masuk operasi, klik Alert Rule Set for Workload Exceptions dan atur aturan peringatan Job execution failures. Lihat Kelola peringatan di ACK.Periksa log Pod yang gagal di bawah Job untuk mendapatkan detail error. Lihat Troubleshoot pod exceptions.

Pengecualian penyimpanan

DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Status PersistentVolume (PV) abnormalCriticalkube_persistentvolume_status_phase{phase=~"Failed|Pending"} > 0> 0Dipicu ketika PV memasuki status Failed atau Pending. Di titik masuk operasi, klik Alert Rule Set for Storage Exceptions dan atur aturan peringatan PV anomaly. Lihat Kelola peringatan di ACK.Lihat bagian pemasangan disk di FAQ tentang disk PV.
Penggunaan disk host > 85%Critical(100 - node_filesystem_avail_bytes / node_filesystem_size_bytes * 100) >= 85>= 85%Dipicu ketika ruang kosong pada perangkat blok disk node kurang dari 10%. Di titik masuk operasi, klik Alert Rule Set for Resource Exceptions dan atur aturan peringatan Node - Disk usage >= 85%. Lihat Kelola peringatan di ACK.Lakukan scale out node atau perluas disk-nya. Lihat FAQ tentang disk PV.

Status node abnormal

DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Node NotReady selama 3 menitCritical(sum(max_over_time(kube_node_status_condition{condition="Ready",status="true"}[3m]) <= 0) by (node)) or (absent(kube_node_status_condition{condition="Ready",status="true"})) > 0> 03 menitDipicu ketika node kluster tetap dalam status NotReady selama 3 menit. Di titik masuk operasi, klik Alert Rule Set for Node Exceptions dan atur aturan peringatan Node changes to the unschedulable state. Lihat Kelola peringatan di ACK.Tentukan apakah status NotReady tersebut diharapkan (misalnya, penggantian node atau maintenance terencana). Jika tidak diharapkan, periksa apakah Pod aplikasi terpengaruh dan evakuasi jika perlu. Periksa kondisi node untuk penyebab umum seperti tekanan memori atau disk penuh.

Penggunaan resource host abnormal

Metrik resource host mengukur sumber daya pada mesin fisik atau virtual tempat node berjalan. Penggunaan = (penggunaan resource semua proses pada host) / (kapasitas maksimum host).
DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Penggunaan memori host > 85%Warning(100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 85>= 85%Dipicu ketika penggunaan memori host melebihi 85%. Di titik masuk operasi, klik Alert Rule Set for Resource Exceptions dan konfigurasikan aturan peringatan Node - Memory usage >= 85%. Lihat Kelola peringatan di ACK. Ambang batas 85% adalah nilai default yang direkomendasikan — sesuaikan bila perlu.
Catatan

Aturan dalam konfigurasi peringatan ACK disediakan oleh Cloud Monitor, dan metriknya konsisten dengan metrik aturan Prometheus yang sesuai.

Lepaskan resource: gunakan fitur analisis biaya untuk memeriksa apakah Pod secara tidak wajar menduduki resource yang dapat dijadwalkan (lihat Aktifkan fitur analisis biaya), dan gunakan profiling resource untuk menyesuaikan permintaan memori (lihat Resource profiling). Rencanakan kapasitas dan lakukan scale out node — lihat Scale node di kluster ACK.
Penggunaan memori host > 90%Critical(100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 90>= 90%Dipicu ketika penggunaan memori host melebihi 90%.Lepaskan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Penggunaan CPU host > 85%Warning100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 85>= 85%2 menitDipicu ketika penggunaan CPU host melebihi 85%. Di titik masuk operasi, klik Alert Rule Set for Resource Exceptions dan konfigurasikan aturan peringatan Node - CPU usage >= 85%.
Catatan

Aturan dalam konfigurasi peringatan ACK menggunakan metrik pemantauan ECS CloudMonitor, yang setara dengan metrik aturan Prometheus ini. Ambang batas 85% adalah nilai default yang direkomendasikan — sesuaikan bila perlu. Lihat Kelola peringatan di ACK.

Lepaskan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Penggunaan CPU host > 90%Critical100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 90>= 90%2 menitDipicu ketika penggunaan CPU host melebihi 90%.Lepaskan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.

Resource node abnormal

Metrik resource node mengukur konsumsi resource kontainer relatif terhadap kapasitas alokasi node, bukan kapasitas mesin fisik.
Resource yang digunakan (pembilang): Total resource yang digunakan oleh semua kontainer pada node, termasuk memori working set, page cache yang dialokasikan ke kontainer, dan lainnya.
Resource yang dapat dialokasikan (penyebut): Resource yang tersedia untuk kontainer setelah mengurangi resource yang dicadangkan untuk node (lapisan engine kontainer). Lihat Kebijakan pemesanan resource node.
Penjadwalan Pod didasarkan pada permintaan resource, bukan penggunaan aktual.
DeskripsiTingkat KeparahanPromQLAmbang BatasJendelaDeskripsi AturanPenyelesaian Masalah Umum
Penggunaan CPU node > 85%Warningsum(irate(container_cpu_usage_seconds_total{pod!=""}[1m])) by (node) / sum(kube_node_status_allocatable{resource="cpu"}) by (node) * 100 >= 85>= 85%1 menitDipicu ketika penggunaan CPU node melebihi 85% dari resource yang dapat dialokasikan. Rumus: Penggunaan resource node / Total resource yang dapat dialokasikan pada node.Lepaskan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource untuk mendistribusikan Pod ke beberapa node (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Tingkat alokasi resource CPU node > 85%Normal(sum(sum(kube_pod_container_resource_requests{resource="cpu"}) by (pod, node) * on (pod) group_left max(kube_pod_status_ready{condition="true"}) by (pod, node)) by (node)) / sum(kube_node_status_allocatable{resource="cpu"}) by (node) * 100 >= 85>= 85%Dipicu ketika tingkat alokasi resource CPU melebihi 85% dari resource yang dapat dialokasikan. Rumus: Total permintaan resource Pod yang dijadwalkan / Total resource yang dapat dialokasikan pada node.Node memiliki resource tidak mencukupi untuk menjadwalkan Pod tambahan. Periksa adanya pemborosan resource di mana penggunaan aktual jauh di bawah permintaan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Tingkat oversold CPU node > 300%Warning(sum(sum(kube_pod_container_resource_limits{resource="cpu"}) by (pod, node) * on (pod) group_left max(kube_pod_status_ready{condition="true"}) by (pod, node)) by (node)) / sum(kube_node_status_allocatable{resource="cpu"}) by (node) * 100 >= 300>= 300%Dipicu ketika tingkat oversold CPU melebihi 300% dari resource yang dapat dialokasikan. Rumus: Total limit resource Pod yang dijadwalkan / Total resource yang dapat dialokasikan pada node. Ambang batas 300% adalah nilai default yang direkomendasikan — sesuaikan bila perlu.Total limit CPU pada node jauh melebihi resource yang dapat dialokasikan. Selama puncak trafik, konflik sumber daya dan throttling dapat memperlambat respons proses. Gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource untuk menyesuaikan permintaan dan limit CPU (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Penggunaan memori node > 85%Warningsum(container_memory_working_set_bytes{pod!=""}) by (node) / sum(kube_node_status_allocatable{resource="memory"}) by (node) * 100 >= 85>= 85%Dipicu ketika penggunaan memori node melebihi 85% dari resource yang dapat dialokasikan. Rumus: Penggunaan resource node / Total resource yang dapat dialokasikan pada node.Lepaskan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource untuk mendistribusikan Pod ke beberapa node (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Tingkat alokasi resource memori node > 85%Normal(sum(sum(kube_pod_container_resource_requests{resource="memory"}) by (pod, node) * on (pod) group_left max(kube_pod_status_ready{condition="true"}) by (pod, node)) by (node)) / sum(kube_node_status_allocatable{resource="memory"}) by (node) * 100 >= 85>= 85%Dipicu ketika tingkat alokasi resource memori melebihi 85% dari resource yang dapat dialokasikan. Rumus: Total permintaan resource Pod yang dijadwalkan / Total resource yang dapat dialokasikan pada node.Node memiliki resource tidak mencukupi untuk menjadwalkan Pod tambahan. Periksa adanya pemborosan resource di mana penggunaan aktual jauh di bawah permintaan resource: gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.
Tingkat oversold memori node > 300%Warning(sum(sum(kube_pod_container_resource_limits{resource="memory"}) by (pod, node) * on (pod) group_left max(kube_pod_status_ready{condition="true"}) by (pod, node)) by (node)) / sum(kube_node_status_allocatable{resource="memory"}) by (node) * 100 >= 300>= 300%Dipicu ketika tingkat oversold memori melebihi 300% dari resource yang dapat dialokasikan. Rumus: Total limit resource Pod yang dijadwalkan / Total resource yang dapat dialokasikan pada node. Ambang batas 300% adalah nilai default yang direkomendasikan — sesuaikan bila perlu.Total limit memori pada node jauh melebihi resource yang dapat dialokasikan. Selama puncak trafik, memori dapat mencapai batas node, memicu event OOM yang menghentikan proses dan mengganggu workload. Gunakan fitur analisis biaya (lihat Aktifkan fitur analisis biaya) dan profiling resource untuk menyesuaikan permintaan dan limit memori (lihat Resource profiling). Lakukan scale out node — lihat Scale node di kluster ACK.

Pengecualian jaringan

DeskripsiTingkat KeparahanPromQLAmbang BatasJendelaDeskripsi aturanPenyelesaian masalah umum
Jumlah request CoreDNS turun menjadi nolCritical(sum(rate(coredns_dns_request_count_total{}[1m]))by(server,zone)<=0) or (sum(rate(coredns_dns_requests_total{}[1m]))by(server,zone)<=0)<= 01 menitHanya dapat dideteksi di kluster ACK yang dikelola (edisi Pro dan Basic).Periksa apakah Pod CoreDNS di kluster berjalan normal.
Exception panic CoreDNSCriticalsum(rate(coredns_panic_count_total{}[3m])) > 0> 03 menitHanya dapat dideteksi di kluster ACK yang dikelola (edisi Pro dan Basic).Periksa apakah Pod CoreDNS di kluster berjalan normal.
Sertifikat controller Ingress akan kedaluwarsa dalam 14 hariWarning((nginx_ingress_controller_ssl_expire_time_seconds - time()) / 24 / 3600) < 14< 14 hariMemerlukan komponen controller Ingress ACK untuk diinstal dengan fitur Ingress diaktifkan.Terbitkan ulang sertifikat controller Ingress.

Pengecualian Auto Scaling

DeskripsiTingkat KeparahanPromQLAmbang BatasWindowDeskripsi aturanPenyelesaian masalah umum
Jumlah replika HPA mencapai maksimumWarningmax(kube_horizontalpodautoscaler_spec_max_replicas) by (namespace, horizontalpodautoscaler) - max(kube_horizontalpodautoscaler_status_current_replicas) by (namespace, horizontalpodautoscaler) <= 0<= 0 selisihDipicu ketika jumlah replika Horizontal Pod Autoscaler (HPA) saat ini mencapai maksimum yang dikonfigurasi.
Catatan

Aktifkan metrik terkait horizontalpodautoscaler terlebih dahulu di Prometheus Alibaba Cloud — metrik ini dinonaktifkan secara default dan gratis.

Periksa apakah kebijakan HPA sesuai ekspektasi Anda. Jika beban kerja tetap tinggi, tingkatkan nilai maxReplicas atau optimalkan performa aplikasi.

Langkah berikutnya