![Stacks Image 8983](files/stacks-image-025d1f9.png)
Actuellement, les graphes de Centreon sont gérés avec des fichiers RRD. Il est intéressant de comprendre la gestion de ces fichiers pour réaliser des opérations de modification de configuration ou de migration. Cet article a pour but de vous décrire quelques astuces pour réaliser ces opérations.
J'attire votre attention sur ces manipulations, vous devez avoir un minimum de connaissance sur la supervision et faites des sauvegardes avant toutes actions.
J'attire votre attention sur ces manipulations, vous devez avoir un minimum de connaissance sur la supervision et faites des sauvegardes avant toutes actions.
1 Suppression des données d'un graphe pour assurer la cohérences des données
Si vous réalisez de nombreux tests pour obtenir le graphe de "la mort qui tue", vous serez amené comme moi à nettoyer les données de vos graphiques. Voici un exemple, un graphique avec des données erronées, car la règle de vérification a évolué lors de mes recherches. La courbe au milieu est fausse, nous devons effacer les données.
![Stacks Image 13681](files/stacks-image-1b38db2-800x292.png)
données erronées sur un graphique
Avant de réaliser la suppression du graphe, attardons-nous sur un extrait de la base Centstorage de Centreon. En bas du dessin, les bases rrd du status du service et du graphe précédent.
![Stacks Image 13702](files/stacks-image-79896af-426x800.png)
Etat des données avant suppression
Une seule solution, supprimez le graphique. Voyons le mode opératoire, sélectionnez Administration / Options / CentStorage / Manage. Cochez le service, dans notre exemple, Count_printer3 et sélectionnez Delete graphs.
![Stacks Image 13723](files/stacks-image-a2d5986.png)
Suppression d'un graphe
![Stacks Image 13736](files/stacks-image-c4db69f.png)
Confirmez par OK
Le graphe est supprimé comme le montre la copie d'écran.
![Stacks Image 13757](files/stacks-image-d2f7564-800x540.png)
Les graphes ont disparus
Le graphe est supprimé comme le montre la copie d'écran. Les enregistrements des tables index_data et metrics sont supprimés, seul reste les enregistrements de la table data_bin. Les fichiers rrd seront supprimés.
![Stacks Image 13778](files/stacks-image-6d39b1b-430x800.png)
Etat des données après suppression
Pour régénérer vos graphes, il sera obligatoire de recharger toute la configuration car les enregistrements relatifs aux données de performances de la base CentStorage ont été effacés lors de la suppression de la base. Après le redémarrage de Centreon, vous aurez de nouveau un nouveau graphe comme la copie d'écran ci-dessous.
![Stacks Image 13799](files/stacks-image-6256ee8.png)
Et voici le graphe avec des données cohérentes
Voici le mécanisme de la création du nouveau graphe. De nouveaux enregistrements dans les tables index_data et metrics ont été créés. Les fichiers rrd pour le status et le graphes seront recréés dans les minutes suivant l'application de la nouvelle configuration.
![Stacks Image 13820](files/stacks-image-317b112-420x800.png)
Régénération de la configuration
2 Visualiser le contenu d'un fichier rrd
Une petite commande pour visualiser le contenu d'un fichier rrd en mode terminal. Utile quand on a des fichiers orphelins. Lancez la commande ci-dessous.
rrdtool dump /var/lib/centreon/metrics/82.rrd | more
Vous obtiendrez une présentation lisible comme l'exemple ci-dessous. le "pipe more" permet d'interrompre le défilement de la commande.
0003 60 1397053331 nbProcess GAUGE 600 NaN NaN 6 6.6000000000e+01 0 AVERAGE 1 5.0000000000e-01 6.0000000000e+00 NaN NaN 0 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN
3 Associer les fichiers RRD aux services
3.1 Prérequis
Ce script fonctionne indifféremment avec un moteur Nagios ou Centreon-Engine. Le seul prérequis exigé est l'utilisation du module Centreon-Clapi. Pour les bases de données ne se trouvant pas sur le serveur Central, il faudra modifier légèrement le script de connexion MySQL. N'oubliez pas de modifier les utilisateurs de connexion Centreon et MySQL en fonction de votre architecture.
3.2 Création du script localize_rrd.sh
#!/bin/bash #associate file RRD with service # Parameter CLAPI_DIR=/usr/local/centreon/www/modules/centreon-clapi/core USER_CENTREON=admin PWD_CENTREON=password USER_MYSQL=centreon PWD_MYSQL=password BASE_MYSQL=centreon_storage #***************************************************************** #* browse Services #***************************************************************** $CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o service -a show -v | while read line do ID_HOST=`echo $line | cut -d";" -f1 ` ID_SERVICE=`echo $line | cut -d";" -f3 ` NAME_HOST=`echo $line | cut -d";" -f2 ` NAME_SERVICE=`echo $line | cut -d";" -f4 ` if [ "$ID_HOST" != "host id" ] then echo "----------------------------------------------------" echo "Host : "$NAME_HOST" Service : "$NAME_SERVICE echo "Files List" echo "select id,metric_id,metric_name from index_data join metrics on id=index_id where index_id=(select id from index_data where host_id=$ID_HOST and service_id=$ID_SERVICE);" | mysql -u $USER_MYSQL -p$PWD_MYSQL $BASE_MYSQL | awk 'BEGIN{printf("%-15s %-15s %-15s\n","status","metric","metric name")}NR>1{printf("%-15s %-15s %-15s\n",$1,$2,$3)}' echo "" fi done
Nous devons rendre le fichier exécutable.
chmod +x localize_rrd.sh
Maintenant, lancez le script et vous obtiendrez la liste des services avec leurs fichiers RRD associés, si bien sûr, ceux-ci ont des graphes. voici un exemple :
./localise_metric.sh
----------------------------------------------------
Host : Centreon-Server Service : Disk-/
Files List
status metric metric name
13 13 size
13 14 used
----------------------------------------------------
Host : Centreon-Server Service : Disk-/home
Files List
status metric metric name
14 15 size
14 16 used
----------------------------------------------------
Host : Centreon-Server Service : Disk-/opt
Files List
status metric metric name
----------------------------------------------------
Host : Centreon-Server Service : Disk-/usr
Files List
status metric metric name
16 17 size
16 18 used
----------------------------------------------------
Host : Centreon-Server Service : Load
Files List
status metric metric name
18 21 load1
18 23 load15
18 22 load5
----------------------------------------------------
Host : Centreon-Server Service : Memory
Files List
status metric metric name
19 25 size
19 24 used
----------------------------------------------------
Host : Centreon-Server Service : Ping
Files List
status metric metric name
20 2 pl
20 1 rta
20 3 rtmax
20 4 rtmin
Le script affiche chaque service. Ensuite, s'ils existent, les fichiers RRD du graphe associé. Le fichier status RRD du graphe est listé à gauche, les métriques ainsi que leurs noms à droite. Pour obtenir le nom réel de ces fichiers, n'oubliez pas de rajouter l'extension rrd. Pour information, les fichiers sont situés pour les status dans le dossier /var/lib/centreon/status et pour les métriques dans le dossier /var/lib/centreon/metrics.
![Stacks Image 14436](files/stacks-image-c2ca3e4-614x800.jpg)
Schéma relationnel des fichiers RRD
Le script s'appuie sur les tables index_data et metrics de la base centreon_storage.
3.3 Exemple : récupérer les données de performances suite à une modification de configuration
3.3.a le contexte
Nous partirons d'une configuration minimale d'un hôte avec un service de type check_ping. Ce service n'utilise pas de template. Il produit un graphe de performance comme ci-dessous :
![Stacks Image 14481](files/stacks-image-160ad5a-800x332.png)
le graphe du service generic-ping
Le script nous indiquera les fichiers RRD suivants :
----------------------------------------------------
Host : serveur2 Service : generic-ping
Files List
status metric metric name
32 31 pl
32 30 rta
32 32 rtmax
32 33 rtmin
![Stacks Image 14510](files/stacks-image-8af5bab-800x22.png)
La configuration du service
3.3.b Modification de la configuration
Maintenant, nous allons utiliser les préconisations de Centreon, à savoir l'utilisation des templates de service. Donc nous substituerons le service generic-ping par un template de service. Nous utiliserons la même commande check_ping. la nouvelle configuration nous donnera cette configuration.
![Stacks Image 14531](files/stacks-image-8104fb4-800x24.png)
La configuration du service avec un template
Lors de l'application de la configuration, malgré l'utilisation du même hôte et l'utilisation de la même commande, le service sera réinitialisé et perdra toutes les anciennes données de performance.
![Stacks Image 14560](files/stacks-image-fcb9688-800x26.png)
le service recommence sans données
Notre graphe n'a plus d'anciennes données et les anciens fichiers RRD ont été effacés. En utilisant le script localize_rrd, nous avons les informations suivantes.
![Stacks Image 14581](files/stacks-image-0727c1c.png)
Le nouveau graphe
----------------------------------------------------
Host : serveur2 Service : Ping
Files List
status metric metric name
33 35 pl
33 34 rta
33 36 rtmax
33 37 rtmin
3.3.c Récupération des données de performances
En regardant la base centreon_storage, on constate que les données de performance des anciens métriques sont toujours présentes dans data_bin pour des raisons de performances. le champ id_metric correspond au fichier metric RRD correspondant. Il suffit de mettre le nouveau nom à la place de l'ancien plus haut. Bien sûr, les métriques doivent être identiques !
Voici le changement : 31 devient 35, 30 devient 34, 32 devient 36 et enfin 33 devient 37. Maintenant, voici les commandes SQL pour réaliser à bien cette opération :
Voici le changement : 31 devient 35, 30 devient 34, 32 devient 36 et enfin 33 devient 37. Maintenant, voici les commandes SQL pour réaliser à bien cette opération :
mysql -u centreon -p centreon_storage
Enter password:
...........
mysql> update data_bin set id_metric=35 where id_metric=31;
Query OK, 423 rows affected (0.07 sec)
Rows matched: 423 Changed: 423 Warnings: 0
mysql> update data_bin set id_metric=34 where id_metric=30;
Query OK, 423 rows affected (0.00 sec)
Rows matched: 423 Changed: 423 Warnings: 0
mysql> update data_bin set id_metric=36 where id_metric=32;
Query OK, 423 rows affected (0.01 sec)
Rows matched: 423 Changed: 423 Warnings: 0
mysql> update data_bin set id_metric=37 where id_metric=33;
Query OK, 423 rows affected (0.01 sec)
Rows matched: 423 Changed: 423 Warnings: 0
3.3.d Regénération du graphe
Nous devons reconstruire le graphe avec les données modifiées. Dans l'interface Web, cliquez sur Administration / Options / Centstorage / Manage. Cochez le graphe que nous venons de modifier et sélectionnez l'action Rebuild RRD Database.
![Stacks Image 14634](files/stacks-image-0ddacaa-800x442.png)
Reconstruire le graphe
Vérifiez la prise en compte de votre action de reconstruction avec la colonne Rebuild Waiting.
![Stacks Image 14663](files/stacks-image-981b881-800x38.png)
choix du type de metric
Au bout de quelques minutes, votre graphe est de nouveau disponible. Il n'est pas exactement identique car l'échelle diffère mais les valeurs moyennes s'en approchent comme l'indique l'image ci-dessous.
![Stacks Image 14676](files/stacks-image-2fc1271.png)
Résultat du recalcul du graphe RRD
Attention, tout de même, nous avons récupéré les données de performances mais pas l'historique des événements comme l'indique cet autre écran.
![Stacks Image 14705](files/stacks-image-4e48557.png)
Affichage du détail du service Ping pour l'hôte serveur2