1. Livres & vidéos
  2. Prometheus et Grafana
  3. Alertes et notifications
Extrait - Prometheus et Grafana Surveillez vos applications et composants système (2e édition)
Extraits du livre
Prometheus et Grafana Surveillez vos applications et composants système (2e édition) Revenir à la page d'achat du livre

Alertes et notifications

Objectifs du chapitre et prérequis

1. Contexte et prérequis

La mise en place de l’exporteur système a été abordée durant les chapitres précédents aussi bien sur des machines Linux classiques que sur des machines faisant partie d’un cluster Docker Swarm ou Kubernetes.

En revanche, les métriques remontées n’ont été observées que de manière très superficielle et surtout, aucune alerte n’a été définie. Ce chapitre va proposer de mettre en place un gestionnaire d’alertes et donner quelques exemples de métriques intéressantes à utiliser.

Pour la suite, l’utilisateur va faire appel à deux techniques différentes :

  • L’utilisation des alertes dans Grafana.

  • La mise en place du gestionnaire d’alertes (alertmanager).

2. Fichiers téléchargeables

Vous pouvez récupérer les exemples sur le repository GitHub suivant : https://github.com/EditionsENI/prometheus-grafana

Vous pouvez également récupérer ces fichiers dans l’archive chapitre-13.tar.gz sur la page du livre sur le site des Éditions ENI.

Gestion des alertes avec Grafana

1. Contexte

Grafana dispose nativement d’un mécanisme d’alertes et de notifications. Ce chapitre est dédié à sa découverte et sa mise en place. À noter que pour la suite de l’exercice, l’utilisateur devra avoir suivi le chapitre Protection des accès.

2. Alerte sur l’activité CPU

a. Alerte à définir

Lors de la mise en place de l’exporteur, le lecteur a déjà abordé l’existence des métriques CPU suivantes :

  • Taux d’occupation des CPU : node_cpu_seconds_total.

  • Charge de la machine : node_load1/5/15.

Une alerte assez classique sur ce genre de métriques est de considérer un seuil au-delà duquel il faut faire intervenir un administrateur.

Dans Grafana, cette définition se fait depuis l’interface édition.

b. Définition du seuil de déclenchement

 Ouvrez le tableau de bord CPU activity ou créez-en un nouveau. Cliquez sur le titre du graphique System load puis sur edit ou créez-en un nouveau.

 Vérifiez que le champ metrics dans l’onglet Query (sous le graphique) contient bien la valeur suivante :

node_load1 
 / 
count(node_cpu_seconds_total{mode="idle"}) without(mode,cpu) 

 Cliquez sur l’onglet Alert puis réalisez les opérations suivantes :

Cliquez sur le bouton bleu Create Alert.

Entrez un seuil de déclenchement dans le champ IS ABOVE de la section Conditions (exemple : 0.2).

images/14EP01.png

Définition d’une alerte à l’aide de l’interface Grafana

 Dans le coin supérieur droit, cliquez sur le bouton bleu Apply puis sauvegardez la modification.

Le tableau de bord indique maintenant si le seuil est dépassé et ajoute des annotations pour donner le moment de franchissement de l’alerte (PENDING) puis le moment où l’erreur est présente depuis plus de 5 minutes (ALERTING).

À noter que ce temps de latence entre la détection et la caractérisation de l’alerte se configure au moment de la création de l’alerte. L’utilisateur peut tout à fait changer ce mécanisme et réduire ce temps d’attente.

La définition d’alertes est un sujet très chronophage. N’hésitez...

Gestionnaire d’alertes de Prometheus

1. Contexte

L’utilisateur a rapidement abordé la gestion des alertes de Grafana. Toutefois, cette technique a quelques défauts :

  • Les alertes sont découplées de la collecte des métriques.

  • La définition se fait depuis l’interface de Grafana.

Grafana permet de définir ces alertes à l’aide de son API. Cependant, il s’agit plus d’un contournement puisque l’utilisateur devra mettre au point un script prenant en charge ce type d’opération.

La tendance de ces dernières années est de s’appuyer de plus en plus sur l’utilisation de fichiers déclaratifs. Au même titre que l’infrastructure ou que le CI/CD, la surveillance doit s’appuyer sur des définitions de fichiers de codes sources (infrastructure as code, pipeline as code, monitoring as code, etc.).

2. Mise en place d’une alerte dans Prometheus

a. Configuration des alertes dans Prometheus

La configuration des alertes se fait à l’aide du champ rule_files dans le fichier de configuration principal de Prometheus. Ce champ se présente sous la forme d’un tableau référençant les fichiers de définition d’alertes à inclure au démarrage.

Ces fichiers sont au format YAML et contiennent un seul champ groups. Ce dernier est un tableau de groupes de règles. Chaque groupe contient deux champs :

  • Un champ name pour indiquer le nom du groupe de règles.

  • Un champ rules contenant un tableau de règles.

Les règles peuvent être de deux types : une alerte ou une règle d’enregistrement.

La première sert à définir comment déclencher une alerte et contient les champs suivants :

  • alert suivi par son nom.

  • expr contenant la requête PromQL de l’alerte.

  • labels et annotations pour enrichir en informations l’alerte.

  • for (optionnel) indiquant le temps de caractérisation d’une alerte.

Les règles d’enregistrement servent à précalculer certaines valeurs. Elles sont généralement utilisées lorsqu’une requête fréquemment appelée est trop consommatrice en ressources. Il peut s’agir d’une agrégation de toutes les métriques d’un moteur lorsque...