Set-OPS-Public/roles/client_sante
Daniel Allaire f815b069f7 supervision : le lot check_http, et les greffons qui manquaient a la flotte
La doctrine dit qu un greffon Nagios EST une sonde valide et compte sur les 54
de monitoring-plugins. Mesure : aucun n etait installe. Le document decrivait
une possibilite qui n existait pas, et chaque role ayant besoin d un controle
HTTP n avait d autre choix que d ecrire du shell.

Le PORTEUR les installe desormais — c est son affaire de pouvoir executer des
sondes, et les poser role par role en ferait autant de copies de la decision.

Trois sondes, trois enveloppes qui delegue a check_http et rendent son code tel
quel :

  collabora    edition     /hosting/discovery — l adresse que Nextcloud interroge
                           lui-meme ; sans elle le bouton ouvrir meurt et
                           Nextcloud reste vert
  rspamd       filtrage    un filtre muet ne bloque pas le courrier, il le laisse
                           passer
  oauth2_proxy passerelle  ce qui tombe avec elle n est pas elle : les services
                           derriere restent debout et deviennent injoignables

Chacune exige une CHAINE que seul le bon service produit — un 200 peut venir
d une page d erreur. Cette chaine est aussi la mise en defaut.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 09:34:31 -04:00
..
defaults supervision : le lot check_http, et les greffons qui manquaient a la flotte 2026-09-14 09:34:31 -04:00
handlers supervision : systemctl --failed entre dans Icinga (role client_sante) 2026-09-09 20:32:08 -04:00
meta supervision : systemctl --failed entre dans Icinga (role client_sante) 2026-09-09 20:32:08 -04:00
tasks supervision : le lot check_http, et les greffons qui manquaient a la flotte 2026-09-14 09:34:31 -04:00
templates le site surveille enfin sa fabric 2026-09-10 18:50:43 -04:00
README.md client_sante : retrait d une garde qui ne pouvait pas se declencher 2026-09-09 21:06:08 -04:00

client_sante

Le nœud rapporte à Icinga ses unités systemd en échec, par résultat passif.

Pourquoi

Trouvé le 2026-09-09 : openipmi.service échouait à chaque démarrage sur les quatorze machines de Chezlepro depuis le 2026-09-02. systemctl --failed rendait pourtant zéro partout — non parce qu'elles allaient bien, mais parce qu'aucune n'avait redémarré depuis. Six jours et vingt heures pour la première. Il a fallu qu'un humain redémarre une machine pour que le défaut existe aux yeux de quelqu'un.

Un contrôle qui ne peut échouer qu'au démarrage ne mesure rien tant que rien ne démarre.

Et le dégât n'est pas cosmétique : une unité en échec permanent use le seul signal qui devrait alerter. Le jour où une vraie unité tombe, le compte passe de 1 à 2 et personne ne fait la différence.

Passif, et à durée de vie

Un contrôle actif ne voit pas la machine muette : si elle ne répond plus, la sonde échoue et on met ça sur le compte du réseau. Ici c'est le nœud qui parle, et le ttl de son envoi fait la fraîcheur — sans nouvelle, Icinga périme le service tout seul. Le silence alerte autant que l'échec, et le silence est précisément ce qui n'a alerté personne.

Le minuteur déclenche au démarrage (OnBootSec=2min) autant que périodiquement : les échecs de cette famille naissent au boot, et attendre le premier quart d'heure laisserait une fenêtre pendant laquelle la machine est en panne et le tableau au vert.

Tolérances

client_sante_unites_tolerees nomme les unités acceptées une par une, jamais un motif large : un filtre qui cache une unité en cache d'autres, et on ne s'en aperçoit que le jour où l'on cherche pourquoi rien n'a alerté. Le défaut est la liste vide — une unité en échec est soit un vrai problème, soit du bruit à retirer ; dans les deux cas il faut agir.

Ce dont il dépend

Un hôte serveur_icinga dans l'écosystème, le secret vault_icinga_api_depot, et le flux TCP 5665 vers lui — déclaré des deux côtés. Le côté serveur (roles/serveur_icinga/meta/flux.yml) nomme le pair serveur_debian, pas client_sante : la frontière ne résout que les rôles que les machines portent au plan, et une intégration universelle n'y figure pas puisqu'elle est dérivée. L'oubli s'est payé le 2026-09-09 — déploiement à 7/7, et cinq rapports sur sept en TimeoutError.

Le rôle n'a pas de branche « et s'il n'y a pas de supervision ». Il n'en a pas besoin : instancier ne pose une intégration universelle que si son serveur existe, donc le groupe client_sante est absent d'un écosystème sans Icinga. À la place, un assert qui peut échouer, et qui dit lequel des deux manque.