Aller au contenu

Alertes

Le système d’alertes livre les alertes Prometheus dans des salons Matrix (et par e-mail pour les incidents). Un provisionnement unique du bot suffit : ensuite tout est déclaratif. Le fonctionnement d’ensemble est décrit dans Monitoring & Alertes.

Pré-requisPourquoi
prometheus + monitoring sur le collecteurporte Alertmanager et les règles
Service matrix joignablehéberge le bot et les salons
Secret d’enregistrement en sops (matrix-rss-password)crée le compte bot
Clé admin sops présenteécrit les secrets du bot

Une seule commande, idempotente (rejouable sans risque) : elle crée le compte bot, les salons, et écrit l’identité dans var/generated/matrix.nix.

  1. Déclarer l’administrateur humain (partie locale) dans la configuration :

    etc/config.yaml
    network:
    matrix:
    admin: "alice"
  2. Lancer le provisionnement :

    Fenêtre de terminal
    just configure-alert-bot

    La commande, en s’appuyant sur la clé admin sops :

    • crée le compte @alertbot:domain.tld (flux nonce + HMAC sur le secret partagé) ;
    • crée ou résout les salons #alert-warnings et #alert-incidents, y fait entrer le bot et invite l’admin ;
    • écrit bot + les ID de salons dans var/generated/matrix.nix ;
    • stocke mot de passe, jeton d’accès et secret de webhook dans sops.
  3. Déployer le collecteur :

    Fenêtre de terminal
    just generate
    just apply <collecteur>

    L’alerting s’active tout seul dès que les salons existent (var/generated/matrix.nix rempli). Pour le désactiver malgré tout : darkone.service.prometheus.alerting.enable = false;.

Le provisionnement dépose trois secrets dans usr/secrets/secrets.yaml :

Clé sopsRôle
alertmanager-matrix-passwordmot de passe du compte bot (reconnexion)
alertmanager-matrix-tokenjeton d’accès du bot (envoi des messages)
alertmanager-webhook-secretauthentifie Alertmanager auprès du pont Matrix
  1. Sur un nœud supervisé, couper un service surveillé :

    Fenêtre de terminal
    sudo systemctl stop <unité>
  2. Sous une minute, un message ServiceDown (ou SystemdUnitFailed) apparaît dans #alert-warnings, #alert-incidents et un e-mail si le nœud est critique. Le lien de l’alerte pointe vers https://prometheus.<zone>.domain.tld.

  3. Relancer le service : l’alerte se résout (notification de résolution).

    Fenêtre de terminal
    sudo systemctl start <unité>

Le flux de déploiement pose un drapeau de maintenance pour ne pas déclencher de fausses alertes pendant un nixos-rebuild. Manuellement :

Fenêtre de terminal
dnf-maintenance on # inhibe les alertes du nœud
dnf-maintenance off # les réactive

Certaines alertes sont exactes mais non actionnables : un disque de sauvegarde volontairement rempli franchit DiskSpaceLow en permanence. silences les empêche de notifier.

usr/modules/alerts.nix
{
darkone.service.prometheus.alerting.silences = [
{
alert = "DiskSpaceLow";
host = "srv-backup";
matchers.mountpoint = "/mnt/backup";
reason = ''
Disque de sauvegarde volontairement rempli, seuil structurellement
franchi. Retirer si la rétention est réduite.
'';
}
];
}
ChampRôle
alertNom de l’alerte à taire (alertname)
hostNom d’hôte à cibler (label host), null pour tout le parc
matchersLabels supplémentaires en égalité stricte, combinés en ET
reasonObligatoire : pourquoi l’alerte est acceptée

Chaque entrée devient une route Alertmanager vers le receiver null. L’alerte continue de se déclencher et reste visible dans Prometheus, Alertmanager et Grafana, elle cesse simplement de notifier.

Vérifier le routage sur l’hôte Prometheus :

Fenêtre de terminal
amtool config routes test --config.file=/etc/alertmanager.yml \
alertname=DiskSpaceLow host=srv-backup mountpoint=/mnt/backup

Pour taire un mode de défaillance systémique plutôt qu’un cas ponctuel, voir ignoredUnits (dnf/config/alerts.nix), qui exclut une unité systemd de SystemdUnitFailed sur tout le parc.

SymptômeCause probableRemède
Aucun message dans un salonbot absent du salon ou jeton expirérejouer just configure-alert-bot
Création de salon en 403filtre anti-bots de Caddydéjà géré (agent neutre) ; ne pas utiliser curl brut
admin API not public/_synapse/admin fermélaisser le tunnel SSH automatique opérer (hôte Matrix joignable)
Lien d’alerte non résoluDNS ou certificat du vhost prometheus absentdéployer la passerelle / le HCS pour le nouveau sous-domaine
matrix.nix ignoré au déploiementfichier non lisible par nixle script fait un chmod 644 ; vérifier les permissions de var/generated/
Pas de mail d’incidentrelais Postfix local inactifl’alerting l’active par défaut ; vérifier darkone.service.prometheus.alerting.email