Menu


Stacks Image 1316884
Nous partirons du principe que vous maîtrisez l'installation d'une architecture distribuée Centreon. J'ai utilisé deux serveurs Debian 8 avec Centreon-Engine 1.7.0, Centreon-Broker 3.0.3 et Centreon-Web 2.8.4. Cela fonctionne aussi avec la distribution Centreon 3.4x.
Stacks Image 1317016
Information pour la distribution Centreon sous CentOS
Si vous utilisez la distribution CentOS, avant de configurer le broker, installez le paquet correspondant.
yum -y install centreon-broker-graphite

Merci à Roel pour cette précision.

4 - Configuration du Broker

Maintenant que notre démon Carbon est fonctionnel, attaquons-nous à la configuration du broker. Celle-ci est très simple, il suffit d'ajouter un module output de type graphite à la configuration de central-broker-master. Cliquez sur Configuration -> Pollers -> Broker configuration.
Stacks Image 1316895
Cliquez sur central-broker-master, ensuite sélectionnez l'onglet Output. Sélectionnez le type d'output "Graphite" et cliquez sur Add.
Stacks Image 1316900
Renseignez les champs suivants
Stacks Image 1316905
Name:			graphite
DB host:		172.16.209.106
DB port:		2003
Maximum queries:	1000
Metric naming:		centreon.metrics.$HOST$.$SERVICE$.$METRIC$
Status naming:		centreon.metrics.status.$HOST$.$SERVICE$
Stacks Image 1316910
Choix de l'organisation des données à transférer vers Graphite
Avant de vous proposer mon choix des données à transférer vers Graphite, j'ai réalisé plusieurs essais de configuration. La première avec la configuration proposée par Matthieu KERMAGORET utilise la macro $INSTANCE$. Mais avec une architecture distribuée, vous n'aurez aucune génération de graphe si vous avez un hôte rattaché à un poller. Ce qui est plutôt gênant. Voici le message d'erreur que vous aurez dans /var/lib/centreon-broker/central-broker-master.log
[1488379448] error:   graphite: couldn't generate query for metric 8:graphite: could not find information on instance 1

La deuxième solution est la suivante
metrique_graphite
Ce qui nous donne l'arborescence suivante
install_glpi2017-03-01_04-32-38_PM
J'ai trouvé cette organisation moins claire mais ce n'est que mon avis πŸ˜‰ Par contre lors de vos tests, je vous conseille de vider le dossier /var/lib/centreon-broker lors de l'arrêt du broker et de redémarrer les moteurs après une modification majeure.

5 - Test de notre configuration

Appliquez la configuration au poller Central. Au bout de quelques secondes, la connexion TCP 2003 s'initialise avec le serveur graphana comme le montre cette commande lancée sur ce serveur.
root@graphana:/home/vmdebian# netstat -an | grep 2003
tcp        0      0 0.0.0.0:2003            0.0.0.0:*               LISTEN
tcp        0      0 172.16.209.106:2003     172.16.209.80:35657     ESTABLISHED
Stacks Image 1316919
Pas de génération de configuration
Au fur et à mesure de mes essais, j'ai rencontré le problème suivant. Je démarre le service broker alors que le démon Carbon n'était pas démarré. Je visualise le message suivant dans les logs centreon-broker.
[1488383185] error:   graphite: can't connect to graphite on host '172.16.209.106', port '2003': Connection refused

Je démarre donc le service Carbon du serveur Graphite et au bout de quelques secondes la connexion TCP 2003 s'initialise. Malheureusement, les données ne sont toujours pas exportées vers Graphite. Voici les logs du Broker :
[1488383701] error:   graphite: couldn't generate query for metric 38:graphite: could not find information on host 15
[1488383701] error: graphite: couldn't generate query for metric 39:graphite: could not find information on host 15
[1488383702] error: graphite: couldn't generate query for status 2:graphite: could not find information on host 13
[1488383702] error: graphite: couldn't generate query for metric 5:graphite: could not find information on host 13
[1488383702] error: graphite: couldn't generate query for metric 6:graphite: could not find information on host 13
[1488383702] error: graphite: couldn't generate query for metric 7:graphite: could not find information on host 13
[1488383706] error: graphite: couldn't generate query for status 11:graphite: could not find information on host 14
[1488383706] error: graphite: couldn't generate query for metric 20:graphite: could not find information on host 14
[1488383706] error: graphite: couldn't generate query for metric 21:graphite: could not find information on host 14
[1488383706] error: graphite: couldn't generate query for metric 22:graphite: could not find information on host 14

J'ai trouvé la solution en redémarrant chaque moteur de supervervision.
root@central-test8:/# service centengine restart

résultat du Central
root@graphana:/var/lib/graphite/whisper/centreon# tree -d
.
└── metrics
β”œβ”€β”€ Centreon-Server
β”‚   β”œβ”€β”€ Disk-root
β”‚   β”œβ”€β”€ Load
β”‚   β”œβ”€β”€ Memory
β”‚   β”œβ”€β”€ Ping
β”‚   └── Swap
└── status
└── Centreon-Server

