Blog de Synoptik Labs

Recevoir les alertes Prometheus sur Teams

· 338 mots · 2 minutes de lecture

Alertmanager, étroitement lié à l’écosystème Prometheus, joue un rôle crucial dans la gestion des alertes en orchestrant leur routage vers les receivers appropriés.

Depuis la version 0.26 du 23 août 2023, les notifications vers Teams sont gérées nativement. Dans ce billet, nous allons voir comment associer Alertmanager avec Teams.

Préparation de Teams 🔗

Nous allons suivre la documentation Microsoft pour la génération de Webhooks :

  1. Sélectionnez et ouvrez le canal dans lequel vous souhaitez recevoir les alertes
  2. Dans le menu ••• haut à droite, sélectionnez Connectors
  3. Sélectionnez et configurez Incoming Webhook
  4. Personnalisez le Webhook avec un nom et un logo
  5. Copiez l’URL générée pour le webhook pour la configuration d’alertmanager
  6. Un message dans le canal notifie et valide la création du webhook

Configuration d’Alertmanager 🔗

La documentation nous indique comment configurer un receiver Teams.

Voici un exemple de configuration complète :

 1route:
 2  group_by: ['alertname']
 3  group_wait: 30s
 4  group_interval: 5m
 5  repeat_interval: 2h
 6  routes:
 7    - receiver: 'teams'
 8      match_re:
 9        severity: critical|warning
10      continue: true
11receivers:
12  - name: 'teams'
13    msteams_configs:
14      - send_resolved: false
15        webhook_url: 'https://<redacted>.webhook.office.com/webhookb2/<redacted>'

Test du système d’alerte 🔗

Pour vérifier que le système que nous venons de configurer fonctionne, nous pouvons générer une alerte grâce au script suivant :

 1#!/bin/bash
 2
 3name=$RANDOM
 4url='http://localhost:9093/api/v1/alerts'
 5
 6echo "Déclenchement de l'alerte $name"
 7
 8curl -XPOST $url -d "[{
 9	\"status\": \"firing\",
10	\"labels\": {
11		\"alertname\": \"$name\",
12		\"service\": \"test-alerte\",
13		\"severity\":\"warning\",
14		\"instance\": \"$name.test-alerte.local\"
15	},
16	\"annotations\": {
17		\"summary\": \"Fausse alerte dans le cadre d'un test !\"
18	},
19	\"generatorURL\": \"http://test-alerte.prometheus.local/<generating_expression>\"
20}]"
21
22echo ""
23
24echo "Appuyez sur entrer pour résoudre l'alerte"
25read
26
27echo "Envoie de la résolution"
28curl -XPOST $url -d "[{
29	\"status\": \"resolved\",
30	\"labels\": {
31		\"alertname\": \"$name\",
32		\"service\": \"test-alerte\",
33		\"severity\":\"warning\",
34		\"instance\": \"$name.test-alerte.local\"
35	},
36	\"annotations\": {
37		\"summary\": \"Fausse alerte dans le cadre d'un test !\"
38	},
39	\"generatorURL\": \"http://test-alerte.prometheus.local/<generating_expression>\"
40}]"
41
42echo ""

Vous pouvez alors constater l’alerte dans votre canal sur Teams comme sur l’image ci-dessous :

Example d’alerte

Categories


Tags