Smokeping

From AleikoumWiki

Jump to: navigation, search

Contents

L'Approche

Qu'est ce que c'est ?

Dans une autre page du wiki, je vous presentais Nagios et sa vision de la supervision...
Voici un outil supplementaire pour la supervision : Smokeping... qui permet de superviser les latences de votre reseau par le biais de de ping et de fping.
Dans l'absolue il n'apporte rien de plus qu'un Nagios qui utiliserait des plugins similaires mais je trouve que c'est un bon complement a Nagios. En effet, sans se prendre la tete on peut installer un systeme vraiment complet pour la supervision de la latence.

Liens

http://oss.oetiker.ch/smokeping/ : le site officiel de Smokeping
http://oss.oetiker.ch/rrdtool/ : le site officiel de RRDTool qui est indispensable a Smokeping

La Mise en Place

Prerequis

fping

C'est l'outil indispensable car c'est lui qui va faire les tests de latences
Pour ma part je l'ai installe via un RPM

rpm -i fping-2.4-1.b2.1.el3.rf.i386.rpm

speedycgi

Pour ameliorer l'utilisation des CGIs perl SpeedyCGI est la ! D'autant plus que Smokeping a ete optimise pour ce dernier donc autant l'utiliser...
D'abord on recupere les sources sur http://www.daemoninc.com/SpeedyCGI/ , une fois de-tare il suffit de suivre la procedure classique :

perl Makefile.PL
make
make test
make install

rrdtool 1.2.x

Attention une version anterieure entrainera un cuisant echec lors de la creation des bases rrd :)

wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz 
tar -xvzf rrdtool-1.2.27.tar.gz
cd rrdtool-1.2.27
./configure --prefix=/usr/local/rrdtool && make && make install

autres

Plein d'autres choses sont necessaires :

  • des modules perl en pagailles (en ils dependent surtout de comment vous souhaitez superviser votre environnement)
  • un serveur web ! Apache rulez
  • ... tout le detail ici


Installation

Une fois que tout est pret, il ne reste plus qu'a installer notre solution Smokeping comme suit :

wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.3.5.tar.gz
tar -xvzf smokeping-2.3.5.tar.gz && mv smokeping-2.3.5 /usr/local/ 
ln -s /usr/local/smokeping-2.3.5/ /usr/local/smokeping
cd /usr/local/smokeping

c'est deja fini ! le plus lourd reste la configuration de l'outil...


Configuration

Vous devez modifier plusieurs fichiers (scripts et fichiers de conf) pour qu'ils soient en phase avec la realite de votre installation... Cette partie vous explique quels fichiers sont necessaires a modifier et comment les modifier.

bin/smokeping

C'est le script qui tournera en daemon pour alimenter vos bases RRD.
Il faut commencer par le creer en reprenant le .dist dispo :

mv bin/smokeping.dist bin/smokeping

Puis il faut modifier les lignes concernant le perl, les libs rrd et de smokeping et le fichier de conf dans mon cas ca a donne ca :

#!/usr/bin/perl -w
...
use lib qw(/usr/local/rrdtool/lib/perl/5.8.0/);
use lib qw(/usr/local/smokeping/lib/);
...
Smokeping::main("/usr/local/smokeping/etc/config");

htdocs/smokeping.cgi

C'est le cgi que vous allez attaquer pour avoir le retour des infos du bin/smokeping !
Comme avant il faut commencer par le creer en reprenant le .dist dispo :

mv htdocs/smokeping.cgi.dist htdocs/smokeping.cgi

Et de la meme facon il va falloir modifier ce fichier pour le rendre coherent avec votre environnement :

#!/usr/bin/speedy -w
...
use lib qw(/usr/local/rrdtool-1.2.27/lib/perl/5.8.0/));
use lib qw(/usr/local/smokeping/lib/);
Smokeping::cgi("/usr/local/smokeping/etc/config");

etc/basepage.html

De meme pour le "template" html

...
<script src="/smokeping/lib/prototype.js" type="text/javascript"></script>
<script src="/smokeping/lib/scriptaculous.js?load=builder,dragdrop" type="text/javascript"></script>
<script src="/smokeping/cropper.js" type="text/javascript"></script>
<script src="/smokeping/smokeping-zoom.js" type="text/javascript"></script>
...

