Installation de smokeping


Ajoute le dépôt EPEL sur notre RedHat like :
yum install epel-release

Puis on installe les dépendances nécessaires à smokeping :
yum install mod_fcgid httpd httpd-devel rrdtool fping wget curl bind-utils gcc make perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-RRD-Simple perl-CGI-SpeedCGI perl-ExtUtils-MakeMaker rrdtool-perl

Et à l'ancienne, on récupère les sources de smokeping, puis on le compile :
cd /tmp
wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.9.tar.gz
tar -zxvf smokeping-2.6.9.tar.gz -C /opt/
mkdir /opt/smokeping
cd /opt/smokeping-2.6.9/setup
./build-perl-modules.sh
cp -r ../thirdparty /opt/smokeping/
cd ..
./configure --prefix=/opt/smokeping
make install

Ajout du script de démarrage


Bizarrement, smokeping ne propose pas de script d'init, c'est chiant. On crée un script tout bête :
vim /etc/init.d/smokeping

Avec ce contenu :
#!/bin/bash
#
# chkconfig: 2345 80 05
# Description: Smokeping init.d script
# Hacked by : How2CentOS - http://www.how2centos.com

# Get function from functions library
. /etc/init.d/functions

# Start the service Smokeping
start() {
       echo -n "Starting Smokeping: "
        /opt/smokeping/bin/smokeping >/dev/null 2>&1
       ### Create the lock file ###
       touch /var/lock/subsys/smokeping
        success $"Smokeping startup"
       echo
}

# Restart the service Smokeping
stop() {
       echo -n "Stopping Smokeping: "
       kill -9 `ps ax | grep "/opt/smokeping/bin/smokeping" | grep -v grep | awk '{ print $1 }'` >/dev/null 2>&1
       ### Now, delete the lock file ###
       rm -f /var/lock/subsys/smokeping
        success $"Smokeping shutdown"
       echo
}

### main logic ###
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status smokeping
        ;;
  restart|reload|condrestart)
        stop
        start
        ;;
  *)
       echo $"Usage: $0 {start|stop|restart|reload|status}"
       exit 1
esac

exit 0


On change les droits :
chmod a+x /etc/init.d/smokeping

Configuration d'Apache pour Smokeping


Il n'y a pas grand chose à faire dans cette partie, dans le VHost pour Smokeping ou dans le fichier httpd.conf :
ScriptAlias /smokeping/smokeping.cgi /opt/smokeping/htdocs/smokeping.fcgi.dist
Alias /smokeping /opt/smokeping/htdocs
<Directory “/opt/smokeping/htdocs”>
        Options FollowSymLinks
        Order allow,deny
        Allow from all
</Directory>


Et on oublie pas de redémarrer Apache (car nouveaux modules) :
service httpd configtest
service httpd restart

Configuration minimale de Smokeping


Cette partie va être très succincte car je n'ai pas installé Smokeping 2.6 mais j'ai migré un Smokeping 2.4. Pour une configuration initiale, je vous conseille de consulter la documentation officielle.

Toute la configuration de smokeping se passe dans le fichier etc/config, on l'édite :
vim /opt/smokeping/etc/config

Il faut modifier/vérifier les différents chemins :
imgcache = /opt/smokeping/cache
imgurl   = https://<mon_site>/smokeping/cache
datadir  = /opt/smokeping/data
piddir  = /opt/smokeping/var


On peut customiser quelques strings :
owner    = <Mon_Institut>
contact  = admin@<mon_domaine>


On définit les adresses mails pour les alertes (non utilisées pour le moment) :
to = admin@<mon_domaine>
from = smokeping@<mon_domaine>


Et pour pas partir à vide, on va définir une sonde pour le routeur d'entrée de site. Ou alors vous pouvez pinguer une ressource fiable sur l'Internet afin de mesurer la latence de votre interco et les pertes de paquets, il suffit de remplacer <ip_routeur> par <ip_site_fiable>.

