Tuto : Exporter des données vers Graphite

This post is also available in: Anglais

Depuis ses débuts, Centreon permet de présenter des graphiques de performance à partir de données numériques collectées. Ces graphiques sont aujourd’hui basés sur le support de stockage RRDtool et sont visibles depuis l’interface Centreon.
Désormais, Centreon permet d’exporter les données vers des bases de données de type TSDB (Time Series Database).

Découvrez notre nouveau tutoriel dans lequel nous vous expliquons comment utiliser la TSDB Graphite et visualiser les données avec le dashboard Grafana.

GraphiteLogo

Contexte pour ce tutoriel

Notre cadre d’exemple intègre l’architecture suivante :

  • Un serveur Centreon (10.1.1.1)
  • Un serveur Graphite installé sur un Linux CentOS 7 (10.1.1.2)

Mise en place d’un serveur Graphite

Nous allons installer et configurer un serveur Graphite sur une CentOS 7.
Pour simplifier, nous allons utiliser la version de Graphite disponible dans les dépôts EPEL.

Pour installer les dépôts EPEL, exécutez la commande suivante :

yum install -y epel-release

Ensuite, installez Graphite avec son interface web pour pouvoir faire des tests :

yum install -y httpd graphite-web python-carbon perl

Initialisez l’application graphite-web :

/usr/bin/graphite-manage syncdb --noinput
/usr/bin/graphite-build-index
/usr/bin/chown -R apache:apache /var/lib/graphite-web

Démarrez le moteur de stockage carbon :

systemctl start carbon-cache

La configuration de graphite-web s’effectue avec Apache. Nous allons modifier les fichiers par défaut fournis par CentOS 7. Ces modifications sont effectuées pour cet article mais en production il faudra adapter cette partie à votre environnement.

On commente tout le fichier /etc/httpd/conf.d/welcome.conf.
Ensuite, dans le fichier /etc/httpd/conf.d/graphite-web.conf, nous allons donner un accès à Graphite à tout le monde et faire en sorte que Graphite soit disponible par défaut.

Commentez la ligne ServerName graphite-web pour que Graphite soit accessible par défaut.
Pour donner l’accès à tout le monde, modifiez les lignes suivantes :

  • Require local
  • Require all granted

et

  • Deny from all
  • Allow from 127.0.0.1
  • Allow from ::1
  • Allow from all

Ce qui donne le fichier suivant :

# Graphite Web Basic mod_wsgi vhost
<VirtualHost *:80>
     # ServerName graphite-web
     DocumentRoot "/usr/share/graphite/webapp"
     ErrorLog /var/log/httpd/graphite-web-error.log
     CustomLog /var/log/httpd/graphite-web-access.log common
     # Header set Access-Control-Allow-Origin "*"
     # Header set Access-Control-Allow-Methods "GET, OPTIONS"
     # Header set Access-Control-Allow-Headers "origin, authorization, accept"
     # Header set Access-Control-Allow-Credentials true
    WSGIScriptAlias / /usr/share/graphite/graphite-web.wsgi
    WSGIImportScript /usr/share/graphite/graphite-web.wsgi process-group=%{GLOBAL} application-group=%{GLOBAL}
    <Location "/content/">
        SetHandler None
    </Location>
    Alias /media/ "/usr/lib/python2.7/site-packages/django/contrib/admin/media/
    <Location "/media/">
        SetHandler None
    </Location>
   <Directory "/usr/share/graphite/">
       <IfModule mod_authz_core.c>
           # Apache 2.4
           Require all granted
       </IfModule>
       <IfModule !mod_authz_core.c>
           # Apache 2.2
           Order Deny,Allow
           Allow from all
       </IfModule>
   </Directory>
</VirtualHost>

Redémarrez le service httpd :

systemctl restart httpd

Ouvrez les ports sur le pare-feu pour le service http et carbon :

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-port=2003/tcp
firewall-cmd --reload

Pour tester cette installation, il est nécessaire d’ouvrir l’url du serveur dans un navigateur. Dans le cadre de ce tutoriel : http://10.1.1.2

1Configuration du lien entre Centreon and Graphite

Pour cette partie, nous allons utiliser Centreon en version 3.4 déjà configuré et activé.  Si vous ne possédez pas encore Centreon 3.4, vous pouvez le téléchargez ici.

Commencez par installer le module Graphite pour Centreon Broker :

