Micro article d’installation de la dernière version de Smokeping sur une RedHat6 like. Le pti Smokeping n’existe pas en RPM, il faut donc le compiler, pas toujours facile.
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é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 …
Ici, je check la disponibilité de ma VPS, on voit bien la différence entre temps de réponse moyen et gigue réseau :
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