86 lines
4.6 KiB
YAML
86 lines
4.6 KiB
YAML
|
|
---
|
||
|
|
# Metriques derivees du role. Le pendant de `meta/supervision.yml`, et son contraire.
|
||
|
|
#
|
||
|
|
# `supervision.yml` -> une SONDE rend un VERDICT avec un TTL. « est-ce casse ? »
|
||
|
|
# `metriques.yml` -> un EXPORTATEUR expose une SERIE. « depuis quand,
|
||
|
|
# et vers ou ? »
|
||
|
|
#
|
||
|
|
# PAS D'`exportateur:` ICI, ET C'EST VOULU. Ce role EST celui qui pose node_exporter, et
|
||
|
|
# le job `node` est ecrit en dur dans `prometheus.yml.j2` parce qu'il est UNIVERSEL : il
|
||
|
|
# vise toute la flotte, pas les porteurs d'un role. Le deriver d'ici le ferait exister
|
||
|
|
# deux fois, et deux ecritures d'un meme fait finissent par diverger.
|
||
|
|
#
|
||
|
|
# Ce fichier n'apporte donc que des `panneaux` — la moitie que personne ne portait. C'est
|
||
|
|
# le cas symetrique de celui que le moteur sait deja traiter : un role peut declarer un
|
||
|
|
# exportateur sans panneau, il peut declarer des panneaux sans exportateur.
|
||
|
|
#
|
||
|
|
# LE CRITERE, LE MEME QUE PARTOUT : une serie a sa place ici si elle PRECEDE un verdict ou
|
||
|
|
# si elle n'en aura jamais. Ce qui bascule d'un coup appartient a Icinga ; ce qui derive
|
||
|
|
# lentement n'a que le graphe pour se faire voir.
|
||
|
|
#
|
||
|
|
# TOUT EST AGREGE PAR `instance`. node_exporter publie une serie par interface, par point
|
||
|
|
# de montage, par coeur : 339 series pour le seul trafic reseau du site, mesure le
|
||
|
|
# 2026-09-14. Un panneau qui les montre toutes ne montre rien.
|
||
|
|
panneaux:
|
||
|
|
- titre: "Mémoire disponible (part du total)"
|
||
|
|
expr: >-
|
||
|
|
sum by (instance) (node_memory_MemAvailable_bytes)
|
||
|
|
/ clamp_min(sum by (instance) (node_memory_MemTotal_bytes), 1)
|
||
|
|
unite: ratio
|
||
|
|
raison: >-
|
||
|
|
CELUI-LA COMPTE DEPUIS QUE LE BALLON EST ACTIF. L'hyperviseur reprend de la memoire
|
||
|
|
a une VM qui n'en a pas besoin — silencieusement, 100 Mio par cycle. La VM ne voit
|
||
|
|
pas son plafond bouger : elle voit sa marge fondre. Aucun verdict ne peut se poser
|
||
|
|
la-dessus, parce qu'il n'y a pas de seuil juste : c'est la PENTE qui dit si le
|
||
|
|
plancher a ete pris trop bas.
|
||
|
|
|
||
|
|
- titre: "Espace libre — le point de montage le plus serré"
|
||
|
|
# UNE LISTE BLANCHE DE SYSTEMES DE FICHIERS REELS, ET PAS UNE LISTE NOIRE.
|
||
|
|
#
|
||
|
|
# La premiere ecriture excluait `tmpfs|devtmpfs|overlay|squashfs`. Mesure du
|
||
|
|
# 2026-09-14 sur la flotte : le panneau rendait **0 octet libre** pour les trois
|
||
|
|
# hyperviseurs. Le coupable etait `/var/lib/lxcfs`, un systeme FUSE virtuel qui
|
||
|
|
# rapporte toujours zero — et qui n'est pas en lecture seule, donc aucun filtre
|
||
|
|
# malin ne l'ecartait.
|
||
|
|
#
|
||
|
|
# UN `min()` EST IMPITOYABLE : un seul montage pathologique suffit a rendre le
|
||
|
|
# panneau inutile POUR TOUJOURS, et sa courbe plate ressemble a un disque plein.
|
||
|
|
# C'est la pire sorte de faux : lisible, alarmant, et faux.
|
||
|
|
#
|
||
|
|
# Une liste noire suit ce qui existe — elle prend donc du retard des qu'un systeme de
|
||
|
|
# fichiers nouveau apparait. Une liste blanche, elle, ignore par defaut : un montage
|
||
|
|
# inconnu manque au graphe, ce qui se voit, au lieu de l'ecraser, ce qui ne se voit
|
||
|
|
# pas. Mesure du 2026-09-14 : la flotte ne monte que ext4, vfat, tmpfs, fuse et
|
||
|
|
# fuse.lxcfs.
|
||
|
|
expr: >-
|
||
|
|
min by (instance) (node_filesystem_avail_bytes{fstype=~"ext4|xfs|btrfs|zfs"})
|
||
|
|
unite: octets
|
||
|
|
raison: >-
|
||
|
|
La sonde `sante` crie quand un seuil est franchi. Ce panneau dit ce qu'elle ne peut
|
||
|
|
pas dire : DANS COMBIEN DE TEMPS. Un disque qui perd 2 Go par semaine n'a rien
|
||
|
|
casse — il annonce la date ou il cassera, et c'est la seule chose qu'on ne peut pas
|
||
|
|
mesurer apres coup.
|
||
|
|
|
||
|
|
- titre: "Charge par cœur"
|
||
|
|
expr: >-
|
||
|
|
node_load1
|
||
|
|
/ on(instance) group_left count by (instance) (node_cpu_seconds_total{mode="idle"})
|
||
|
|
unite: nombre
|
||
|
|
raison: >-
|
||
|
|
NORMALISEE, sinon elle ne se compare pas : une charge de 4 est confortable sur huit
|
||
|
|
coeurs et desastreuse sur deux. Au-dessus de 1, la machine attend plus qu'elle ne
|
||
|
|
travaille. C'est le contexte des trois autres — une memoire qui fond a charge
|
||
|
|
CONSTANTE ne dit pas la meme chose qu'une memoire qui fond parce que le travail a
|
||
|
|
double.
|
||
|
|
|
||
|
|
- titre: "Trafic réseau entrant"
|
||
|
|
expr: >-
|
||
|
|
sum by (instance) (rate(node_network_receive_bytes_total{device!="lo"}[5m]))
|
||
|
|
unite: octets_par_seconde
|
||
|
|
raison: >-
|
||
|
|
Il n'aura JAMAIS de verdict, et c'est pourquoi il est la. Aucun seuil de trafic
|
||
|
|
n'est juste : ce qui se lit, c'est le changement de FORME — un plateau la ou il y
|
||
|
|
avait des vagues, un creux aux heures ouvrables. Une sauvegarde qui ne part plus et
|
||
|
|
un flux qu'on vient de fermer se ressemblent ici, et ne se voient nulle part
|
||
|
|
ailleurs.
|