Lorsque les métriques Prometheus dépassent les seuils attendus ou présentent des anomalies, une notification rapide permet d'éviter l'escalade des incidents. Les règles d'alerte ARMS Prometheus vous permettent de définir des conditions sur n'importe quelle métrique — en sélectionnant une métrique prédéfinie ou en rédigeant une instruction PromQL personnalisée — et d'acheminer les notifications vers votre équipe par SMS, e-mail, appel téléphonique, robot de chat DingTalk, robot de chat WeCom ou webhook.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
Une instance Prometheus dans Managed Service for Prometheus. Pour les instructions de configuration, consultez l'une des rubriques suivantes :
Accéder à la page de création de règle d'alerte
Connectez-vous à la console ARMS.
Dans le volet de navigation de gauche, choisissez Managed Service for Prometheus > Prometheus Alert Rules.
Sur la page Prometheus Alert Rules, cliquez sur Create Prometheus Alert Rule.
Créer une règle avec une métrique prédéfinie
ARMS fournit des métriques intégrées pour les cibles de surveillance courantes, telles que l'utilisation du processeur des conteneurs, la mémoire des pods et l'utilisation du disque. Sélectionnez une métrique prédéfinie pour créer une règle d'alerte sans rédiger de requête PromQL.
Sur la page Create Prometheus Alert Rule, configurez les paramètres suivants :
Paramètres de base
| Paramètre | Description | Exemple |
|---|---|---|
| Alert Rule Name | Nom descriptif de la règle. | Production cluster - container CPU utilization alert |
| Check Type | Sélectionnez Static Threshold. | Static Threshold |
| Prometheus Instance | Instance Prometheus à surveiller. | Production cluster |
| Alert Contact Group | Groupe de contacts recevant les notifications d'alerte. Les groupes disponibles varient selon le type d'instance Prometheus. | Kubernetes load |
| Alert Metric | Métrique à surveiller. Les métriques disponibles varient selon le groupe de contacts. | Container CPU Usage |
Condition d'alerte
| Paramètre | Description | Exemple |
|---|---|---|
| Alert Condition | Expression de seuil déclenchant les événements d'alerte. | L'utilisation du processeur du conteneur est greater que 80% |
Conditions de filtrage
Les Filter Conditions restreignent la règle d'alerte à des ressources spécifiques. Une ressource doit correspondre à la fois à la condition de filtrage et à la condition d'alerte pour générer un événement d'alerte.
| Type de filtre | Comportement |
|---|---|
| Traverse (par défaut) | Applique la règle à toutes les ressources de l'instance Prometheus. |
| Equal | Applique la règle à une seule ressource nommée. Vous ne pouvez pas spécifier plusieurs ressources simultanément. |
| Not Equal | Applique la règle à toutes les ressources, à l'exception de la ressource nommée. Vous ne pouvez pas spécifier plusieurs ressources simultanément. |
| Regex match | Applique la règle aux ressources dont les noms correspondent à l'expression régulière. |
| Regex not match | Applique la règle aux ressources dont les noms ne correspondent pas à l'expression régulière. |
Limitez les conditions de filtrage à 300 caractères.
Après avoir défini les conditions de filtrage, la section Data Preview s'affiche. Elle présente l'instruction PromQL de votre condition d'alerte et un graphique chronologique des valeurs de métrique. Par défaut, seules les valeurs en temps réel d'une ressource sont affichées. Ajustez les conditions de filtrage pour afficher les valeurs de métrique de différentes ressources et plages horaires.
La ligne rouge représente le seuil.
Les segments rouge foncé indiquent les valeurs satisfaisant à la condition d'alerte. Les segments bleus indiquent les valeurs ne la satisfaisant pas.
Survolez la courbe pour inspecter les valeurs à un instant précis.
Cliquez et faites glisser sur le graphique pour zoomer sur une plage horaire.
Durée
Le paramètre Duration contrôle la durée pendant laquelle une condition doit persister avant la génération d'un événement d'alerte. Ce paramètre détermine la transition de l'alerte entre les états :
| Option | Comportement | Cas d'utilisation |
|---|---|---|
| If the alert condition is met | Un seul point de données atteignant le seuil génère immédiatement un événement d'alerte. | Utilisez cette option pour les métriques prioritaires où toute violation nécessite une attention immédiate. |
| If the alert condition is continuously met for N minutes | Le seuil doit être atteint pendant au moins N minutes consécutives avant la génération d'un événement d'alerte. | Utilisez cette option pour filtrer les pics brefs et réduire le bruit. |
Lorsque vous définissez une durée de N minutes, l'alerte suit ce flux d'états : la condition est d'abord détectée et l'alerte passe à l'état Pending. Si la condition persiste pendant N minutes, l'alerte passe à l'état Firing et un événement d'alerte est généré. Si la condition disparaît avant l'écoulement des N minutes, l'alerte revient à l'état Normal sans générer d'événement.
Niveau d'alerte
| Niveau | Gravité |
|---|---|
| Default | La plus faible |
| P4 | Faible |
| P3 | Moyenne |
| P2 | Élevée |
| P1 | La plus élevée |
Message d'alerte
| Paramètre | Description | Exemple |
|---|---|---|
| Alert Message | Texte de notification envoyé lors du déclenchement de l'alerte. Prend en charge les variables de modèle Go pour les valeurs dynamiques. | Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} CPU utilization: {{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%. Current value: {{ printf "%.2f" $value }}% |
Variables de modèle Go courantes pour les alertes Prometheus :
| Variable | Description |
|---|---|
{{$labels.namespace}} |
Namespace Kubernetes |
{{$labels.pod_name}} |
Nom du pod |
{{$labels.container}} |
Nom du conteneur |
{{$labels.device}} |
Nom du périphérique (pour les métriques de disque) |
{{ printf "%.2f" $value }} |
Valeur actuelle de la métrique, formatée à deux décimales |
Notifications d'alerte
Choisissez un mode de notification :
Simple Mode : Définissez directement dans la règle les Notification Objects, la Notification Period et l'option Whether to Resend Notifications. Utilisez ce mode pour une alerte simple ne nécessitant pas de routage basé sur des politiques.
Standard Mode : Liez la règle à une politique de notification pour un routage centralisé des alertes. Deux options s'offrent à vous :
Do Not Specify Notification Policy : Créez ultérieurement une politique de notification sur la page Notification Policy. Définissez des règles et des conditions de correspondance — par exemple, par nom de règle d'alerte — pour acheminer les événements d'alerte vers des contacts ou des groupes de contacts. Pour plus de détails, consultez la rubrique Créer et gérer une politique de notification.
Select a policy from the drop-down list : ARMS ajoute automatiquement une règle de correspondance à la politique sélectionnée, en utilisant l'ID de la règle d'alerte comme condition de correspondance.
Après avoir sélectionné une politique de notification, les événements d'alerte de cette règle peuvent également correspondre à d'autres politiques de notification utilisant une correspondance floue. Un événement d'alerte peut correspondre à plusieurs politiques de notification.
Paramètres avancés
| Paramètre | Description | Valeur par défaut |
|---|---|---|
| Alert Check Cycle | Intervalle, en minutes, d'évaluation des conditions par la règle. Minimum : 1. | 1 |
| Check When Data Is Complete | Indique s'il faut vérifier lorsque les données sont complètes. Valeurs valides : Yes et No. | Yes |
| Tags | Paires clé-valeur pour catégoriser la règle. Les tags peuvent servir de conditions de correspondance dans les politiques de notification pour acheminer les alertes vers différentes équipes. | -- |
| Annotations | Métadonnées libres concernant la règle. Utilisez les annotations pour enregistrer le contexte aidant les intervenants à agir rapidement — par exemple, une URL de runbook, des instructions d'escalade ou une description du comportement attendu. | -- |
Enregistrer et vérifier
Cliquez sur Save. Sur la page Prometheus Alert Rules, vérifiez la colonne Status.
Si Automatic Interruption apparaît, la règle a été arrêtée. Consultez la section Dépannage des interruptions automatiques pour connaître les causes et les solutions.
Créer une règle avec une instruction PromQL personnalisée
Pour surveiller une métrique non couverte par les options prédéfinies, rédigez une instruction PromQL personnalisée.
Sur la page Create Prometheus Alert Rule, configurez les paramètres suivants :
Paramètres de base
| Paramètre | Description | Exemple |
|---|---|---|
| Alert Rule Name | Nom descriptif de la règle. | Pod CPU utilization exceeds 8% |
| Check Type | Sélectionnez Custom PromQL. | Custom PromQL |
| Prometheus Instance | Instance Prometheus à surveiller. | -- |
| Reference Alert Contact Group | Groupe de contacts pour la règle. Les groupes disponibles varient selon le type d'instance Prometheus. | Kubernetes load |
| Reference Metrics | (Facultatif) Sélectionnez une métrique courante pour remplir le champ PromQL avec sa requête. Modifiez la requête si nécessaire. Les métriques disponibles varient selon le type d'instance Prometheus. | Pod disk usage alert |
Rédiger l'instruction PromQL
Saisissez votre requête dans le champ Custom PromQL Statements.
Exemple — Alerte lorsque l'utilisation du disque d'un pod dépasse 90 % :
max(container_fs_usage_bytes{pod!="", namespace!="arms-prom", namespace!="monitoring"})
by (pod_name, namespace, device)
/
max(container_fs_limit_bytes{pod!=""})
by (pod_name, namespace, device)
* 100 > 90
La section Data Preview affiche le résultat PromQL et un graphique chronologique :
Survolez la courbe pour inspecter les valeurs à un instant précis.
Cliquez et faites glisser sur le graphique pour zoomer sur une plage horaire.
Durée, gravité et notifications
Les paramètres restants — Duration, Alert Level, Alert Message, Alert Notification et Advanced Settings — sont identiques à ceux des règles de métriques prédéfinies. Consultez les sections Durée, Niveau d'alerte, Message d'alerte, Notifications d'alerte et Paramètres avancés.
Utilisez des variables de modèle Go dans le Alert Message pour inclure des valeurs dynamiques :
Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} /
The utilization of the {{$labels.device}} disk exceeds 90%.
Current value: {{ printf "%.2f" $value }}%
Enregistrer et vérifier
Cliquez sur Save. Sur la page Prometheus Alert Rules, vérifiez la colonne Status.
Si Automatic Interruption apparaît, la règle a été arrêtée. Consultez la section Dépannage des interruptions automatiques pour connaître les causes et les solutions.
Gérer les règles d'alerte
Sur la page View Alert Rules de la console Managed Service for Prometheus :
| Origine de la règle | Actions disponibles |
|---|---|
| Règles créées dans ARMS (seuil statique et PromQL personnalisé) | Modifier, supprimer, copier, démarrer, arrêter, afficher les événements d'alerte historiques |
| Règles générées par d'autres services Alibaba Cloud | Afficher les événements d'alerte historiques, accéder à la liste des règles d'alerte du service source |
Dépannage des interruptions automatiques
Si Automatic Interruption apparaît dans la colonne Status de la page Prometheus Alert Rules, la règle a été arrêtée pour l'une des raisons suivantes :
| Cause | Solution |
|---|---|
| La requête renvoie plus de 1 500 résultats. | Ajoutez des conditions de filtrage pour réduire la portée de la requête, ou affinez l'instruction PromQL pour diminuer le nombre de séries temporelles correspondantes. |
| Aucun objet de notification n'est configuré. | Configurez un objet de notification dans la règle d'alerte ou liez la règle à une politique de notification. |
| L'instance Prometheus est désinstallée ou indisponible. | Vérifiez que l'instance Prometheus est en cours d'exécution et accessible. Réinstallez-la si nécessaire. |
Pour récupérer : modifiez la règle comme indiqué, puis cliquez sur Start dans la colonne Actions. Cliquez sur OK pour confirmer. Si le problème persiste, contactez le support technique (ID DingTalk : d9j_rg9e4062f).