Küme düğümlerini, ana bilgisayarları, konteyner çoğaltmalarını ve iş yüklerini izlemek için özel PromQL uyarı kuralları yazın.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
ACK kümeniz için Prometheus izleme etkinleştirildi. Alibaba Cloud Prometheus Monitoring (önerilir) veya open source Prometheus monitoring kullanın.
Özel PromQL ile uyarı kurallarını yapılandırma
Hem Alibaba Cloud Prometheus hem de açık kaynak Prometheus, koşullar karşılandığında bildirimleri tetikleyen özel PromQL tabanlı uyarı kurallarını destekler.
Alibaba Cloud Prometheus
Özel PromQL kullanarak bir Prometheus uyarı kuralı oluşturmak için bkz. Create a Prometheus alert rule.
Open source Prometheus
Bir uyarı bildirim ilkesi yapılandırın. Açık kaynak Prometheus; Webhook'ları, DingTalk ve e-postayı destekler. Bildirim yöntemini ack-prometheus-operator içindeki
receiverparametresi aracılığıyla ayarlayın. Bkz. Alerting configuration.-
Bir uyarı kuralı oluşturun. Kümede uyarı kurallarını tanımlamak için bir PrometheusRule CRD dağıtın (bkz. Deploying Prometheus rules). Aşağıdaki örnek, düğüm CPU kullanımı 2 dakikalık bir pencerede %90'ı aştığında tetiklenir.
expralanı PromQL ifadesini ve tetikleme koşulunu belirtir.apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: # Labels must match ruleSelector.matchLabels in the Prometheus CRD. prometheus: example role: alert-rules name: prometheus-example-rules spec: groups: - name: example.rules rules: - alert: ExampleAlert # expr: PromQL query and trigger condition. # Refer to the PromQL configuration column in the alert rule tables below. expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 90 -
Uyarı kuralının etkin olduğunu doğrulayın.
Prometheus hizmetini yerel makinenizdeki 9090 bağlantı noktasına yönlendirmek için aşağıdaki komutu çalıştırın:
kubectl port-forward svc/ack-prometheus-operator-prometheus 9090:9090 -n monitoringTarayıcınızda
localhost:9090adresini açın.Status > Rules seçeneğini belirleyin. Uyarı kuralı Rules sayfasında görünüyorsa kural etkindir.
Uyarı kuralı başvurusu
ACK, O&M deneyimine dayalı olarak önerilen uyarı kuralları sağlar; bu kurallar küme kararlılığını, düğüm ve ana bilgisayar kaynak kullanımını, konteyner çoğaltmalarını, iş yüklerini, depolamayı ve ağ iletişimini kapsar.
Önem düzeyleri:
Critical: Kümeyi, uygulamayı veya iş süreçlerini etkiler. Acil eylem gerektirir.
Warning: Kümeyi, uygulamayı veya iş süreçlerini etkiler. Derhal araştırılmalıdır.
Normal: Önemli bir özellik değişikliğini gösterir.
Giriş noktası olarak Rule description sütunu, Alert Rules sekmesini ve Alerts sayfasını kullanır. Erişmek için: ACK console üzerinde oturum açın, Clusters listesinde kümenizi tıklayın, ardından Operations > Alerts > Alert Rules seçeneğini belirleyin.
Anormal konteyner çoğaltmaları
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Anormal pod durumu | Critical | min_over_time(sum by (namespace, pod, phase) (kube_pod_status_phase{phase=~"Pending|Unknown|Failed"})[5m:1m]) > 0 |
> 0 | 5 min | Bir pod 5 dakika boyunca Pending, Unknown veya Failed durumunda kaldığında tetiklenir. Alert Rule Set for Pod Exceptions > Pod anomaly yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Bkz. Troubleshoot pod exceptions. |
| Pod başlatma hatası | Critical | sum_over_time(increase(kube_pod_container_status_restarts_total{}[1m])[5m:1m]) > 3 |
> 3 restarts | 5 min | Bir pod 5 dakika içinde 3 defadan fazla yeniden başlatıldığında tetiklenir. Alert Rule Set for Pod Exceptions > Pod startup failures yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Bkz. Troubleshoot pod exceptions. |
| 10 dakika boyunca sürekli olarak 1.000'den fazla pod zamanlanamadı | Critical | count((min_over_time(kube_pod_status_phase{phase="Pending"}[10m]) == 1) and (count_over_time(kube_pod_status_phase{phase="Pending"}[10m:15s]) >= (10 * 4 - 1))) > 1000 |
> 1,000 pods | 10 min | Zamanlama hataları nedeniyle 1.000'den fazla pod 10 dakikadan uzun süre Pending durumunda kaldığında tetiklenir. | Aşırı zamanlama baskısını gösterebilir. ACK Pro Edition, geliştirilmiş zamanlama ve bir SLA sağlar. Bkz. Overview of ACK managed cluster Pro Edition. |
| Sık konteyner CPU kısıtlaması | Warning | rate(container_cpu_cfs_throttled_seconds_total[3m]) * 100 > 25 |
> %25 throttled time | 3 min | 3 dakika içinde kısıtlanan CPU süresi %25'i aştığında tetiklenir. Kısıtlama, zaman dilimlerini azaltarak işlem çalışma süresini artırır ve uygulama mantığını yavaşlatır. | Pod CPU resource limit değerinin çok düşük olup olmadığını kontrol edin. CPU Burst policy ile kısıtlamayı azaltın. Çok çekirdekli düğümlerde, parçalı CPU kaynaklarını en üst düzeye çıkarmak için CPU topology-aware scheduling kullanın. |
| Pod CPU kullanımı sınırın %85'inden yüksek | Warning | (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 |
>= pod sınırının %85'i | 1 min | Pod CPU'su sınırının %85'ini aştığında tetiklenir. Yapılandırılmış bir sınır yoksa etkisi yoktur. Varsayılan eşik: %85 — ihtiyaca göre ayarlayın. Filtrelemek için pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*" ifadelerini gerçek değerlerle değiştirin; tüm pod'ları sorgulamak için filtreyi kaldırın. |
Yüksek CPU kullanımı kısıtlamalara neden olur ve zaman dilimlerini azaltır. CPU resource limit değerinin çok düşük olup olmadığını kontrol edin. Bkz. Enable the CPU Burst policy ve Enable CPU topology-aware scheduling. |
| Pod bellek kullanımı sınırın %85'inden yüksek | Warning | ((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 |
>= pod sınırının %85'i | — | Pod belleği sınırının %85'ini aştığında tetiklenir. Yapılandırılmış bir sınır yoksa etkisi yoktur. Varsayılan eşik: %85 — ihtiyaca göre ayarlayın. | Yüksek bellek kullanımı OOM sonlandırmalarını ve pod yeniden başlatmalarını tetikleyebilir. Bellek resource limit değerinin çok düşük olup olmadığını kontrol edin. Resource profiling ile sınırları doğru boyutlandırın. |
Anormal iş yükleri
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Deployment çoğaltma uyumsuzluğu | Critical | kube_deployment_spec_replicas{} != kube_deployment_status_replicas_available{} |
Any mismatch | — | Kullanılabilir Deployment çoğaltmaları istenen sayıyla eşleşmediğinde tetiklenir. Alert Rule Set for Workload Exceptions > Deployment pod anomaly yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Bkz. Troubleshoot pod exceptions. |
| DaemonSet çoğaltma uyumsuzluğu | Critical | ((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 |
> 0 | — | Kullanılabilir DaemonSet çoğaltmaları istenen sayıyla eşleşmediğinde tetiklenir. Alert Rule Set for Workload Exceptions > DaemonSet pod anomaly yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Bkz. Troubleshoot pod exceptions. |
| DaemonSet zamanlama hatası | Critical | kube_daemonset_status_number_misscheduled{job} > 0 |
> 0 | — | Bir DaemonSet çoğaltması yanlış bir düğümde çalıştığında tetiklenir. Alert Rule Set for Workload Exceptions > DaemonSet pod scheduling errors yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Bkz. Troubleshoot pod exceptions. |
| Job başarısız oldu | Critical | kube_job_status_failed{} > 0 |
> 0 | — | Bir Job başarısız olduğunda tetiklenir. Alert Rule Set for Workload Exceptions > Job execution failures yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Hata ayrıntıları için başarısız pod günlüklerini kontrol edin. Bkz. Troubleshoot pod exceptions. |
Depolama istisnaları
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| PersistentVolume (PV) durumu anormal | Critical | kube_persistentvolume_status_phase{phase=~"Failed|Pending"} > 0 |
> 0 | — | Bir PV Failed veya Pending durumuna geçtiğinde tetiklenir. Alert Rule Set for Storage Exceptions > PV anomaly yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Disk takma bölümüne bakın FAQ about disk PVs. |
| Ana bilgisayar disk kullanımı > %85 | Critical | (100 - node_filesystem_avail_bytes / node_filesystem_size_bytes * 100) >= 85 |
>= %85 | — | Düğüm disk boş alanı %15'in altına düştüğünde tetiklenir. Alert Rule Set for Resource Exceptions > Node - Disk usage >= 85% yoluyla yapılandırın. Bkz. Manage alerts in ACK. | Düğümü ölçeklendirin veya diski genişletin. Bkz. FAQ about disk PVs. |
Anormal düğüm durumu
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Düğüm 3 dakika boyunca NotReady durumunda | Critical | (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 |
> 0 | 3 min | Bir düğüm 3 dakika boyunca NotReady durumunda kaldığında tetiklenir. Alert Rule Set for Node Exceptions > Node changes to the unschedulable state yoluyla yapılandırın. Bkz. Manage alerts in ACK. | NotReady durumunun beklenen olup olmadığını belirleyin (örneğin, düğüm değişimi veya bakım). Beklenmiyorsa, uygulama pod'larının etkilenip etkilenmediğini kontrol edin ve gerekirse tahliye edin. Bellek baskısı veya dolu disk gibi nedenler için düğüm koşullarını kontrol edin. |
Anormal ana bilgisayar kaynak kullanımı
Ana bilgisayar kaynak ölçümleri, fiziksel veya sanal makine kaynaklarını ölçer. Kullanım = tüm işlemlerin kaynak kullanımı / maksimum ana bilgisayar kapasitesi.
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Ana bilgisayar bellek kullanımı > %85 | Warning | (100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 85 |
>= %85 | — |
Ana bilgisayar bellek kullanımı %85'i aştığında tetiklenir.
Alert Rule Set for Resource Exceptions
>
Node - Memory usage >= 85%
yoluyla yapılandırın. Bkz.
Manage alerts in ACK
. Varsayılan eşik: %85 — ihtiyaca göre ayarlayın.
Not
ACK uyarı kuralları Cloud Monitor tarafından sağlanır ve ölçümler Prometheus kurallarıyla tutarlıdır. |
Kaynakları serbest bırakın: pod kaynak tahsisini cost analysis ile kontrol edin ve bellek isteklerini resource profiling ile doğru boyutlandırın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Ana bilgisayar bellek kullanımı > %90 | Critical | (100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 90 |
>= %90 | — | Ana bilgisayar bellek kullanımı %90'ı aştığında tetiklenir. | cost analysis ve resource profiling ile kaynakları serbest bırakın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Ana bilgisayar CPU kullanımı > %85 | Warning | 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 85 |
>= %85 | 2 min |
Ana bilgisayar CPU kullanımı %85'i aştığında tetiklenir.
Alert Rule Set for Resource Exceptions
>
Node - CPU usage >= 85%
yoluyla yapılandırın.
Not
ACK, CloudMonitor ECS ölçümlerini kullanır ve bu Prometheus kuralına eşdeğerdir. Varsayılan eşik: %85 — ihtiyaca göre ayarlayın. Bkz. Manage alerts in ACK. |
cost analysis ve resource profiling ile kaynakları serbest bırakın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Ana bilgisayar CPU kullanımı > %90 | Critical | 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 90 |
>= %90 | 2 min | Ana bilgisayar CPU kullanımı %90'ı aştığında tetiklenir. | cost analysis ve resource profiling ile kaynakları serbest bırakın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
Anormal düğüm kaynakları
Düğüm kaynak ölçümleri, fiziksel makine kapasitesini değil, konteyner kaynak tüketimini düğümün atanabilir kapasitesine göre ölçer.
Tüketilen kaynaklar (pay) : Çalışan set belleği, sayfa önbelleği ve daha fazlası dahil olmak üzere düğümdeki tüm konteynerlerin toplam kaynakları.
Atanabilir kaynaklar (payda) : Düğüm rezervasyonları düşüldükten sonra konteynerler için kullanılabilen kaynaklar. Bkz. Node resource reservation policy .
Pod zamanlama, gerçek kullanıma değil kaynak isteklerine dayanır.
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Düğüm CPU kullanımı > %85 | Warning | sum(irate(container_cpu_usage_seconds_total{pod!=""}[1m])) by (node) / sum(kube_node_status_allocatable{resource="cpu"}) by (node) * 100 >= 85 |
>= %85 | 1 min | Düğüm CPU kullanımı atanabilir kaynakların %85'ini aştığında tetiklenir. Formül: Düğüm kaynak kullanımı / Düğümdeki toplam atanabilir kaynaklar. | Pod'ları düğümler arasında dağıtmak için cost analysis ve resource profiling ile kaynakları serbest bırakın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Düğüm CPU kaynak tahsis oranı > %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 | — | CPU kaynak tahsis oranı atanabilir kaynakların %85'ini aştığında tetiklenir. Formül: Zamanlanan pod'ların toplam kaynak istekleri / Düğümdeki toplam atanabilir kaynaklar. | Daha fazla pod zamanlamak için yetersiz kaynak. cost analysis ve resource profiling ile kaynak israfını (gerçek kullanımın isteklerin çok altında olması) kontrol edin. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Düğüm CPU aşırı satım oranı > %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 | — | CPU aşırı satım oranı atanabilir kaynakların %300'ünü aştığında tetiklenir. Formül: Zamanlanan pod'ların toplam kaynak sınırları / Düğümdeki toplam atanabilir kaynaklar. %300 eşiği önerilen varsayılandır — ihtiyaca göre ayarlayın. | Toplam CPU sınırları, atanabilir kaynakları çok fazla aşar. Trafik zirvelerinde rekabet ve kısıtlama yanıtları yavaşlatabilir. cost analysis ve resource profiling ile CPU isteklerini ve sınırlarını doğru boyutlandırın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Düğüm bellek kullanımı > %85 | Warning | sum(container_memory_working_set_bytes{pod!=""}) by (node) / sum(kube_node_status_allocatable{resource="memory"}) by (node) * 100 >= 85 |
>= %85 | — | Düğüm bellek kullanımı atanabilir kaynakların %85'ini aştığında tetiklenir. Formül: Düğüm kaynak kullanımı / Düğümdeki toplam atanabilir kaynaklar. | Pod'ları düğümler arasında dağıtmak için cost analysis ve resource profiling ile kaynakları serbest bırakın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Düğüm bellek kaynak tahsis oranı > %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 | — | Bellek kaynak tahsis oranı atanabilir kaynakların %85'ini aştığında tetiklenir. Formül: Zamanlanan pod'ların toplam kaynak istekleri / Düğümdeki toplam atanabilir kaynaklar. | Daha fazla pod zamanlamak için yetersiz kaynak. cost analysis ve resource profiling ile kaynak israfını (gerçek kullanımın isteklerin çok altında olması) kontrol edin. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
| Düğüm bellek aşırı satım oranı > %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 | — | Bellek aşırı satım oranı atanabilir kaynakların %300'ünü aştığında tetiklenir. Formül: Zamanlanan pod'ların toplam kaynak sınırları / Düğümdeki toplam atanabilir kaynaklar. %300 eşiği önerilen varsayılandır — ihtiyaca göre ayarlayın. | Toplam bellek sınırları, atanabilir kaynakları çok fazla aşar. Trafik zirvelerinde bellek düğüm sınırına ulaşabilir ve iş yüklerini bozan OOM sonlandırmalarını tetikleyebilir. cost analysis ve resource profiling ile bellek isteklerini ve sınırlarını doğru boyutlandırın. Düğümleri ölçeklendirin — bkz. Scale nodes in an ACK cluster. |
Ağ istisnaları
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| CoreDNS istek sayısı sıfıra düşer | Critical | (sum(rate(coredns_dns_request_count_total{}[1m]))by(server,zone)<=0) or (sum(rate(coredns_dns_requests_total{}[1m]))by(server,zone)<=0) |
<= 0 | 1 min | Yalnızca ACK yönetilen kümelerde (Pro ve Basic sürümler) tespit edilebilir. | Kümedeki CoreDNS pod'larının normal çalışıp çalışmadığını kontrol edin. |
| CoreDNS panik istisnası | Critical | sum(rate(coredns_panic_count_total{}[3m])) > 0 |
> 0 | 3 min | Yalnızca ACK yönetilen kümelerde (Pro ve Basic sürümler) tespit edilebilir. | Kümedeki CoreDNS pod'larının normal çalışıp çalışmadığını kontrol edin. |
| Ingress denetleyicisi sertifikası 14 gün içinde sona eriyor | Warning | ((nginx_ingress_controller_ssl_expire_time_seconds - time()) / 24 / 3600) < 14 |
< 14 days | — | Ingress özelliği etkinleştirilmiş şekilde ACK Ingress denetleyicisi bileşeninin yüklü olmasını gerektirir. | Ingress denetleyicisi sertifikasını yeniden verin. |
Otomatik Ölçeklendirme istisnaları
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| HPA çoğaltma sayısı maksimumda | Warning | max(kube_horizontalpodautoscaler_spec_max_replicas) by (namespace, horizontalpodautoscaler) - max(kube_horizontalpodautoscaler_status_current_replicas) by (namespace, horizontalpodautoscaler) <= 0 |
<= 0 difference | — |
HPA mevcut çoğaltmaları yapılandırılan maksimum değere ulaştığında tetiklenir.
Not
Önce Alibaba Cloud Prometheus'ta |
HPA ilkesinin beklentileri karşılayıp karşılamadığını kontrol edin. İş yükü yüksek kalıyorsa maxReplicas değerini artırın veya uygulama performansını optimize edin. |
Sonraki adımlar
Konsoldan veya API'den Prometheus verilerini sorgulayın: Query Prometheus monitoring data using PromQL.
Konteyner ağ sorunlarını bulun: Use KubeSkoop to locate network issues.
Yaygın Alibaba Cloud Prometheus sorunları: Observability FAQ