On va tout d'abord créer une arborescence, enfin l'élément parent en tout cas :
+ <mon_institut>
menu=<Mon_Institut>
title=M&eacute;trologie <Mon_Institut>


Puis un sous item pour notre sonde :
++ icmp_router
title=Ping ICMP Routeur
probe=FPing
menu=Ping ICMP
host=<ip_routeur>


Vous l'aurez compris, on crée l'arborescence dans le fichier etc/config et avec des "+". Par contre, pour utiliser d'autres sondes, il est nécessaire d'avoir le binaire présent sur le système et de le déclarer dans le fichier etc/config. Une liste des sondes est disponible ici : http://oss.oetiker.ch/smokeping/probe/index.en.html

On démarre le service (enfin !) :
chkconfig smokeping on
service smokeping start


Exemple de graphiques


J'aurais peut être du commencer par montrer le rendu des graphiques Smokeping. Ceux ci se basent sur rrdtool (du même auteur) et ont l'avantage de concentrer beaucoup d'info sur un même graphe. On a le ping moyen, ça s'est super mais en plus on a la gigue réseau, c'est à dire le delta entre le ping mini et le ping max. On peut avoir un temps de réponse moyen de 40ms mais avoir certains paquets qui mettent plus de 1000ms ! Ça a son importance. De plus, avec un code couleur, on peut lire aussi les pertes de paquets, donc l'état de santé d'une interco par exemple. Dans le cadre privé, j'ai pu détecter un problème sur ma ligne adsl avant même la coupure. Bon en l’occurrence, j'ai été trop proactif pour l'opérateur qui n'a rien voulu savoir tant qu'il n'y avait pas de coupures -> "Monsieur, nous ne mesurons pas les pertes de paquets, je vois votre modem connecté, tout va bien" ...

Par exemple, l'évolution du temps de réponse de ma ligne ADSL sur l'année. On voit le taux de paquets perdus assez énormes; c'est du au protocole UDP ainsi qu'aux deux mois de coupures sur l'année ...
smokeping_exemple1.png

Ici, je check la disponibilité de ma VPS, on voit bien la différence entre temps de réponse moyen et gigue réseau :
smokeping_exemple2.png

Installation de EchoPing


SI vous voulez utiliser ce probe, alors il faut le compiler :
yum install popt-devel libidn-devel openssl-devel
cd /tmp
wget http://downloads.sourceforge.net/project/echoping/echoping/6.0.2/echoping-6.0.2.tar.gz
tar zxvf echoping-6.0.2.tar.gz
./configure --with-ssl=/usr/include
make install
ln -s /usr/local/bin/echoping /usr/bin/echoping


Conclusion


Smokeping est un outil très spécialisé et donc ne couvre pas tous les besoins en monitoring. Par contre, il excelle dans la mesure des temps de réponse et peut permettre d'évaluer la qualité du service rendu et pas simplement sa disponibilité. Si un utilisateur vous dit "ça rame ce matin", vous aurez des éléments concrets pour en juger.

Pour ma part, je le vois en complément d'une solution Cacti/Nagios. D'autant plus qu'il est possible d'intégrer les graphes dans des tableaux de bords IT, les images sont accessibles dans le dossier cache/. On le destine principalement à des indicateurs réseaux, ping des routeurs des sites distants mais on peut aussi faire des pings "applicatifs" sur des services finaux : portails web, SMTP, SSO, etc.

Référence


Une doc d'installation pour RedHat6 dont je me suis fortement inspiré : http://www.wedebugyou.com/2012/11/how-to-install-and-configure-smokeping-on-centos-6/

La documentation officiel : http://oss.oetiker.ch/smokeping/doc/smokeping_install.en.html

L'image de Tux Sherlock Holmes : http://tux.crystalxp.net/fr.id.5975-sherlock-holmes-tux.html