9 directories

root@poller-test8:/home/vmdebian# service centengine restart

résultat global avec le poller
root@graphana:/var/lib/graphite/whisper/centreon# tree -d
.
└── metrics
β”œβ”€β”€ Centreon-Server
β”‚   β”œβ”€β”€ Disk-root
β”‚   β”œβ”€β”€ Load
β”‚   β”œβ”€β”€ Memory
β”‚   β”œβ”€β”€ Ping
β”‚   └── Swap
β”œβ”€β”€ poller1
β”‚   β”œβ”€β”€ Disk-root
β”‚   β”œβ”€β”€ Load
β”‚   β”œβ”€β”€ Memory
β”‚   β”œβ”€β”€ Ping
β”‚   └── Swap
β”œβ”€β”€ status
β”‚   β”œβ”€β”€ Centreon-Server
β”‚   β”œβ”€β”€ poller1
β”‚   └── weblamp
└── weblamp
β”œβ”€β”€ Disk-root
β”œβ”€β”€ Load
β”œβ”€β”€ Memory
β”œβ”€β”€ Ping
└── Swap
Connectez-vous sur l'interface Graphite, à gauche dans l'onglet tree, vous devez voir s'afficher les données métriques de Centreon. Les données seront triées par rapport à la configuration dans le module Broker. Tout d'abord une racine unique centreon.metrics et ensuite par hôte, puis par service.
Stacks Image 1316924
En sélectionnant quelques métriques comme la charge du serveur Centreon et en ajustant l'intervalle de temps, nous obtenons un graphique.
Stacks Image 1316929

6 - Gestion des donnΓ©es dans Graphite

6.1 GΓ©nΓ©ralitΓ©s

Maintenant, intéressons-nous sur le fonctionnement de Graphite avec la base de données whisper spécialisée pour stocker les données métriques. Voici tout d'abord un synoptique du fonctionnement de cette installation.
Stacks Image 1316938
Avec notre installation debian, les données de la base Whisper sont situées dans /var/lib/graphite/whisper/ et sont organisées comme ci-dessous :
Stacks Image 1316943
Intéressons-nous de plus près aux données Load du serveur Central.
root@graphana:/var/lib/graphite/whisper/centreon/metrics/Centreon-Server/Load# ls -l
total 444
-rw-r--r-- 1 _graphite _graphite 148372 fΓ©vr. 27 23:00 load15.wsp
-rw-r--r-- 1 _graphite _graphite 148372 fΓ©vr. 27 23:00 load1.wsp
-rw-r--r-- 1 _graphite _graphite 148372 fΓ©vr. 27 23:00 load5.wsp
Les fichiers de métriques whisper ont pour extension wsp. Pour visualiser les informations de ces fichiers, utilisez la commande suivante :
whisper-info load1.wsp
Les informations sont commentées dans la copie d'écran du résultat ci-dessous.
Stacks Image 1316956
Résultat de la commande
Pour visualiser les données, nous utiliserons la commande suivante :
whisper-fetch load1.wsp
Vous obtiendrez une suite de données comme ceci
1488262740	0.020000
1488262800	0.010000
1488262860	0.040000
En utilisant l'option pretty, vous afficherez des données plus lisibles
whisper-fetch --pretty load1.wsp
. . . . . .
Tue Feb 28 07:19:00 2017	0.020000
Tue Feb 28 07:20:00 2017	0.010000
Tue Feb 28 07:21:00 2017	0.040000
Tue Feb 28 07:22:00 2017	0.010000
Tue Feb 28 07:23:00 2017	0.000000
Tue Feb 28 07:24:00 2017	0.000000
Tue Feb 28 07:25:00 2017	0.110000

6.2 Optimisations

Actuellement, nous avons défini une seule définition de rétention des données métriques. Mais est-il utile de garder autant de données pour les métriques de disque ? En général ces métriques ne changent pas d'état aussi rapidement que la charge d'un serveur par exemple. Nous allons ajouter une nouvelle définition pour les métriques des disques et diminuer le nombre d'informations à stocker en base. Ajoutons une nouvelle "pattern" entre Carbon et Centreon que l'on nommera Centreon-Disk. Editez le fichier /etc/carbon/storage-schemas.conf.
[carbon]
pattern = ^carbon\.
retentions = 60:90d

[centreon-disk]
pattern = ^centreon\..*\.(Disk).*\.
retentions = 30m:1d, 1h:30d, 2h:1y

