
Cacti est un logiciel de supervision permettant de générer des rapports (graphiques) afin de suivre l'activité de serveurs et / ou de services.
La configuration de rapport sous cacti n'est pas une chose aisée car elle demande de passer par diverses étapes et parfois de revenir en arrière afin de faire des corrections.
Nous allons voir ici comment générer un graphique représentant (en "temps réel") la répartition des demandes de ressources à un serveur httpd entre les méthodes GET et POST. Ceci va de la rédaction du scripts de récupération des données à la mise en forme graphique en passant par la définition de templates.
- Création du script
- Création de la mécanique de récupération
- Création de la représentation des données
- Création d'une fonction CDEF
- Création des graphes
- Ajout du graphe dans un rapport
Création du script :
Ici le script permettant de faire la collecte des données est un simple script Bash parsant un fichier de log afin de récupérer le nombre de requêtes en GET et POST.Il est tout à fait possible de produire des scripts dans d'autres langages (PHP, Perl, C, etc..), ceux-ci étant simplement exécuter en ligne de commande.
Le script doit produire une unique ligne en sortie qui soit de la forme :
Il est possible de mettre ce script n'importe où mais il reste préférable de le mettre avec les autres scripts de cacti c'est-à-dire dans $CACTI_HOME/scripts.
Ici, le script prendra un paramètre, le fichier à analyser et indiquera le nombre de requête GET ainsi que les POST.
Création de la mécanique de récupération :
Maintenant que le script existe et qu'il est exécutable, il faut indiquer à cacti qu'il existe un nouveau collecteur de données correspondant à notre script.Pour se faire, il faut aller dans Console > Data Input Methods puis faire Add et compléter le formulaire comme suit :
Name : Pavnay - WebHits
Input Type : Script / Command
Input String : <path_cacti>/scripts/pavnay.sh <filetoparse>
Input Fields :
Field : filetoparse
Friendly Name : File to parse
Regular expression Match : -
Allow Empty Input : -
Special Type Code : -
Output Field :
Field : GET_METHOD
Friendly Name : GET Hits
Update RRD File : checked
Field : POST
Friendly Name : POST Hits
Update RRD File : checked
Quelques explications :
- La chaîne <path_cacti> est une variable gérée par cacti représentant le répertoire d'installation de cacti;
- Les Inputs Fields sont les paramètres que prendront le script collecteur de données en entrée (ici, le fichier à ananlyser):
- Les Output Fields sont les données produites par le script en sortie (ici, il y en a 2 : le nombre de requêtes en GET et le nombre en POST);
- Il faut laisser les champs Update RRD File cochés car sinon la base de stockage des données collectées ne se mettra pas à jour.
Création de la représentation des données :
Maintenant que cacti connait une nouvelle méthode de récupération, il faut lui indiquer comment utiliser le nouveau collecteur pour un cas concret.
Les Data Templates sont des templates permettant de formaliser et configurer un source de données en configurant le collecteur de données.
Pour créer un Data Template, il faut aller dans Console > Data Templates, cliquer sur Add et remplir le formulaire comme suit :
Data Templates :
Name : Pavnay - WebHits
Data Source :
Name : WebHits
Data Input Method : Pavnay - WebHits
Data Source Item[] :
Internal Data Source Name : GET
(Save)
Output Field : GET_METHOD - GET Hits
(Save + New)
Internal Data Source Name : POST
Output Field : POST - POST Hits
Custom Data :
File to parse : /usr/local/apache2/logs/pavnay_access
Quelques explications :
- Les lignes écrites en italique sont les actions à faire afin de faire apparaitre de nouveaux champs et / ou formulaire;
- Le Data Template est le nom que nous donnons à ce template;
- Le Data Source est la source d'alimentation des données que nous avons préalablement défini;
- Les Data Source Item sont les données de sortie du collecteur de données;
- Les Custom Data sont les paramètres à fournir au collecteur afin qu'il puisse fonctionner (ici le fichier à analyser)
Création d'une fonction CDEF :
Un fichier de log httpd ne faisant que s'accroitre (si il n'y a pas de rotation de logs), le graphique produit par notre script ne sera qu'une représentation du nombre de requêtes GET et POST cumulatifs, il n'indiquera pas le nombre de requêtes reçus ces 5 dernières minutes (par défaut suivant la configuration de cacti).Afin de n'avoir que des données différentielles, il faut utiliser une fonction CDEF. Par défaut, cacti fournit un certain nombre de fonctions (sommes de toutes les données d'une source, conversion de byte en bits, etc...).
Malheureusement, cacti ne fournit pas de fonction permettant de soustraire la dernière valeur recueillie avec la précédente. Cependant, il est possible de créer de nouvelles fonctions et c'est ce que nous allons faire ici.
Pour créer une nouvelle fonctionCDEF, ilf faut tout d'abord modifier le fichier $CACTI_HOME/lib/rrd.php car il contient une erreur et il faut ajouter des doubles guillemets ("):
Enfin vient la création de la fonction elle même. Pour celà il faut aller dans Console > Graph Management > CDEFs, cliquer sur Add
Name : Difference with 0 as minima
(Save + Add)
CDEF Items :
CDEF Item Type : Custom String
CDEF Item Value : CURRENT_DATA_SOURCE,PREV(CURRENT_DATA_SOURCE),-,0,LT,0,CURRENT_DATA_SOURCE,PREV(CURRENT_DATA_SOURCE),-,IF
Ici la fonction cherche à soustraire la denière valeur à la précédente en fixant la limite minimale à 0 (pour le cas de la rotation de log).
Une autre fonction faisant de même mais ne forçant pas de limite minimale :
Name : Difference
(Save + Add)
CDEF Items :
CDEF Item Type : Custom String
CDEF Item Value : CURRENT_DATA_SOURCE,PREV(CURRENT_DATA_SOURCE),-
Quelques remarques :
- Il est à noter que les fonctions suivant la notation polonaise inverse
Création des graphes :
Ceci fait, il faut maintenant passer à la création du template du graphique.
Pour celà, il faut aller dans Console > Graph Templates puis cliquer sur Add :
Template :
Name : Pavnay- WebHits
Graph Template :
Title : WebHits
(Save)
Graph Template Items > Add :
Data Source : Pavnay - WebHits - (GET)
Color : F5F800
Graph Item Type : AREA
CDEF Function : Difference with 0 as minima
(Create + Add)
Data Source : Pavnay - WebHits - (GET)
Color : None
Graph Item Type : LEGEND
Insert Hard Return : checked
Data Source : Pavnay - WebHits - (POST)
Color : F51D30
Graph Item Type : STACK
CDEF Function : Difference with 0 as minima
(Create + Add)
Data Source : Pavnay - WebHits - (POST)
Color : None
Graph Item Type : LEGEND
(Save)
Quelques explications :
- Les différents Graph Item Type correspondent aux représentations possibles des données. Il est possible de faire des lignes (LINE1, LINE2, LINE3 avec une épaisseur de trait allant du plus fin au plus épais), des zones (AREA et STACK, le premier étant la zone la plus basse sur laquelle s'empilent les autres STACKs), des indicateurs (GPRINT étant un indicateur simple et LEGEND étant une macro générant 3 indicateurs GPRINT précisant la moyenne des données affichées, la valeur maximale atteinte et la dernière valeur collectée);
- La Consolidation Function doit impérativement être AVERAGE pour un Graph Item Type graphique;
- Si il faut appliquer une fonction particulière à la représentation des données, on peut utiliser une fonction CDEF (ici Difference with 0 as minima créée précédement);
- Le Text Format est le texte qui sera appliqué en légende du graphique;
- Insert Hard Return permet de générer un saut de ligne à la fin de la légende (ainsi il est possible de mettre plusieurs indicateurs sur une même ligne puis ajouter un saut de ligne à la fin, comme le fait le Graph Item Type LEGEND)
Ajout du graphe dans un rapport :
Maintenant que toute la configuration concernant la collecte de données et leur réprésentation est faite, il ne reste plus qu'à créer un rapport affichant le graphique.Ici nous avons des données ne correspondant pas à un serveur (Host) spécifique. Si tel était le cas nous attribuerions le graphique au dit serveur. Pour faire celà, il y a 2 méthodes :
- Ajout manuel du graphique au host
- Création d'un Host Template permettant d'attribuer plusieurs graphique à un type de serveur. Ainsi, si nous disposons de plusieurs machines ayant les mêmes tâches, il est possible des les enregistrer sous ce Host Template ce qui à pour conséquence de générer plusieurs graphiques par défaut (par exemple pour un serveur frontal, il sera possible de créer des graphiques pour la charge du CPU, de la mémoire vive, du nombre de pages délivrées, etc... en un seul clic)
Pour celà, il faut faire Console > Management > Devices puis cliquer sur Add et créer un host avec pour IP (Hostname) 127.0.0.1 et description Services.
Cette étape passée, il faut créer la DataSource correspondant au collecteur de données (en fait la base RDD) ensuite aller dans Console > Data Sources, cliquer sur Add :
Selected Data Template : Pavnay - WebHits
Host : Services
Et enfin la création du graphique entant que tel (dans Console > Graph Management puis Add ) :
Select Graph Template : Pavnay WebHits
Host : Services
(Save)
Supplemental Graph Template Data :
Data Source [GET] : WebHits (GET)
Data Source [POST] : WebHits (POST)
Le graphique n'est pas encore visible, pour corriger celà, aller dans Console > Graph Trees > Default Tree puis cliquer sur Add :
Parent Item : [root]
Tree Item Type : Graph
Graph : WebHits
(Create)
Maintenant il est possible de voir la répartition des requêtes GET et POST dans Graphs > Default Tree.
Articles similaires
| Commentaires |
|
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||













