J’ai arrêté d’écrire mes SLOs Prometheus à la main
J'ai construit nines.arewel.com pour générer mes SLOs Prometheus en trois étapes. Demo : disponibilité de l'UI Proxmox sur heighliner, déploiement du ZIP validé sur hubble.
Après avoir collé tous les tableaux de bord possibles, j'ai gardé trois choses. Retour sur ce qui m'a vraiment servi.
Quand j’ai monté Prometheus et Grafana, j’ai fait comme tout le monde : j’ai importé un tableau de bord communautaire. Résultat : 40 panneaux, des courbes qui bougent dans tous les sens, et un sentiment très net de compétence devant mon écran.
Puis Nextcloud est tombé en panne silencieuse pendant 48 heures (disque plein, je l’ai raconté ailleurs). Mon beau tableau de bord affichait bien l’espace disque. Simplement, je ne le regardais pas, et rien ne me prévenait.
Leçon : un tableau de bord impressionnant ne surveille rien tant que personne ne le regarde. Ce qui compte, c’est la poignée de signaux qui, s’ils passent au rouge, te font réagir.
Voici ce que j’ai gardé, et ce que j’ai jeté.
C’est la reine des pannes domestiques. Un disque plein, et tout dégénère : bases de données qui refusent d’écrire, sauvegardes qui échouent, services qui plantent de façon étrange.
La requête que j’utilise (avec node_exporter) pour le pourcentage d’espace libre :
node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}
/ node_filesystem_size_bytes{fstype!~"tmpfs|overlay"} * 100
Et la version « prédictive », que j’aime beaucoup : est-ce que ce disque sera plein dans les 4 prochaines jours si ça continue comme ça ?
predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}[6h], 4*24*3600) < 0
La différence est énorme : le pourcentage te prévient quand il est déjà tard, la prédiction te prévient quand il est encore temps.
Prometheus sait si une cible est joignable grâce à la métrique up :
up == 0
C’est presque trop simple, et pourtant c’est le signal le plus fiable. Une machine éteinte, un service planté, un réseau coupé : up passe à 0.
Pour aller plus loin, une sonde de l’extérieur (un petit contrôle HTTP qui interroge tes services comme le ferait un visiteur) attrape les cas où le service tourne mais ne fonctionne plus vraiment. Je l’héberge sur une machine séparée : si le homelab tombe, la surveillance ne tombe pas avec.
Pas la mémoire « utilisée » (Linux utilise volontiers toute la RAM pour son cache, et c’est normal). Ce qui compte, c’est la mémoire réellement disponible et surtout le swap.
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100
Et pour le swap :
node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes
Un swap qui se remplit durablement, c’est le symptôme d’une machine trop chargée. Chez moi, c’est exactement ce qui m’a alerté d’une allocation de RAM trop gourmande sur mes VM.
Je ne dis pas que ces métriques sont inutiles en soi. Elles le sont pour moi, à cette échelle, sans que quelqu’un les regarde en continu :
Mon critère de tri est simple : « si ça change, est-ce que je fais quelque chose ? » Si la réponse est non, ça sort de l’écran principal.
Une métrique sans seuil est un décor. Une métrique avec un seuil et une notification devient un outil. Je me suis imposé quatre règles :
for: 10m évite les fausses alertes sur un pic ponctuel.Un exemple de règle d’alerte :
groups:
- name: homelab
rules:
- alert: DisquePresquePlein
expr: predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}[6h], 4*24*3600) < 0
for: 30m
annotations:
summary: "Disque {{ $labels.mountpoint }} sur {{ $labels.instance }} plein d'ici 4 jours"
Un seul écran, lisible d’un coup d’œil :
up),Tout le reste est dans des tableaux de bord secondaires que j’ouvre quand j’enquête, pas pour surveiller.
Le piège du monitoring de homelab, c’est de le prendre pour un jeu de décoration. Plus il y a de courbes, plus ça fait sérieux. Mais ce qui sauve vraiment ta soirée, c’est ce petit message qui dit « ton disque sera plein jeudi » quand on est encore lundi.
Alors, ouvre ton tableau de bord, et pour chaque panneau demande-toi : « si ça passe au rouge, qu’est-ce que je fais ? » Si tu n’as pas de réponse, tu peux le supprimer sans regret.
Cet article est vivant - corrections, contre-arguments et retours de production sont les bienvenus. Trois canaux, choisis celui qui te convient.