La supervision du site voyait ses sept VM et rien d autre. Au depart, depuis site-mon-01, les trois hyperviseurs, les neuf pattes de la frontiere et sa PROPRE passerelle par defaut rendaient tous 100 pourcent de perte au ping. 16 hotes UP sur 16 dont 9 pattes de frontiere en controle ACTIF 11 cibles Prometheus dont 3 hyperviseurs, job fabric separe LE PARTAGE. Les hyperviseurs portent node_exporter - D-48 l autorise - et exposent 1005 unites systemd avec leur etat, soit ce que la sonde sante mesurait, plus la charge et le disque. Ils n entrent PAS dans le socle : leur appliquer serveur_durci reecrirait le pare-feu, le SSH et les sysctl de la machine qui tient tout le reste. La frontiere, elle, n accueille aucun agent : controle actif, une entree par PATTE, parce qu une interface eteinte coupe une zone pendant que les autres vont bien. ON TIRE, ON NE POUSSE PAS. J avais propose du passif et il avait ete valide ; la mesure a dit non. Un hyperviseur envoie vers un routeur qui ne connait pas les reseaux du site, et sa route par defaut est GELEE (D-57). Le porteur de sante y expirait en 20 s. LE VRAI DEFAUT ETAIT UNE LISTE QUI N A PAS SUIVI. Le mecanisme de routage existait deja sur vmbr0, avec un commentaire du 2026-08-26 tenant exactement le raisonnement qu on venait de refaire. Sa liste s arretait a 10.0.34.0/24 quand le site en declare six : les zones sauvegarde et supervision sont nees, les routes n ont pas suivi. Le symptome ne ressemblait pas a une route manquante - il ressemblait a un pare-feu, puis a un probleme de reseau chez l exploitant. make routes-fabric-etat compare desormais TROIS choses : zones declarees, routes declarees dans /etc/network/interfaces, routes vivantes dans le noyau. Le cas le plus traitre est vivante mais non declaree : tout fonctionne, la supervision est verte, et la panne attend la prochaine maintenance. Eprouvee dans les deux sens. Deux defauts trouves en construisant. bifrost-2 est un nom RESERVE, pas un boitier - l underlay le disait en prose, illisible par le moteur ; il porte desormais etat: reserve. Et un service passif n existe que pour un hote qui peut POUSSER : l appartenance a un groupe sert deux choses qui ne coincident pas toujours, a qui l on deploie et de qui l on attend un rapport. Les commutateurs restent dehors, choix de l exploitant, coherent avec D-48. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
44 lines
1.9 KiB
Django/Jinja
44 lines
1.9 KiB
Django/Jinja
/*
|
|
* Gere par Set-OPS (role serveur_icinga). Ne pas editer a la main.
|
|
*
|
|
* LES HOTES, DEFINIS UNE SEULE FOIS.
|
|
*
|
|
* Ils vivaient dans `setops-sauvegardes.conf` — le seul fichier qui en avait besoin. Des
|
|
* qu'un second controle est arrive (la sante des noeuds, 2026-09-09), le meme `object
|
|
* Host` se serait retrouve dans deux fichiers, et Icinga REFUSE un objet en double : la
|
|
* configuration entiere aurait ete rejetee, donc AUCUNE supervision.
|
|
*
|
|
* Les fichiers de controle n'attachent plus que des SERVICES. Un controle de plus
|
|
* n'ajoute plus un hote de plus.
|
|
*/
|
|
|
|
{% for noeud in serveur_icinga_hotes_supervises | sort %}
|
|
object Host "{{ noeud }}" {
|
|
check_command = "hostalive"
|
|
address = "{{ noeud }}.{{ domaine_interne }}"
|
|
vars.role = "{{ 'depot de sauvegarde' if noeud == serveur_icinga_hote_sauvegarde else 'noeud de l ecosysteme' }}"
|
|
}
|
|
{% endfor %}
|
|
|
|
/*
|
|
* LA FABRIC — CE QUI PORTE TOUT, ET QU'AUCUN AGENT NE PEUT HABITER (2026-09-10).
|
|
*
|
|
* Un pare-feu n'accueille pas de porteur de sante : le controle ACTIF est le seul chemin
|
|
* possible, et il n'existait pas. La supervision du site voyait ses sept VM et rien
|
|
* d'autre — pas meme la passerelle par defaut de la machine qui la fait tourner.
|
|
*
|
|
* UNE ENTREE PAR PATTE, ET C'EST LE POINT. La frontiere est un seul boitier, mais chaque
|
|
* zone depend de SON interface. Une interface eteinte — on en a deja vu, les routes
|
|
* creees `disabled` le 2026-09-02 — coupe une zone pendant que les autres vont bien.
|
|
* Surveiller une seule adresse dirait « la frontiere est debout » et manquerait ce cas.
|
|
*
|
|
* L'ADRESSE, JAMAIS UN NOM : ces equipements ne sont dans aucun annuaire, et le plancher
|
|
* `/etc/hosts` ne les porte pas. Un nom fabrique ici ne resoudrait nulle part.
|
|
*/
|
|
{% for f in serveur_icinga_fabric | default([]) %}
|
|
object Host "{{ f.nom }}" {
|
|
check_command = "hostalive"
|
|
address = "{{ f.adresse }}"
|
|
vars.role = "{{ f.role }}"
|
|
}
|
|
{% endfor %}
|