Vous cherchez une solution de monitoring libre et gratuite ?

Vous avez surement entendu parler de différentes solutions comme shinken, nagios, zabbix
Mon favori est Nagios, c’est un des plus soutenu et utilisé (pour le moment, même si shinken commence à prendre des parts de marchés), cependant un de ses inconvénients est qu’il se configure via des fichiers de configurations sur l’OS.

Pour ceux qui préfèrent une interface web pour configurer nagios, il existe centreon.

screen_centreon2

Je vais présenter ici une solution sous forme de distribution qui permet d’avoir un environnement complet et fonctionnel. Cette distribution s’appelle FAN (Fully Automated Nagios), elle intègre Nagios, Centreon, Nagvis (diagrammes et schémas dynamiques de l’infra.), le support NRPE ainsi qu’une multitude de plugins nagios (trouvés sur le site communautaire de nagios).

La distribution est basée sur Centos 5, l’installation et la configuration se font comme toute autre distro (normalement sans soucis).

Une fois la distrib installée nous pouvons faire les mises à jour via la commande

yum update

Par la suite, j’ai personnellement customisé la page d’accueil, modifié le mot de passe par défaut.

Il ne reste plus qu’à ajouter/paramétrer vos plug-ins, services et hôtes.

La FAQ peut vous aider.

Si vous êtes curieux de savoir quand un site web est hors ligne sans pour autant devoir installer un service de monitoring. Voici un petit script bash (linux) qui vérifie la connexion au service web des sites inscrits dans la ligne HOSTS. Et qui vous prévient par mail et inscrit dans un fichier de log lors d’un incident.

Pour le faire fonctionner, il faut simplement indiquer les sites web à vérifier dans la variable HOSTS (séparés par des espaces), indiquer votre adresse email (en ayant pris soin de configurer mailutils)

Le script:

#!/bin/bash
HOSTS="yahoo.fr perdu.com https://google.be"
SUBJECT="Site web Hors ligne"
EMAIL="toto@exemple.com" # votre email ici
TIMEOUT=2

for myHost in $HOSTS
do
result=$(wget -T $TIMEOUT -t 1 $myHost -O /dev/null -o /dev/stdout | grep "Connecting to")
connected=$(echo $result | grep failed);
if [ "$connected" != "" ]; then
echo -e "$(date) - $myHost est down" >> check.log
for myEMAIL in $EMAIL
do
echo -e "$(date) - $myHost est down! \n Ceci est un message automatique." | mail -s "$SUBJECT" $myEMAIL
done
fi
done

 


Placer le script la ou vous pouvez l’exécuter, puis rendez le exécutable:

chmod +x check.sh

Puis ajouter la tache cron

crontab -e

Et ajouter à la fin (par exemple ici toute les heures)
@hourly check.sh