Des graphiques sur Shinken via Graphite
Un graphique est un moyen pratique de constater l’évolution des métriques d’un serveur. Quand on pense graph dans le monde linux, on pense généralement à Munin. Solution très performante que j’utilise dans certains cas. Cependant ce dernier possède son propre agent qui va interroger la machine cible de façon à obtenir les données interprétées sous forme de graph ensuite. Quand on possède déja un serveur de supervision comme Shinken cela revient à faire deux fois le boulot. Pour palier à ça nous allons mettre en place un serveur Graphite.
Le programme est composé de trois parties.
- Whisper, un moteur de base de données
- Carbon, serveur d’écoute qui s’occupe d’insérer les données en base
- Graphite, interface web en python Django
Installation de Graphite
Installation des dépendances
1
|
apt–get install python–cairo python–django–tagging python–twisted python–memcache fontconfig
|
1
2
|
pip install django
pip install zope.interface
|
Il faut aussi un serveur web, avec la librairie permettant de charger un programme Django.
1
|
apt–get install apache2 libapache2–mod–wsgi
|
Installation de graphite
1
2
3
4
|
pip install https://github.com/graphite–project/ceres/tarball/master
pip install whisper
pip install carbon
pip install graphite–web
|
Mise en place de la configuration par défaut
1
2
3
|
cd /opt/graphite/conf
cp carbon.conf.example carbon.conf
cp storage–schemas.conf.example storage–schemas.conf
|
Mise en place du vHost apache
1
2
3
4
5
6
7
8
9
10
11
|
cd /opt/graphite
cp –a examples/example–graphite–vhost.conf /etc/apache2/sites–available/graphite
cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
sed –i s%« @DJANGO_ROOT@/contrib/admin/media/ »%« /usr/share/pyshared/django/contrib/admin/media/ »% /etc/apache2/sites–available/graphite
sed –i ‘s%WSGISocketPrefix run/wsgi/%WSGISocketPrefix /var/run/apache2/wsgi%’ /etc/apache2/sites–available/graphite
a2ensite graphite
|
Attention, si vous êtes sur une distribution plus récente avec une version de Apache supérieur à 2.4 il faut modifier le vHost comme suit
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<Directory /opt/graphite/conf/>
#Order deny,allow
#Allow from all
Options All
AllowOverride All
Require all granted
</Directory>
<Directory /opt/graphite/webapp>
Options All
AllowOverride All
Require all granted
</Directory>
|
On active le vHost
1
|
service apache2 reload
|
Creation de la base de données
1
2
3
|
cd /opt/graphite/webapp/graphite
python manage.py syncdb
chown –R www–data:www–data /opt/graphite/storage/
|
On lance le serveur Carbon
1
2
|
cd /opt/graphite/
./bin/carbon–cache.py start
|
Envoyer une donnée de test
1
|
echo « carbon.installation.test $RANDOM `date +%s` » | nc –w 1 localhost 2003
|
A ce stade on a Graphite fonctionnel, si vous vous rendez sur l’adresse de votre serveur en HTTP vous devez voir apparaître votre donnée de test sur l’interface web.
Jonction à Shinken
On installe le module Graphite depuis les dépôts Shinken
1
2
3
|
su shinken
shinken install ui–graphite
shinken install graphite
|
On ajoute le module graphite-ui à la WebUI sous /etc/shinken/modules/webui.cfg
1
|
modules auth–cfg–password,SQLitedb,ui–graphite
|
On ajoute le module graphite au broker sous /etc/shinken/brokers/broker-master.cfg
1
|
modules webui,graphite
|
On configure le module graphite sous /etc/shinken/modules/graphite.cfg
1
2
3
4
5
6
|
define module {
module_name graphite
module_type graphite_perfdata
host localhost
port 2003
}
|
On configure l’accès à la webui graphite sous /etc/shinken/modules/ui-graphite.cfg
1
2
3
4
5
6
|
define module {
module_name ui–graphite
module_type graphite–webui
uri http://172.16.10.6 ; ip de votre serveur graphite
templates_path /var/lib/shinken/share/templates/graphite/
}
|
Attention à ne pas mettre de slash à la fin de l’URL sans quoi les liens ne fonctionneraient pas.
Et enfin on relance Shinken pour prendre en compte tout ça.
1
|
/etc/init.d/shinken restart
|
Vous devez à présent voir vos graphs dans l’onglet du même nom sur l’interface web de Shinken
Sur l’interface web de Graphite, vos hôtes devraient également apparaître.
Il est possible que l’onglet “4 hours” ne fonctionne pas. C’est parce que la timezone n’est pas la même sur les deux composants.
Pour régler la timezone shinken il faut se rendre dans le fichier /etc/shinken/shinken.cfg
1
|
use_timezone=Europe/Paris
|
Et pour graphite il faut activer le fichier de configuration en copiant l’exemple
1
2
|
cd /opt/graphite/webapp/graphite
cp local_settings.py.example local_settings.py
|
Et dé-commenter la ligne corcorrespondante à la valeur de timezone
1
|
TIME_ZONE = ‘Europe/Paris’
|