Sur la machine srv-lin-01. Lire le ticket, agir dans le terminal, puis vérifier.
Ticket 6578, ouvert par Léna Guérin : ce matin, de 7 h à 9 h, le portail des abonnés a montré une page d'erreur aux abonnés venus consulter leur facture, parce que sa base de données ne répondait plus. Le tableau de bord de la supervision est resté vert tout du long. Sa sonde, /usr/local/lib/supervision/sonde-portail, ne vérifie que l'ouverture du port du portail, et le port est resté ouvert.
Réécrire la sonde pour qu'elle fasse ce que fait un utilisateur : demander la page d'état du portail, dont la supervision lui passe l'adresse en premier argument, et vérifier qu'elle annonce BASE: CONNECTEE. Elle rend le code 0 quand le service est rendu, et 2 (critique) dans tous les autres cas, y compris quand le portail ne répond plus du tout : la supervision abandonne une sonde qui n'a pas rendu son verdict au bout de 15 secondes. Elle est lancée sous le compte supervision.
Pour l'essayer, deux pages d'état : celle de la production, http://127.0.0.1:8080/etat, montre encore la panne ; celle de la recette, http://127.0.0.1:8081/etat, un portail qui va bien.
Rappel
Le chapitre distingue la supervision technique (la machine tourne-t-elle ?) de la supervision fonctionnelle (le service est-il rendu ?), et demande une sonde par service critique qui fait ce que fait un utilisateur.
Une sonde est un petit programme que la supervision lance à intervalle régulier, et dont elle lit le code de sortie : 0 pour OK, 1 pour un avertissement, 2 pour critique (c'est la convention de Nagios, que reprennent Centreon et bien d'autres outils). La ligne de texte qu'elle affiche apparaît sur le tableau de bord.
- Dans un script,
$1est le premier argument ;exit 2termine avec le code 2 ;if commande; then ... fiagit selon le code d'une commande ; danscommande1 | commande2, le code est celui de la dernière commande. wget -q -O - URLaffiche la page, et rend un code différent de 0 quand le serveur répond par une erreur ou ne répond pas ;-T 5abandonne après 5 secondes sans réponse.grep -qF 'texte'ne montre rien, et rend 0 si le texte exact figure dans ce qu'il lit.- Pour écrire le fichier :
sudo nano /usr/local/lib/supervision/sonde-portail, ouprintf '...' | sudo tee /usr/local/lib/supervision/sonde-portail(\npasse à la ligne). La sonde doit rester exécutable :ls -lle montre (x),sudo chmod 755le rétablit. - Pour l'essayer comme la supervision :
sudo -u supervision /usr/local/lib/supervision/sonde-portail http://127.0.0.1:8081/etat, puisecho $?pour lire son code.
Boîte à outils
Un clic écrit la commande au curseur, sans la lancer.
Indications
Le ticket se prépare dès que la machine est prête.
Ce terminal ouvre une vraie machine Linux, srv-lin-01, qui tourne dans la page.
Environ 14 Mo à télécharger la première fois, et 300 Mo de mémoire. Sur un téléphone, le travail se fait à l'étroit : un ordinateur avec un clavier convient mieux.