Aller au contenu

Notifications de Pannes

L’Astropathe qui veille sur tous les démons liés — surveillance automatique et notifications d’omens funestes via ntfy.sh.

Pour chaque container surveillé, le module crée :

  • Un bloc systemd.services avec OnFailure, Restart = "on-failure", RestartSec = 30s, StartLimitBurst = 3
  • Un timer docker-health-watch@<nom> qui tourne toutes les 30 secondes
  • Le service template docker-health-watch@<nom> qui tue le container si unhealthy
  • Le service template notify-failure@<nom> qui envoie une notification ntfy.sh

Ne pas déclarer ces éléments manuellement dans les fichiers docker-*.nix.

Ajouter le label dans la définition du container (en dernier) :

labels = {
# ... autres labels traefik ...
"friloux.me/health-watch" = "true";
};

Et s’assurer que le container a un health check défini avec extraOptions :

extraOptions = lib.kuri.docker.mkHealthCheck {
cmd = "curl -fs http://localhost/health";
startPeriod = "30s"; # optionnel
};
Container → unhealthy
└── docker-health-watch@ → docker kill <container>
└── systemd détecte la mort → restart
└── si StartLimitBurst atteint → failed
└── notify-failure@ → ntfy.sh push
Fenêtre de terminal
systemctl list-timers | grep health-watch
# Déclencher manuellement (test)
systemctl start docker-health-watch@traefik

Le topic est stocké dans sops.secrets."services/ntfy/topic". Les notifications incluent le hostname de la machine et le nom du service.