SmokePing

De Lea Linux
Aller à la navigation Aller à la recherche

SmokePing

SmokePing
par Dimitri Clatot
Supervision de réseaux avec SmokePing

SmokePing

Présentation

SmokePing permet de mesurer et d'afficher sous forme graphique les temps de réponse aux ping, http, https, smtp d'une machine ou d'un groupe de machines, et de déclencher des alertes si une machine ne répond pas aux tests.
Cet article se veut seulement être un moyen de mise en place rapide de cet outil et non un substitut à la documentation officielle.

Installation des prérequis de SmokePing

Voici la liste de ces programmes :

Je vais détailler l'installation de tous ces programmes à l'exception d'Apache et de Perl qui sont fournis généralement avec votre distribution. Il est à noter que les programmes FPing IPV6 et le module perl Socket6 seront à installer si vous souhaitez gérer l'IPV6 (non développé ici).

Rappel : si votre distribution contient un paquetage pour rrdtool, préférez utiliser ce paquetage plutôt que les sources. Certains puristes prétendrons qu'utiliser les sources c'est l'esprit Linux, mais ce sont surtout des problèmes de dépendances non gérées, des choix par forcément simple à faire sur l'utilisation de telle ou telle fonctionnalité du logiciel que l'on désire compiler.

Pour vérifier que votre distribution contient un paquetage pour rrdtool, il faut utiliser l'outil de gestion de paquetage de celle-ci. Par exemple :

  • pour Ubuntu / Debian : apt-cache search rrdtool
  • pour Mageia / Mandriva : urpmq rrdtool
  • pour Gentoo : emerge -s rrdtool
  • pour Slackware : swaret --search rrdtool

Votre distribution contient aussi presque surement un outil graphique pour obtenir cette information.

Pour plus d'information sur ces questions, consulter cette documentation.

Installation de RRDtool

RRDtool permet de stocker les résultats des mesures faites et de les afficher sous forme graphique :

$ wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.42.tar.gz
$ tar zxvf rrdtool-1.0.42.tar.gz
$ cd rrdtool-1.0.42
$ ./configure
$ make
$ su
Password:
# make install
# ln -s /usr/local/rrdtool-1.0.42 /usr/local/rrdtool

Installation de FPing

FPing est une version améliorée de la commande ping :

$ wget http://people.ee.ethz.ch/~oetiker/webtools/smokeping/pub/fping-2.4b2_to.tar.gz
$ tar zvxf fping-2.4b2_to.tar.gz
$ cd fping-2.4b2_to
$ ./configure
$ make
$ su
Password:
# make install

Installation de echoping

echoping permet de tester les services echo, http, https, smtp... d'une machine  :

$ wget ftp://ftp.internatif.org/pub/unix/echoping/echoping-5.0.1.tar.gz
$ tar zxvf echoping-5.0.1.tar.gz
$ cd echoping-5.0.1
$ ./configure --with-ssl=/usr/include (pour Openssl)
$ make
$ su
Password:
# make install
# ln -s /usr/local/bin/echoping /usr/bin/echoping

Installation de SpeedyCGI

SpeedyCGI dope la vitesse d'exécution de SmokePing :

$ wget http://daemoninc.com/SpeedyCGI/CGI-SpeedyCGI-2.21.tar.gz
$ tar zxvf CGI-SpeedyCGI-2.21.tar.gz
$ cd CGI-SpeedyCGI-2.21
$ perl Makefile.PL

Optional mod_speedycgi support.

Mod_speedycgi increases performance under Apache by avoiding the fork/exec
overhead associated with each request under normal SpeedyCGI. However, it
requires a working copy of "apxs" in your path, Apache with mod_so
support, and additional Apache configuration.

Compile mod_speedycgi (default no)? no
Checking if your kit is complete...
Looks good
Writing Makefile for src
Writing Makefile for speedy_backend
Writing Makefile for speedy
Writing Makefile for CGI::SpeedyCGI

$ make
$ su
Password:
# make install

Installation de SmokePing

Une fois toutes les dépendances installées, il ne reste plus qu'à faire celle de SmokePing :

$ wget http://people.ee.ethz.ch/~oetiker/webtools/smokeping/pub/smokeping-1.20.tar.gz
$ tar zxvf smokeping-1.20.tar.gz
$ cd smokeping-1.20
$ su
Password:
# mkdir /var/www/html/smokeping/data/.simg -p
# ln -s /var/www/html/smokeping/data/.simg /var/www/html/.simg
# mkdir /usr/lib/smokeping
# cp lib/* /usr/lib/smokeping -R
# mkdir /etc/smokeping

SmokePing est composé de plusieurs fichiers qu'il faut adapter à la configuration de votre installation et copier dans les répertoires les plus adaptés à votre système.

Le premier d'entre eux est smokeping.dist, c'est l'éxecutable :

# cp bin/smokeping.dist /usr/bin/smokeping
# vi /usr/bin/smokeping
#!/usr/bin/perl -w
# -*-perl-*-

use lib qw(/usr/local/rrdtool/lib/perl);
use lib qw(/usr/lib/smokeping);

use Smokeping 1.20;

Smokeping::main("/etc/smokeping/config");

----------Suite du fichier----------

Le suivant est le script CGI qui permet d'accéder à l'interface HTML de SmokePing :

# cp htdocs/smokeping.cgi.dist /var/www/cgi-bin/smokeping.cgi
# vi /var/www/cgi-bin/smokeping.cgi

#!/usr/bin/speedy -w
# -*-perl-*-

