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 tutoriel dans lequel nous vous expliquons comment utiliser la TSDB Graphite et visualiser les données avec le dashboard Grafana.

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

Centreon, supervision, Graphite, TSDB, Grafana, dashboard

Configuration du lien entre Centreon et 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 :

Menu Configuration > Pollers > Broker configuration de Centreon : sélection de la configuration central-broker-master à modifier

Ajoutez un nouvel ouput de type Graphite :

Onglet Output de la configuration central-broker-master dans Centreon : ajout d'une sortie de type « Graphite - Storage - Graphite »

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

Paramètres de la sortie Graphite dans Centreon Broker : hôte 10.1.1.2, port 2003 et nommage des métriques et statuts au format centreon.metric et centreon.statusUne fois la configuration finie, générez les fichiers de configuration et déployez les.

Menu Configuration > Pollers de Centreon : sélection du poller Central puis bouton Export configuration Formulaire Configuration Files Export de Centreon pour le poller Central : génération des fichiers, debug du moteur et option Move Export Files cochées, puis bouton ExportPour 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.

Graphite Composer : arborescence des métriques et statuts Centreon reçues pour Centreon-Server, avec le graphe de charge load1, load5 et load15 sur 60 minutes

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.

Page d'accueil de Grafana : bouton « Add data source » pour connecter Grafana à Graphite

Formulaire Add data source de Grafana : source nommée Centreon, de type Graphite, avec l'URL http://localhost en accès proxy

Puis, nous allons créer notre premier dashboard.

Page d'accueil de Grafana : bouton « New dashboard » pour créer le premier tableau de bord

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

Nouveau tableau de bord Grafana : ajout d'un panneau de type Graph sur une ligne

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

Onglet General d'un panneau Graph dans Grafana : titre Centreon-Server - Load et largeur de 10 span

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

Onglet Metrics d'un panneau Graph dans Grafana : sélection de la métrique centreon.metric.Centreon-Server.Load.*

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

Onglet Display d'un panneau Graph dans Grafana : option Null value réglée sur « connected » pour relier les points du graphe

Cela nous donne un joli graphique pour le load :

Graphe Grafana Centreon-Server - Load : courbes load1, load5 et load15 issues des métriques Centreon stockées dans Graphite sur la dernière heure

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.

Barre d'ajout de panneaux Grafana : sélection du composant Status Panel pour afficher le statut du load

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

Onglet General d'un Status Panel dans Grafana : titre Centreon-Server - Load et largeur de 2 span

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

Onglet Metrics d'un Status Panel dans Grafana : sélection de la métrique load1 du serveur Centreon-Server

Et définissez les seuils comme dans Centreon.

Onglet Options d'un Status Panel dans Grafana : seuils warning à 4 et critical à 6, définis comme dans Centreon

Voici le résultat :

Tableau de bord Grafana finalisé : graphe de charge de Centreon-Server et Status Panel vert indiquant un load normal

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

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