Prometheus: Alertes

Comment fonctionnent les alertes Prometheus et comment les configurer

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Prometheus cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Alert Manager inclus pour envoyer des alertes à Slack, Mattermost, PagerDuty, etc.
  • Serveur d'email dédié pour envoyer des alertes email illimitées.
  • Blackbox pour sonder HTTP, ICMP, TCP, et plus encore.
  • Configuration facile avec un éditeur de fichier de configuration en ligne.
  • Mises à jour sans effort en un clic.
  • Performance optimale et sécurité robuste grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Prometheus cloud hosting de Stackhero !

Prometheus peut analyser vos métriques et déclencher des alertes basées sur des règles que vous définissez. Avec Stackhero pour Prometheus, les alertes sont traitées en deux étapes. D'abord, les règles d'alerte de Prometheus sont évaluées, puis Alert Manager prend le relais.

Tout est pré-installé et configuré avec Stackhero pour Prometheus, vous n'avez donc qu'à effectuer une configuration minimale, comme ajouter votre adresse e-mail, pour commencer à recevoir des alertes.

Vue d'ensemble de Stackhero pour PrometheusVue d'ensemble de Stackhero pour Prometheus

Lorsque Prometheus récupère des métriques, il les évalue par rapport aux règles spécifiées dans le fichier rules-alert.yml. Ces règles d'alerte définissent des seuils et des fenêtres temporelles pour déclencher des alertes basées sur les métriques collectées.

Par exemple, une alerte peut être déclenchée si l'utilisation du disque dépasse 80 %. De plus, des règles peuvent être configurées pour prédire des conditions futures et envoyer une alerte si l'on estime que l'espace disque sera complètement rempli dans les 24 heures suivantes.

Un autre cas d'utilisation courant consiste à détecter un comportement inhabituel. Par exemple, si une augmentation soudaine de l'utilisation de la bande passante réseau se produit, une alerte peut être déclenchée pour aider à détecter des attaques par déni de service distribué (DDoS) ou des tentatives d'exfiltration de données.

Les règles d'alerte Prometheus sont incluses directement dans le serveur Prometheus.

Alert Manager reçoit les alertes déclenchées par les règles d'alerte Prometheus. Il déduplique les alertes, les regroupe, puis les transmet via divers canaux de notification tels que l'e-mail, Slack, Mattermost, PagerDuty, et plus encore. Son fichier de configuration est alert-manager.yml.

Par exemple, si un ralentissement du serveur se produit, les règles d'alerte Prometheus peuvent déclencher des alertes distinctes pour la charge accrue et l'utilisation du CPU. Alert Manager reçoit ces alertes, les regroupe car elles concernent le même serveur, et envoie une notification consolidée au destinataire ou à l'équipe appropriée selon votre configuration.

Si le ralentissement persiste, Prometheus continuera d'envoyer des alertes mais Alert Manager supprimera les messages en double pendant une période spécifiée pour éviter de submerger votre équipe avec des alertes redondantes.

Vous pouvez également mettre en sourdine ou inhiber complètement les alertes si nécessaire. Une fois le problème sous-jacent résolu, un message de récupération est envoyé pour notifier vos équipes.

Cet exemple illustre un scénario courant, mais vous pouvez personnaliser entièrement la configuration pour répondre à vos besoins spécifiques.

avertissement Alert Manager n'est pas inclus par défaut avec Prometheus. Pour vous faire gagner du temps et simplifier le processus, nous avons intégré et configuré Alert Manager dans Stackhero pour Prometheus afin que vous puissiez envoyer des alertes en quelques minutes, avec un minimum d'effort.

Vous pouvez ajuster les règles d'alerte Prometheus en modifiant le fichier rules-alert.yml. Pour ce faire, accédez à votre tableau de bord Stackhero, sélectionnez votre service Prometheus, et cliquez sur "Configuration des règles d'alerte Prometheus".

Nous avons déjà ajouté quelques règles d'alerte par défaut à votre instance Stackhero pour Prometheus, vous n'aurez donc généralement pas besoin de modifier le fichier rules-alert.yml sauf si une personnalisation est requise.

Voici un exemple d'alerte qui se déclenche si l'utilisation du disque dépasse 90 % :

- alert: "HostOutOfDiskSpace"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host out of disk space (instance {{ $labels.instance }})"
    description: "Disk is almost full (< 10% left)"
    value: "{{ $value }}"

Voici un autre exemple qui prédit une saturation potentielle de l'espace disque dans les 24 heures suivantes :

- alert: "HostDiskWillFillIn24Hours"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs"}[1h], 24 * 3600) < 0 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host disk will fill in 24 hours (instance {{ $labels.instance }})"
    description: "Filesystem is predicted to run out of space within the next 24 hours at the current write rate"
    value: "{{ $value }}"

Vous pouvez trouver de nombreux exemples supplémentaires de règles d'alerte sur le site Awesome Prometheus Alerts.

Pour configurer Alert Manager, modifiez le fichier alert-manager.yml. Dans votre tableau de bord Stackhero, sélectionnez votre service Prometheus, puis cliquez sur "Configuration d'Alert Manager".

Ci-dessous, nous présentons les bases. Pour plus de détails, veuillez vous référer à la documentation officielle.

La première étape consiste à configurer les receivers. Chaque receiver est un ensemble d'intégrations de notification (comme l'e-mail, Slack, etc.) identifié par un name unique.

Par exemple, vous pourriez créer un receiver nommé "critical_alert" pour les notifications déclenchées par des alertes de gravité critique. Alternativement, vous pourriez créer un receiver comme "devops_team" pour diriger les alertes vers votre équipe DevOps.

Définir un receiver avec le nom "critical_alert" seul n'enverra pas d'alertes. L'association entre les alertes et le receiver est faite dans la configuration des routes décrite ci-dessous.

Une fois un receiver défini, vous devrez configurer les intégrations de notification correspondantes. Celles-ci pourraient inclure des e-mails, des notifications Slack/Mattermost, PagerDuty, Opsgenie, Webhook, et plus encore.

Voici un exemple de receiver nommé "critical_alert" qui envoie un e-mail à deux utilisateurs et un message Slack au canal #alerts :

receivers:
- name: "critical_alert"

  # Envoyer les alertes critiques par e-mail
  email_configs:
    - send_resolved: true
      to: "user@mycompany.com"

  # Envoyer les alertes critiques à Slack ou Mattermost
  slack_configs:
    - send_resolved: true
      api_url: "<your Slack or Mattermost API URL>"
      channel: "#alerts"
      title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
      text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"

Vous pouvez définir plusieurs receivers pour gérer différents types d'alertes. Par exemple, vous pourriez en avoir un pour les alertes critiques, un autre pour les alertes d'erreur, et un autre pour d'autres types d'alertes.

Les instances de Stackhero pour Prometheus incluent un serveur e-mail dédié et privé qui vous permet d'envoyer un nombre illimité d'alertes par e-mail sans coût supplémentaire.

Après avoir configuré vos receivers, vous devez configurer les routes. Les routes indiquent à Alert Manager comment gérer les alertes entrantes de Prometheus et où les envoyer (généralement vers l'un de vos receivers préconfigurés).

Voici un exemple de base qui dirige les alertes avec une gravité de "critical" vers le receiver nommé "critical_alert" :

route:
  routes:
    - match:
        severity: "critical"
      receiver: "critical_alert"

Nous avons préconfiguré certaines routes dans le fichier alert-manager.yml fourni avec votre instance Stackhero pour Prometheus. Pour commencer à recevoir des alertes, mettez simplement à jour les sections email_configs et/ou slack_configs avec vos détails de notification.