yum install -y centreon-broker-graphite

La configuration du lien entre Centreon et Graphite se fait au niveau du composant Centreon Broker. Pour cela, nous allons créer un nouvel output sur le cbd central-broker-master.
Cette modification s’effectue dans sur l’interface web de Centreon via le menu : Configuration  >  Pollers  >  Broker configuration.

Modifiez la configuration central-broker-master :

2

Ajoutez un nouvel ouput de type Graphite :

3

Maintenant, configurez cette nouvelle sortie (output).
Le nom sera Graphite.
L’hôte de la base de données sera l’IP de notre serveur Graphite : 10.1.1.2.
Le port de la base de données sera 2003 qui est le port par défaut d’écoute de Carbon.
Nous n’avons pas configuré d’authentification sur le serveur Graphite donc les champs utilisateur et mot de passe de la base de données seront vides.
Le nom des métriques dans Graphite est défini dans les champs “Metric naming” et “Status naming”. Le nom est composé de macro. Pour plus d’informations, vous pouvez vous référer à la documentation de Centreon Broker.

Nous avons choisi le nom suivant pour les données de performance, en sachant que dans Graphite le caractère “.” est le séparateur.
centreon.metric.$HOST$.$SERVICE$.$METRIC$
La macro $HOST$ sera le nom de l’hôte, la macro $SERVICE$ le nom du service et $METRIC$ le nom de la métrique. Ce qui donnera pour la métrique load1 du service Load pour l’hôte Centreon-Server : centreon.metric.Centreon-Server.Load.load1.

Pour les métriques contenant les statuts, nous avons choisi le format suivant :
centreon.status.$HOST$.$SERVICE$
Ce qui donnera pour le service Load pour l’hôte Centreon-Server : centreon.status.Centreon-Server.Load

4

Une fois la configuration finie, générez les fichiers de configuration et déployer les.

5

6

Pour charger la première fois le module Graphite de Centreon Broker et charger correctement le cache de ce module, il faut redémarrer dans l’ordre les services de Centreon Broker et Centreon Engine.

service cbd restart
service centengine restart

Après quelques temps, les métriques venant de Centreon vont arriver dans Graphite.

7

Bonus

Nous allons installer et configurer un dashboard Grafana sur la machine Graphite (10.1.1.2) afin de pouvoir manipuler les données.
Nous suivons la procédure fournie par le site officiel de Grafana.

Ajoutez le dépôt en ajoutant le fichier /etc/yum.repos.d/grafana.repo contenant :

[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Installez ensuite Grafana et démarrez le service :

yum install -y grafana
systemctl start grafana

Il est nécessaire de configurer le pare-feu afin d’accéder à Grafana depuis le navigateur.

firewall-cmd --zone=public --permanent --add-port=3000/tcp
firewall-cmd --reload

Accédez avec notre navigateur à l’url http://10.1.1.2:3000/login. L’utilisateur et le mot de passe sont admin.

Nous allons configurer une source de données qui va se connecter à Graphite. Le nom sera Centreon et l’url sera localhost.

8

9

Puis, nous allons créer notre premier dashboard.

10

Sur une ligne, mettez le graphique du load et son statut.

11

Nommez le graphique Centreon-Server – Load et mettez-le sur 10 span. Dans Grafana, une ligne est composée de 12 span.

12

Choisissez la métrique centreon.metric.Centreon-Server.Load.*.
Note : lorsque le caractère “*” est utilisé, Grafana récupère toutes les métriques.

13

Pour une meilleure mise en forme, changez les “null value” en “connected”.

14

Cela nous donne un joli graphique pour le load :

15

Rajoutez un carré avec le statut du load1.

Puis, installez le plugin Status panel de Grafana :

grafana-cli plugins install vonage-status-panel
systemctl restart grafana-server

Ajoutez sur la ligne le nouveau composant Status panel.

16

Nommez l’élément Centreon-Server – Load et spécifiez sa taille à 2.

17

Choisissez la métrique load1 du serveur Centreon-Server.

18

Et définissez les seuils comme dans Centreon.

19

Voici le résultat :

20

Maintenant, à vous de laisser parler votre imagination pour créer vos dashboards personnalisés.

Intéressés par davantage de tutos ? Découvrez :

– Personnaliser son tableau de bord avec Centreon
Comment traduire Centreon
Comment automatiser votre supervision Centreon avec Salt

Leave a Reply