samedi 3 mai 2014

Script de surveillance pour terminal bash Linux : présence en ligne des serveurs


Script de monitoring serveur pour terminal Linux

Le monitoring de la présence effective, des serveurs en ligne, est un vaste sujet déjà abordé à plusieurs reprises dans ce blog.

Pour voir les différentes techniques déjà évoquées (+/- une quinzaine), je vous renvoie à la page : http://www.ihaveto.be/search/label/Monitoring%20server

Je vais donc ici en remettre une couche ;-) Ce n'est pas que l'on manque d'outils mais à chaque situation peut correspondre un outils différent,qui s'adapte mieux à l'environement.

Cette fois-ci, nous allons aborder le monitoring sous l'angle de la ligne de commande sous Linux. J'ai en effet toujours avec moi, dans un sac à dos, un ancien Asus EEPC 1000H, tournant sous un Linux patché par SimpleCRM OsUX. Si vous ne connaissez pas SimpleCRM OsUX: il s'agit d'un script d'optimisation de linux léger dopant les performances des vieux laptop. Voyageant souvent dans des pays aux connexions Internet de mauvaise qualité, il ne m'est pas toujours possible de me connecter en VNC à mes outils de monitoring habituel.

Il est donc primordial pour moi d'avoir un monitoring visuel de secour. Le terminal Linux nous permet de bricoler en quelques minutes une solution tout-à-fait opérationnelle.



Les fonctions du script de monitoring serveur en ligne de commande


Le cahier des charges est très simple : le script doit télécharger une page et y chercher un mot précis. Si ce mot n'y est pas, un message de down serveur doit apparaitre en rouge. Si aucun problème n'est rencontré, un message vert est affiché.

De plus, le temps de téléchargement doit être également affiché.

Création du script de monitoring server en bash 


Ce script est extrêmement simple. Nous allons construire celui-ci grâve à CURL qui va télécharger la page et GREP qui va chercher le mot visé, le tout fonctionement dans une boucle infinie.

#!/bin/bash

# Tant que c'est vrai...
while true
do

# D'abord nettoyons l'affichage
clear

# Puis affichons l'heure et la date
echo ============================================
date
echo ============================================
echo

# Nettoyons le fichier de stockage des pages à télécharger
echo > tmp

# Téléchargeons la page d'accueil du blog http://ihaveto.be dans le fichier tmp
curl -o tmp ihaveto.be

# Cherchons y le terme « brice » dans le fichier tmp
# S'il y est : message en vert et s'il n'y est pas, message en rouge
if grep -q brice tmp; then echo -e "\e[1;32m------------------- | IHAVETO.BE : UP\e[00m"; else echo -e "\e[1;31m /!\ /!\ /!\ IHAVETO.BE : DOWN /!\ /!\ /!\ \e[00m"; fi

echo

# On nettoye le fichier tmp
# (bon ok pas indispensable mais ce sont des séquelles des fflush en C)
echo > tmp

# On fait la même chose avec le site suivant
curl -o tmp crm-pour-pme.fr
if grep -q CRM tmp; then echo -e "\e[1;32m------------------- | CRM-POUR-PME.FR : UP\e[00m"; else echo -e "\e[1;31m /!\ /!\ /!\ CRM-POUR-PME : DOWN /!\ /!\ /!\ \e[00m"; fi

# On pause pensant 60 secondes
sleep 60s
done

Et voilà ! Je vous avais prévenu en vous disant que ce n'était pas compliqué du tout.

Pour les débutants, je rapelle qu'il faut (par exemple), stocker ce script sous la forme test_monitoring .sh

et que pour le lancer il faudra saisir la commande: bash ./test_monitoring.sh

Résultat visuel avec un serveur DOWN et un serveur UP :



Aucun commentaire:

Enregistrer un commentaire