use lib qw(/usr/local/rrdtool/lib/perl);
use lib qw(/usr/lib/smokeping);

use Smokeping 1.20;

Smokeping::cgi("/etc/smokeping/config");

----------Suite du fichier----------

Le suivant, basepage.html, est le fichier template qui permet de personnaliser l'interface HTML :

# cp etc/basepage.html.dist /etc/smokeping/basepage.html

Le fichier config est comme son nom l'indique le fichier de configuration principal de SmokePing. Dans celui-ci on déclare les machines que l'on souhaite pinger (via fping) et/ou tester les services echo, http, https, smtp... (via EchoPing)

# cp etc/config.dist /etc/smokeping/config

Voici un exemple de configuration de fichier dans lequel on teste le ping ainsi que les services echo, http, https et smtp :

# cat /etc/smokeping/config

# Note that all IP addresses in this file are false, to prevent some
# machine falling uder a deadly DOS storm because all users keep
# the same addresses in their config.

*** General ***

owner    = Joe Random
contact  = joe@some.place.xyz
mailhost = smtp.mailhost.abc
sendmail = /usr/lib/sendmail
imgcache = /var/www/html/smokeping/data/.simg
imgurl   = ../.simg
datadir  = /var/www/html/smokeping/data
piddir  = /var/run
cgiurl   = http://127.0.0.1/cgi-bin/smokeping.cgi
smokemail = /etc/smokeping/smokemail
# specify this to get syslog logging
syslogfacility = local0


*** Database ***

step     = 300        # Le temps en secondes entre chaque test
pings    = 20        # Le nombre de tests lancé à chaque fois

# consfn mrhb steps total

AVERAGE  0.5   1  1008
AVERAGE  0.5  12  4320
    MIN  0.5  12  4320
    MAX  0.5  12  4320
AVERAGE  0.5 144   720
    MAX  0.5 144   720
    MIN  0.5 144   720

*** Presentation ***

template = /etc/smokeping/basepage.html

+ overview

width = 600
height = 50
range = 10h

+ detail

width = 600
height = 200
unison_tolerance = 2

"Last 3 Hours"    3h
"Last 30 Hours"   30h
"Last 10 Days"    10d
"Last 400 Days"   400d

*** Probes ***

+ FPing

binary = /usr/local/sbin/fping

+ EchoPing  # uses TCP or UDP echo (port 7)
+ EchoPingHttp # HTTP (80/tcp) for web servers and caches
+ EchoPingHttps # HTTPS (443/tcp) for web servers
+ EchoPingSmtp # SMTP (25/tcp) for mail servers

*** Alerts ***

to = joe@some.place.xyz
from = joe@some.place.xyz

+lossdetect
type = loss
# in percent
pattern = ==0%,==0%,==0%,==0%,>20%,>20%,>20%
comment = suddenly there is packet loss

+rttdetect
type = rtt
# in milli seconds
pattern = <10,<10,<10,<10,<10,<100,>100,>100,>100
comment = routing mesed up again ?

*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of Linux Company. \
         Here you will learn all about the latency of our network.

+ Machine1

menu = Machine1
title = Titre Machine1
host = Machine1.com

+ Machine2

menu = Machine2
title = Titre Machine2

++ icmp
menu = icmp
title = Icmp Server
probe = EchoPing
alerts = lossdetect
host = Machine2

++ http
menu = http
title = Web Server (www-server) / HTTP
probe = EchoPingHttp
alerts = lossdetect
host = www.Machine2.com

++ https
menu = https
title = Https Server
probe = EchoPingHttps
alerts = lossdetect
host = www.Machine2.com

++ smtp
menu = smtp
title = Smtp Server
probe = EchoPingSmtp
alerts = lossdetect
host = smtp.Machine2.com

Démarrage de SmokePing

# cp etc/smokemail.dist /etc/smokeping/smokemail
# vi /etc/syslog.conf

------Rajouter la ligne en fin de fichier--------
# Save smokeping messages
local0.info /var/log/smokeping


# touch /var/log/smokeping
# chmod 600 /var/log/smokeping
# /etc/rc.d/init.d/syslog restart

# /usr/bin/smokeping

Une fois l'exécution terminée, on peut visualiser le résultat de votre travail :

Voici un exemple de ce l'on peut faire avec Smokeping : ici

Ajout d'un service smokepingd

Un script est disponible ici pour lancer SmokePing au démarrage de votre système

# cp smokeping-start-script-rh72 /etc/rc.d/init.d/smokepingd
# vi /etc/rc.d/init.d/smokepingd

#!/bin/sh
#
# smokeping This starts and stops the smokeping daemon
# chkconfig: 345 98 11
# description: Start/Stop the smokeping daemon
# processname: smokeping
# Source function library.
. /etc/rc.d/init.d/functions

SMOKEPING=/usr/bin/smokeping
LOCKF=/var/lock/subsys/smokeping
CONFIG=/etc/smokeping/config

----------Suite du fichier----------


# cd /etc/rc.d/init.d/
# chmod 755 smokepingd
# /sbin/chkconfig --add --level 345 smokepingd

Pour finir

J'espère vous avoir fait découvrir ou redécouvrir cet outil. Pour ma part je compte l'utiliser pour tester la qualité de liaisons à Relais de Trame ainsi que les services http de serveurs intranet. Je vous encourage très fortement à consulter la documentation officielle afin de découvrir les nombreuses possibilités offertes par cette application.



@ Retour à la rubrique Réseau

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Dimitri CLATOT le 01/05/2003.

Copyright

Copyright © 01/05/2003, Dimitri CLATOT

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/