Set-OPS-Public/roles/serveur_icinga/templates/setops-materiel.conf.j2
Daniel Allaire 49ceb81a4d materiel : un catalogue de capteurs, un tableau Grafana, un verdict Icinga
Les hyperviseurs exposaient temperatures, ventilateurs, SMART et usure NVMe sans que rien
les regarde. scripts/materiel.py porte capteurs et seuils ; Grafana en tire le tableau
Materiel, Icinga un service materiel par hyperviseur. Premier verdict : le disque sda de
gandalf (OSD Ceph) a 56 secteurs en attente, stables.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 10:13:43 -04:00

54 lines
1.9 KiB
Django/Jinja

/*
* Gere par Set-OPS (role serveur_icinga). Ne pas editer a la main.
*
* LE MATERIEL — hyperviseurs et frontiere (2026-09-17).
*
* Ces equipements n'accueillent aucun porteur de sante : ils ne peuvent rien pousser. Mais
* Prometheus les TIRE deja. Le controle lit donc ce qu'il a recolte, avec le catalogue que
* le tableau Grafana « Materiel » affiche — `scripts/materiel.py`, une source, deux lecteurs.
*
* L'HOTE EST JUGE PAR PROMETHEUS, PAS PAR UN PING. Un `hostalive` depuis cette machine vers
* la grappe de controle exigerait un flux ICMP qu'aucune couche ne declare ; il dirait
* « eteint » d'une machine en parfaite sante. Le seul chemin qui existe est celui de la
* scrutation : c'est lui qu'on interroge.
*/
object CheckCommand "setops-materiel" {
command = [ "{{ serveur_icinga_materiel_sonde }}" ]
arguments = {
"--hote" = "$setops_materiel_hote$"
"--catalogue" = "{{ serveur_icinga_materiel_catalogue }}"
"--prometheus" = "{{ serveur_icinga_materiel_prometheus }}"
}
}
object CheckCommand "setops-materiel-joignable" {
command = [ "{{ serveur_icinga_materiel_sonde }}", "--joignabilite" ]
arguments = {
"--hote" = "$setops_materiel_hote$"
"--catalogue" = "{{ serveur_icinga_materiel_catalogue }}"
"--prometheus" = "{{ serveur_icinga_materiel_prometheus }}"
}
}
{% for h in setops_materiel_hotes | default([]) %}
object Host "{{ h.nom }}" {
check_command = "setops-materiel-joignable"
address = "{{ h.adresse }}"
check_interval = 1m
retry_interval = 30s
vars.role = "{{ h.role }}"
vars.setops_materiel_hote = "{{ h.nom }}"
}
object Service "materiel" {
host_name = "{{ h.nom }}"
check_command = "setops-materiel"
check_interval = 5m
retry_interval = 1m
{# Trois lectures avant de crier : le verdict est deja lisse (moyennes de 5 a 15 min), on
ne veut pas d'une alerte sur un redemarrage de Prometheus. #}
max_check_attempts = 3
vars.setops_materiel_hote = "{{ h.nom }}"
}
{% endfor %}