[centreon]
pattern = ^centreon\.
retentions = 60s:1d, 20m:30d, 1h:1y
Notre nouvelle définition est la suivante :
^centreon\..*\.(Disk).*\. toutes les métriques contenues dans les dossiers ayant une chaîne de caractères Disk dans l'arborescence centreon
30m:1d une donnée toutes les trente minutes pendant une journée
1h:30d une donnée toutes les heures pendant trente jours
2h:1y une donnée toutes les deux heures pendant un an.
Pour prendre en compte cette nouvelle définition, relancez le démon Carbon.
service carbon-cache restart
Pour visualiser le bon fonctionnement de votre démon, éditez le fichier de log /var/log/console.log.
01/03/2017 11:35:35 :: Log opened.
01/03/2017 11:35:35 :: twistd 14.0.2 (/usr/bin/python 2.7.9) starting up.
01/03/2017 11:35:35 :: reactor class: twisted.internet.epollreactor.EPollReactor.
01/03/2017 11:35:35 :: ServerFactory starting on 2003
01/03/2017 11:35:35 :: Starting factory 
01/03/2017 11:35:35 :: ServerFactory starting on 2004
01/03/2017 11:35:35 :: Starting factory 
01/03/2017 11:35:35 :: ServerFactory starting on 7002
01/03/2017 11:35:35 :: Starting factory 
01/03/2017 11:35:35 :: set uid/gid 108/113
Pour information, voici une erreur rencontrée lors de mes tests.
01/03/2017 08:09:55 :: Invalid schemas found in centreon-disk: A Whisper database may not configured havingtwo archives with the same precision (archive1: (3600, 720), archive2: (3600, 8760))
Malheureusement, les fichiers de données métriques concernés et déjà créés ne seront pas modifiés avec cette nouvelle définition. Il existe deux solutions. La première, un peu "bourin", supprimer les fichiers et laissez le démon Carbon les recréer. un exemple :
rm /var/lib/graphite/whisper/centreon/metrics/Centreon-Server/Disk-root/*
Vous pouvez vérifier la création des fichiers avec la bonne définition dans le fichier de log /var/log/
01/03/2017 13:27:50 :: new metric centreon.metrics.Centreon-Server.Disk-root.used matched schema centreon-disk
01/03/2017 13:27:50 :: new metric centreon.metrics.Centreon-Server.Disk-root.used matched aggregation schema default_average
01/03/2017 13:27:50 :: creating database file /var/lib/graphite/whisper/centreon/metrics/Centreon-Server/Disk-root/used.wsp (archive=[(1800, 48), (3600, 720), (7200, 4380)] xff=0.5 agg=average)
01/03/2017 13:27:50 :: new metric centreon.metrics.Centreon-Server.Disk-root.size matched schema centreon-disk
01/03/2017 13:27:50 :: new metric centreon.metrics.Centreon-Server.Disk-root.size matched aggregation schema default_average
01/03/2017 13:27:50 :: creating database file /var/lib/graphite/whisper/centreon/metrics/Centreon-Server/Disk-root/size.wsp (archive=[(1800, 48), (3600, 720), (7200, 4380)] xff=0.5 agg=average)
La deuxième solution plus élégante et sans perte de données, est d'utiliser la commande whisper-resize permettant de redéfinir le niveau de détail des métriques. Exemple sur le fichier size.wsp.
cd /var/lib/graphite/whisper/centreon/metrics/Centreon-Server/Disk-root
whisper-resize size.wsp 30m:1d 1h:30d 2h:1y
RΓ©sultat de la commande
Retrieving all data from the archives
Creating new whisper database: size.wsp.tmp
Created: size.wsp.tmp (61828 bytes)
Migrating data without aggregation...
Renaming old database to: size.wsp.bak
Renaming new database to: size.wsp
Nous pouvons visualiser les changements appliqués.
whisper-info size.wsp
Stacks Image 1316870
Nous avons optimisé la taille de notre fichier sans péjorer la qualité des informations récupérées.

7 - IntΓ©gration des graphes dans un widget Centreon

Il est possible de créer des graphes personnalisés avec Graphite qui pourront être intégrés à Centreon grâce au widget HTTP Loader. Voici comment nous allons procéder. Connections-nous à Graphite, cliquez sur Dashboard.
Stacks Image 6759
Sélectionnez les métriques en cliquant sur les champs en haut de la fenêtre pour arriver aux métriques que l'on veut grapher.
Stacks Image 6776
Cliquez sur les trois métriques load1 à load15, chaque métrique apparaît sous forme d'un graphe sur la fenêtre en dessous.
Stacks Image 6825
Glissez les graphes les uns au-dessus des autres pour arriver à un seul graphe.
Stacks Image 6847
Vous avez la possibilité de modifier le graphe, par exemple pour ajouter un titre. Sauvegardez votre graphe en sélectionnant le menu Dashboard Save.
Stacks Image 6863
En cliquant sur le menu Share, Graphite vous indiquera l'url à renseigner pour votre widget.
Stacks Image 6882
Ensuite, retournez sur l'interface Web de Centreon et ajoutez une nouvelle vue personnalisée. Ajoutez un widget HTTP Loader.
Stacks Image 6917
Modifiez les paramètres par défaut en ajoutant l'url précédente de Graphite.
Stacks Image 6936
Le dashboard de Graphite se présente comme ci-dessous.
Stacks Image 6974
Il suffit de cliquer sur l'icône des chevrons aux pointes vers le haut, pour afficher le graphe. Je n'ai pas encore trouvé la solution pour le faire automatiquement.
Stacks Image 1316851
Cet article est terminé. Nous allons continuer avec l'installation de Grafana.

7.1 Pour aller plus loin

comments powered by Disqus