Rédigez des règles d'alerte PromQL personnalisées pour surveiller les nœuds de cluster, les hôtes, les réplicas de conteneurs et les charges de travail.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Activé la surveillance Prometheus pour votre cluster ACK. Utilisez Alibaba Cloud Prometheus Monitoring (recommandé) ou la surveillance Prometheus open source
Configurer des règles d'alerte avec PromQL personnalisé
Alibaba Cloud Prometheus et Prometheus open source prennent tous deux en charge des règles d'alerte personnalisées basées sur PromQL qui déclenchent des notifications lorsque les conditions sont remplies.
Alibaba Cloud Prometheus
Pour créer une règle d'alerte Prometheus à l'aide de PromQL personnalisé, consultez la rubrique Créer une règle d'alerte Prometheus.
Open source Prometheus
Configurez une politique de notification d'alerte. Prometheus open source prend en charge les webhooks, DingTalk et les e-mails. Définissez la méthode de notification via le paramètre
receiverdans ack-prometheus-operator. Consultez la section Configuration des alertes.-
Créez une règle d'alerte. Déployez un CRD PrometheusRule dans le cluster pour définir les règles d'alerte (consultez la rubrique Déploiement des règles Prometheus). L'exemple suivant se déclenche lorsque l'utilisation du CPU du nœud dépasse 90 % sur une fenêtre de 2 minutes. Le champ
exprspécifie l'expression PromQL et la condition de déclenchement.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 -
Vérifiez que la règle d'alerte est active.
Exécutez la commande suivante pour transférer le service Prometheus vers le port 9090 de votre machine locale :
kubectl port-forward svc/ack-prometheus-operator-prometheus 9090:9090 -n monitoringOuvrez
localhost:9090dans votre navigateur.Sélectionnez Status > Rules. Si la règle d'alerte apparaît sur la page Rules, elle est active.
Référence des règles d'alerte
ACK fournit des règles d'alerte recommandées basées sur l'expérience en matière d'exploitation et de maintenance, couvrant la stabilité du cluster, l'utilisation des ressources des nœuds et des hôtes, les réplicas de conteneurs, les charges de travail, le stockage et le réseau.
Niveaux de gravité :
Critical : Affecte le cluster, l'application ou l'activité. Une action immédiate est requise.
Warning : Affecte le cluster, l'application ou l'activité. Une investigation rapide est nécessaire.
Normal : Indique un changement important de fonctionnalité.
La colonne Rule description utilise l'onglet Alert Rules de la page Alerts comme point d'entrée. Pour y accéder : connectez-vous à la console ACK , cliquez sur votre cluster dans la liste Clusters , puis choisissez Operations > Alerts > Alert Rules .
Répliques de conteneurs anormales
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting | ||
|---|---|---|---|---|---|---|---|---|
| État de pod anormal | Critical | `min_over_time(sum by (namespace, pod, phase) (kube_pod_status_phase{phase=~"Pending |
Unknown | Failed"})[5m:1m]) > 0` | > 0 | 5 min |
Se déclenche lorsqu'un pod reste dans l'état Pending, Unknown ou Failed pendant 5 minutes. Configurez via Alert Rule Set for Pod Exceptions > Pod anomaly. Consultez la rubrique Gérer les alertes dans ACK. |
Consultez la rubrique Résoudre les problèmes liés aux pods. |
| Échec du démarrage du pod | Critical | sum_over_time(increase(kube_pod_container_status_restarts_total{}[1m])[5m:1m]) > 3 |
> 3 restarts | 5 min | Se déclenche lorsqu'un pod redémarre plus de 3 fois en 5 minutes. Configurez via Alert Rule Set for Pod Exceptions > Pod startup failures. Consultez la rubrique Gérer les alertes dans ACK. | Consultez la rubrique Résoudre les problèmes liés aux pods. | ||
| Plus de 1 000 pods n'ont pas pu être planifiés pendant 10 minutes consécutives | 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 | Se déclenche lorsque plus de 1 000 pods restent dans l'état Pending en raison d'échecs de planification pendant plus de 10 minutes consécutives. | Peut indiquer une pression de planification excessive. ACK Pro Edition offre une planification améliorée et un SLA. Consultez la rubrique Présentation de l'édition Pro du cluster géré ACK. | ||
| Limitation fréquente du CPU du conteneur | Warning | rate(container_cpu_cfs_throttled_seconds_total[3m]) * 100 > 25 |
> 25 % throttled time | 3 min | Se déclenche lorsque le temps de limitation du CPU dépasse 25 % sur 3 minutes. La limitation réduit les tranches de temps, augmentant le temps d'exécution des processus et ralentissant la logique de l'application. | Vérifiez si la resource limit du CPU du pod est trop faible. Réduisez la limitation avec la stratégie CPU Burst. Sur les nœuds multicœurs, utilisez la planification consciente de la topologie du CPU pour maximiser les ressources CPU fragmentées. |
||
| Utilisation du CPU du pod > 85 % de la limite | 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 |
>= 85 % of pod limit | 1 min | Se déclenche lorsque le CPU du pod dépasse 85 % de sa limite. Aucun effet sans limite configurée. Seuil par défaut : 85 % — ajustez selon vos besoins. Pour filtrer, remplacez pod=~"{{PodName}}.*",namespace=~"{{Namespace}}.*" par des valeurs réelles ; supprimez le filtre pour interroger tous les pods. |
Une utilisation élevée du CPU provoque une limitation et réduit les tranches de temps. Vérifiez si la resource limit du CPU est trop faible. Consultez les rubriques Activer la stratégie CPU Burst et Activer la planification consciente de la topologie du CPU. |
||
| Utilisation de la mémoire du pod > 85 % de la limite | 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 |
>= 85 % of pod limit | — | Se déclenche lorsque la mémoire du pod dépasse 85 % de sa limite. Aucun effet sans limite configurée. Seuil par défaut : 85 % — ajustez selon vos besoins. | Une utilisation élevée de la mémoire peut déclencher des arrêts OOM et des redémarrages de pods. Vérifiez si la resource limit de la mémoire est trop faible. Ajustez correctement les limites avec le profilage des ressources. |
Charges de travail anormales
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Incohérence des réplicas de Deployment | Critical | kube_deployment_spec_replicas{} != kube_deployment_status_replicas_available{} |
Any mismatch | — | Se déclenche lorsque les réplicas disponibles du Deployment ne correspondent pas au nombre souhaité. Configurez via Alert Rule Set for Workload Exceptions > Deployment pod anomaly. Consultez la rubrique Gérer les alertes dans ACK. | Consultez la rubrique Résoudre les problèmes liés aux pods. |
| Incohérence des réplicas de DaemonSet | 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 | — | Se déclenche lorsque les réplicas disponibles du DaemonSet ne correspondent pas au nombre souhaité. Configurez via Alert Rule Set for Workload Exceptions > DaemonSet pod anomaly. Consultez la rubrique Gérer les alertes dans ACK. | Consultez la rubrique Résoudre les problèmes liés aux pods. |
| Erreur de planification du DaemonSet | Critical | kube_daemonset_status_number_misscheduled{job} > 0 |
> 0 | — | Se déclenche lorsqu'un réplica DaemonSet s'exécute sur un nœud incorrect. Configurez via Alert Rule Set for Workload Exceptions > DaemonSet pod scheduling errors. Consultez la rubrique Gérer les alertes dans ACK. | Consultez la rubrique Résoudre les problèmes liés aux pods. |
| Échec du Job | Critical | kube_job_status_failed{} > 0 |
> 0 | — | Se déclenche lorsqu'un Job échoue. Configurez via Alert Rule Set for Workload Exceptions > Job execution failures. Consultez la rubrique Gérer les alertes dans ACK. | Vérifiez les journaux des pods ayant échoué pour obtenir des détails sur l'erreur. Consultez la rubrique Résoudre les problèmes liés aux pods. |
Exceptions de stockage
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting | |
|---|---|---|---|---|---|---|---|
| État du PersistentVolume (PV) anormal | Critical | `kube_persistentvolume_status_phase{phase=~"Failed |
Pending"} > 0` | > 0 | — | Se déclenche lorsqu'un PV passe à l'état Failed ou Pending. Configurez via Alert Rule Set for Storage Exceptions > PV anomaly. Consultez la rubrique Gérer les alertes dans ACK. |
Consultez la section sur le montage de disque dans la rubrique FAQ sur les PV de disque. |
| Utilisation du disque de l'hôte > 85 % | Critical | (100 - node_filesystem_avail_bytes / node_filesystem_size_bytes * 100) >= 85 |
>= 85 % | — | Se déclenche lorsque l'espace libre du disque du nœud est inférieur à 15 %. Configurez via Alert Rule Set for Resource Exceptions > Node - Disk usage >= 85%. Consultez la rubrique Gérer les alertes dans ACK. | Augmentez le nombre de nœuds ou étendez leur disque. Consultez la rubrique FAQ sur les PV de disque. |
État de nœud anormal
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Nœud NotReady pendant 3 minutes | 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 | Se déclenche lorsqu'un nœud reste à l'état NotReady pendant 3 minutes. Configurez via Alert Rule Set for Node Exceptions > Node changes to the unschedulable state. Consultez la rubrique Gérer les alertes dans ACK. | Déterminez si l'état NotReady est prévu (par exemple, remplacement ou maintenance du nœud). S'il est inattendu, vérifiez si les pods d'application sont affectés et évincez-les si nécessaire. Vérifiez les conditions du nœud pour identifier les causes telles qu'une pression mémoire ou un disque plein. |
Utilisation anormale des ressources de l'hôte
Les métriques des ressources de l'hôte mesurent les ressources de la machine physique ou virtuelle. L'utilisation correspond à l'utilisation des ressources par tous les processus divisée par la capacité maximale de l'hôte.
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Utilisation de la mémoire de l'hôte > 85 % | Warning | (100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 85 |
>= 85 % | — |
Se déclenche lorsque l'utilisation de la mémoire de l'hôte dépasse 85 %. Configurez via
Alert Rule Set for Resource Exceptions
>
Node - Memory usage >= 85%
. Consultez la rubrique
Gérer les alertes dans ACK
. Seuil par défaut : 85 % — ajustez selon vos besoins.
Remarque
Les règles d'alerte ACK sont fournies par Cloud Monitor, avec des métriques cohérentes avec les règles Prometheus. |
Libérez des ressources : vérifiez l'allocation des ressources des pods avec l'analyse des coûts et ajustez correctement les demandes de mémoire avec le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Utilisation de la mémoire de l'hôte > 90 % | Critical | (100 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) >= 90 |
>= 90 % | — | Se déclenche lorsque l'utilisation de la mémoire de l'hôte dépasse 90 %. | Libérez des ressources avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Utilisation du CPU de l'hôte > 85 % | Warning | 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 85 |
>= 85 % | 2 min |
Se déclenche lorsque l'utilisation du CPU de l'hôte dépasse 85 %. Configurez via
Alert Rule Set for Resource Exceptions
>
Node - CPU usage >= 85%
.
Remarque
ACK utilise les métriques ECS de CloudMonitor, équivalentes à cette règle Prometheus. Seuil par défaut : 85 % — ajustez selon vos besoins. Consultez la rubrique Gérer les alertes dans ACK. |
Libérez des ressources avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Utilisation du CPU de l'hôte > 90 % | Critical | 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) >= 90 |
>= 90 % | 2 min | Se déclenche lorsque l'utilisation du CPU de l'hôte dépasse 90 %. | Libérez des ressources avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
Ressources de nœud anormales
Les métriques des ressources de nœud mesurent la consommation des ressources des conteneurs par rapport à la capacité allouable du nœud, et non la capacité de la machine physique.
Ressources consommées (numérateur) : Total des ressources de tous les conteneurs sur le nœud, y compris la mémoire de l'ensemble de travail, le cache de pages, etc.
Ressources allouables (dénominateur) : Ressources disponibles pour les conteneurs après soustraction des réservations de nœud. Consultez la rubrique Politique de réservation des ressources de nœud .
La planification des pods est basée sur les demandes de ressources, et non sur l'utilisation réelle.
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Utilisation du CPU du nœud > 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 | Se déclenche lorsque l'utilisation du CPU du nœud dépasse 85 % des ressources allouables. Formule : Utilisation des ressources du nœud / Total des ressources allouables sur le nœud. | Libérez des ressources avec l'analyse des coûts et le profilage des ressources pour répartir les pods sur les nœuds. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Taux d'allocation des ressources CPU du nœud > 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 % | — | Se déclenche lorsque le taux d'allocation des ressources CPU dépasse 85 % des ressources allouables. Formule : Total des demandes de ressources des pods planifiés / Total des ressources allouables sur le nœud. | Ressources insuffisantes pour planifier davantage de pods. Vérifiez le gaspillage de ressources (utilisation réelle bien inférieure aux demandes) avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Taux de survente du CPU du nœud > 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 % | — | Se déclenche lorsque le taux de survente du CPU dépasse 300 % des ressources allouables. Formule : Total des limites de ressources des pods planifiés / Total des ressources allouables sur le nœud. Le seuil de 300 % est la valeur par défaut recommandée — ajustez selon vos besoins. | Les limites totales du CPU dépassent largement les ressources allouables. Lors des pics de trafic, la contention et la limitation peuvent ralentir les réponses. Ajustez correctement les demandes et limites du CPU avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Utilisation de la mémoire du nœud > 85 % | Warning | sum(container_memory_working_set_bytes{pod!=""}) by (node) / sum(kube_node_status_allocatable{resource="memory"}) by (node) * 100 >= 85 |
>= 85 % | — | Se déclenche lorsque l'utilisation de la mémoire du nœud dépasse 85 % des ressources allouables. Formule : Utilisation des ressources du nœud / Total des ressources allouables sur le nœud. | Libérez des ressources avec l'analyse des coûts et le profilage des ressources pour répartir les pods sur les nœuds. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Taux d'allocation des ressources mémoire du nœud > 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 % | — | Se déclenche lorsque le taux d'allocation des ressources mémoire dépasse 85 % des ressources allouables. Formule : Total des demandes de ressources des pods planifiés / Total des ressources allouables sur le nœud. | Ressources insuffisantes pour planifier davantage de pods. Vérifiez le gaspillage de ressources (utilisation réelle bien inférieure aux demandes) avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
| Taux de survente de la mémoire du nœud > 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 % | — | Se déclenche lorsque le taux de survente de la mémoire dépasse 300 % des ressources allouables. Formule : Total des limites de ressources des pods planifiés / Total des ressources allouables sur le nœud. Le seuil de 300 % est la valeur par défaut recommandée — ajustez selon vos besoins. | Les limites totales de la mémoire dépassent largement les ressources allouables. Lors des pics de trafic, la mémoire peut atteindre la limite du nœud, déclenchant des arrêts OOM qui perturbent les charges de travail. Ajustez correctement les demandes et limites de mémoire avec l'analyse des coûts et le profilage des ressources. Augmentez le nombre de nœuds — consultez la rubrique Mettre à l'échelle les nœuds d'un cluster ACK. |
Exceptions réseau
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Le nombre de requêtes CoreDNS tombe à zéro | 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 | Détectable uniquement dans les clusters gérés ACK (éditions Pro et Basic). | Vérifiez si les pods CoreDNS du cluster fonctionnent normalement. |
| Exception de panique CoreDNS | Critical | sum(rate(coredns_panic_count_total{}[3m])) > 0 |
> 0 | 3 min | Détectable uniquement dans les clusters gérés ACK (éditions Pro et Basic). | Vérifiez si les pods CoreDNS du cluster fonctionnent normalement. |
| Certificat du contrôleur d'entrée expirant dans les 14 jours | Warning | ((nginx_ingress_controller_ssl_expire_time_seconds - time()) / 24 / 3600) < 14 |
< 14 days | — | Nécessite l'installation du composant ACK Ingress controller avec la fonctionnalité Ingress activée. | Renouvelez le certificat du contrôleur d'entrée. |
Exceptions de mise à l'échelle automatique
| Description | Severity | PromQL | Threshold | Window | Rule description | Common troubleshooting |
|---|---|---|---|---|---|---|
| Nombre de réplicas HPA au maximum | Warning | max(kube_horizontalpodautoscaler_spec_max_replicas) by (namespace, horizontalpodautoscaler) - max(kube_horizontalpodautoscaler_status_current_replicas) by (namespace, horizontalpodautoscaler) <= 0 |
<= 0 difference | — |
Se déclenche lorsque les réplicas actuels du HPA atteignent le maximum configuré.
Remarque
Activez d'abord les métriques |
Vérifiez si la politique HPA répond aux attentes. Si la charge de travail reste élevée, augmentez maxReplicas ou optimisez les performances de l'application. |
Étapes suivantes
Interrogez les données Prometheus depuis la console ou l'API : Interroger les données de surveillance Prometheus à l'aide de PromQL.
Identifiez les problèmes de réseau des conteneurs : Utiliser KubeSkoop pour localiser les problèmes réseau.
Problèmes courants d'Alibaba Cloud Prometheus : FAQ sur l'observabilité