ELX-HealthMonitor
Ce qu'un serveur Linux fait maintenant et ce qu'il faisait la semaine dernière
Un agent de supervision avec interface web, historique en SQLite et alertes par courriel. Un exécutable unique sans dépendances : l'interface est dans le binaire et la base se crée toute seule. Sur un Celeron de quatre ans, il coûte environ quatre pour cent d'un cœur et onze mégaoctets de mémoire.
Lu dans le noyau, non deviné
Tout provient directement de /proc, /sys et smartctl. Aucun collecteur à installer, aucune base de séries temporelles à faire tourner et aucun couple agent-serveur à garder d'accord.
Les disques avant la panne
Santé SMART, température, heures de fonctionnement, secteurs réalloués et en attente, erreurs CRC, usure des SSD et volume total écrit — avec le tableau complet des attributs quand vous voulez regarder de plus près.
Le RAID, y compris la part inconfortable
État de la grappe, niveau, membres, disques défaillants et avancement de la resynchronisation — plus la carte des intentions d'écriture, qui dit si les copies sont réellement identiques à cet instant, et le nombre d'écarts relevés à la dernière vérification.
Les services avec leurs entrées-sorties
Chaque unité systemd avec son processeur, sa mémoire, ses lectures et écritures disque, son nombre de tâches et ses redémarrages — et des boutons pour démarrer, arrêter et changer le démarrage automatique.
Des alertes qui ne crient pas au loup
Une règle porte un délai de maintien : une pointe de dix secondes à pleine charge n'envoie rien, dix minutes à ce niveau envoient un courriel. C'est ce seul réglage qui sépare les messages qu'on lit de ceux qu'on filtre.
Un historique qui ne grossit pas sans fin
Trois jours en pleine résolution, puis des tranches de cinq minutes gardant la moyenne, le minimum et le maximum, et rien de plus vieux qu'un mois. Les pointes survivent à l'éclaircissage ; les gigaoctets non.
Ce qui est mesuré
| Section | Mesures |
|---|---|
| Processeur | Charge totale et par cœur, user/system/iowait/steal, fréquence, charge moyenne, changements de contexte, file d'attente |
| Mémoire | Occupée, disponible, cache, tampons, slab, pages modifiées, échange et intensité de son usage |
| Disques | Débits de lecture et d'écriture, IOPS, latence, occupation du périphérique, modèle, capacité |
| Systèmes de fichiers | Occupé, libre, pourcentage, inodes |
| SMART | Santé, température, heures de fonctionnement, secteurs réalloués et en attente, erreurs CRC, usure des SSD, volume écrit sur la durée de vie, tableau complet des attributs |
| RAID | État des grappes md, niveau, membres, disques défaillants, avancement et vitesse de resynchronisation, égalité actuelle des copies et écarts de la dernière vérification |
| Réseau | Octets et paquets entrants et sortants, erreurs et pertes, état du lien, vitesse du port, adresses, MTU |
| Température | Tous les capteurs hwmon et zones thermiques ACPI, plus les températures des disques issues du SMART |
| Services | État et démarrage automatique des unités systemd, processeur, mémoire, entrées-sorties par service, nombre de tâches, redémarrages |
| Processus | Les premiers par processeur et par mémoire, activité disque, propriétaire, unité |
Chaque section se désactive séparément, et une section désactivée n'est pas interrogée du tout.
La question sur le RAID qu'il faut poser
Une grappe en miroir garde les mêmes données sur les deux disques, mais les écritures ne les atteignent pas au même instant. Le noyau note les zones susceptibles de différer dans une carte des intentions d'écriture, et cet agent montre cette carte directement : tant que le nombre de zones sales est nul, les copies sont identiques ; au-delà, une resynchronisation est en cours.
À côté figure le nombre d'écarts relevés lors de la dernière vérification d'intégrité. Une valeur non nulle signifie qu'un disque ou un contrôleur a rendu des données différentes des deux moitiés d'un miroir — et c'est précisément la panne pour laquelle la supervision existe, et précisément celle qu'un voyant vert « grappe saine » dissimule.
Ce que cela coûte à faire tourner
Les mesures coûteuses suivent leur propre calendrier, à part de la boucle principale : réveiller cinq disques toutes les trois secondes pour leur demander leur température serait pire que de ne pas les surveiller.
| Réglage | Défaut | Ce qu'il gouverne |
|---|---|---|
interval_sec | 3 s | La boucle principale d'interrogation |
services.interval_sec | 15 s | Un parcours complet des unités systemd |
disk.smart_interval_sec | 900 s | L'interrogation SMART — c'est elle qui réveille les disques |
storage.persist_interval_sec | 30 s | L'écriture d'un instantané dans l'historique |
Mesuré sur un Celeron J1900 à quatre cœurs, avec 165 unités systemd et cinq disques : environ quatre pour cent d'un cœur et onze mégaoctets de mémoire. Sur un Xeon E5-2690, moins de trois pour cent d'un cœur.
L'interface
- Le navigateur retient vos choix : la période de chaque graphique, les courbes masquées d'un clic sur la légende, et les filtres des tableaux de services et d'événements. Un rechargement n'en efface aucun.
- Toutes les courbes montent depuis zéro, l'unité de l'axe suit la plage des valeurs et le nombre de décimales suit le pas de la grille — deux graduations voisines ne portent donc jamais la même étiquette.
- Après une mise à jour, un onglet ouvert remarque de lui-même le changement de version, le dit et se recharge, au lieu de laisser une interface périmée dans le cache du navigateur.
- Les boutons de redémarrage et d'extinction de la machine sont dans l'en-tête ; si vous n'en voulez pas, une clé de configuration les retire.
- Chaque action irréversible se trouve derrière une confirmation qui explique la conséquence, et le bouton porte le nom de l'action plutôt que « OK ».
En bref
- Systèmes d'exploitation
- Debian et Ubuntu avec systemd
- Architectures
- amd64, arm64, armhf
- Interface web
- Port 8555 par défaut
- Historique
- SQLite ; 3 jours bruts, 31 jours condensés
- Dépendance facultative
- smartmontools, pour la section SMART
- Coût habituel
- ~4 % d'un cœur, ~11 Mo de mémoire
- Alertes
- Courriel par SMTPS, STARTTLS ou en clair
- Configuration
- Interface web, ou config.json
ELX-HealthMonitor
Ce qu'un serveur Linux fait maintenant et ce qu'il faisait la semaine dernière
Télécharger