Configuration d'Apache

Puis pour que tout ceci soit conforme j'ai declare ceci dans mon apache (typiquement /usr/local/httpd:/conf/httpd.conf) :

############################################
#Smokeping : supervision ping
############################################
ScriptAlias /smokeping/cgi-bin "/usr/local/smokeping/htdocs/"

<Directory "/usr/local/smokeping/htdocs/">
   Options ExecCGI Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

Alias /smokeping/cache "/usr/local/smokeping/smokeping-ms/cache/"

<Directory "/usr/local/smokeping/smokeping-ms/cache/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

Alias /smokeping "/usr/local/smokeping/htdocs/cropper/"

<Directory "/usr/local/smokeping/htdocs/cropper/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        RewriteEngine on
        RewriteRule   ^/.* /smokeping/cgi-bin/smokeping.cgi # pk ? pour que quoi qu'il arrive on tombe sur le cgi !
</Directory>


etc/config

Pour finir il faut editer le fichier de conf du smokeping ! Dans mon cas je n'ai rien fait de complexe : je ping juste 3 sites :

  • www.google.com
  • www.weborama.com
  • www.yahoo.fr

Ici vous avez plusieurs exemples de fichiers de configuration afin d'obtenir une solution plus complete que celle presentee dans cet exemple.

*** General ***

owner    = Laby
contact  = erwan@plop.com
mailhost = mail.plop.fr
sendmail = /usr/lib/sendmail
# NOTE: do not put the Image Cache below cgi-bin
# since all files under cgi-bin will be executed ... this is not
# good for images.
imgcache = /usr/local/smokeping/smokeping-ms/cache
imgurl   = /smokeping/cache
datadir  = /usr/local/smokeping/smokeping-ms/data
piddir  = /usr/local/smokeping/smokeping-ms/var
cgiurl   = http://plop.com:8080/smokeping/cgi-bin/smokeping.cgi
smokemail = /usr/local/smokeping/etc/smokemail.dist
tmail = /usr/local/smokeping/etc/tmail.dist
# specify this to get syslog logging
syslogfacility = local0
# each probe is now run in its own process
# disable this to revert to the old behaviour
# concurrentprobes = no

*** Alerts ***
to = erwan@plop.com
from = erwan@plop.com

+someloss
type = loss
# in percent
#pattern = >0%,*12*,>0%,*12*,>0%
pattern = >0%,*10*,>0%,*10*,>0%
comment = loss 3 times  in a row

+bigloss
type = loss
pattern = ==0%,==0%,==0%,>50%,>50%,>50%
comment = big loss starting

*** Database ***

# 4 pings toutes les minutes
step     = 60
pings    = 4

# 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 = /usr/local/smokeping/etc/basepage.html

+ charts

menu = Charts
title = The most interesting destinations

++ stddev
sorter = StdDev(entries=>4)
title = Top Standard Deviation
menu = Std Deviation
format = Standard Deviation %f

++ max
sorter = Max(entries=>5)
title = Top Max Roundtrip Time
menu = by Max
format = Max Roundtrip Time %f seconds

++ loss
sorter = Loss(entries=>5)
title = Top Packet Loss
menu = Loss
format = Packets Lost %f

++ median
sorter = Median(entries=>5)
title = Top Median Roundtrip Time
menu = by Median
format = Median RTT %f seconds

+ 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/sbin/fping

*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = my first smokeping conf

+ EXT
menu = Exterieur
title = vers l'exterieur

++ Google
host = www.google.com

++ Weborama
host = www.weborama.com

++ Yahoo
host = www.yahoo.fr


Mise en route

Bah c'est fini ! Enfin presque !
Il faut juste lancer le petit binaire bin/smokeping D'abord on le test voir si tout se deroule bien lors "d'un coup pour essayer" :

/usr/local/smokeping/bin/smokeping --config=/usr/local/smokeping/etc/config --debug

et si tout est bon et valider il suffit de le lancer a nouveau ainsi :

/usr/local/smokeping/bin/smokeping --config=/usr/local/smokeping/etc/config


en vous remerciant ! :)

Personal tools