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.
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.
Cliquez sur central-broker-master, ensuite sélectionnez l'onglet Output. Sélectionnez le type d'output "Graphite" et cliquez sur Add.
Renseignez les champs suivants
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$
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
Ce qui nous donne l'arborescence suivante
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
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.
En sélectionnant quelques métriques comme la charge du serveur Centreon et en ajustant l'intervalle de temps, nous obtenons un graphique.
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.
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 :
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.
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.
^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 factory01/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:1yRรฉ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
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.
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.
Cliquez sur les trois métriques load1 à load15, chaque métrique apparaît sous forme d'un graphe sur la fenêtre en dessous.
Glissez les graphes les uns au-dessus des autres pour arriver à un seul graphe.
Vous avez la possibilité de modifier le graphe, par exemple pour ajouter un titre. Sauvegardez votre graphe en sélectionnant le menu Dashboard Save.
En cliquant sur le menu Share, Graphite vous indiquera l'url à renseigner pour votre widget.
Ensuite, retournez sur l'interface Web de Centreon et ajoutez une nouvelle vue personnalisée. Ajoutez un widget HTTP Loader.
Modifiez les paramètres par défaut en ajoutant l'url précédente de Graphite.
Le dashboard de Graphite se présente comme ci-dessous.
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.
Cet article est terminé. Nous allons continuer avec l'installation de Grafana.
7.1 Pour aller plus loin
Les articles sur le Web qui m'ont servi :
- La documentation officielle de Centreon-Broker
- La documentation officielle de Graphite
- La documentation officielle de Centreon-Broker
- La documentation officielle de Graphite