Introduction à Cacti

Copyright (c) 2005 Clément OUDOT

Historique

Historique des révisions
Version	Date	Objet de la révision
V1	27/06/05	version initiale

Licence

Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation ; sans section inaltérable, sans texte de première page de couverture et sans texte de dernière page de couverture.

Une copie de cette Licence est incluse dans la section appelée GNU Free Documentation License de ce document.

Conventions

Les conventions d'écriture suivantes ont été adoptées dans ce document.

Contenu d'un fichier ou ligne de commande :

# Ceci est un fichier
$a=0;
$a++;

Code source :

# ls -la

Remarque :

Attention aux remarques !

Table des matières

1. Introduction	4

2. RRDtool	5

2.1. Présentation	5

2.2. La preuve par l'exemple	5

2.2.1. Création du fichier RRD	5

2.2.2. Peuplement d'un fichier RRD	7

2.2.3. Création du graphique	7

3. Cacti	9

3.1. Présentation	9

3.2. Script de collecte des données	9

3.3. Création de la commande	10

3.4. Création de l'hôte	12

3.5. Sources de données	14

3.5.1. Modèle	14

3.5.2. Génération des sources à partir du modèle	17

3.6. Graphiques	18

3.6.1. Modèle	18

3.6.2. Génération des graphiques à partir du modèle	23

3.7. Positionnement du graphique	24

Introduction

Cacti est un logiciel de supervision (dit de « capacity planning ») basé sur RRDtool permettant de surveiller l'activité de son architecture informatique à partir de graphiques quotidiens, hebdomadaires, mensuels et annuels. Cette solution n'est donc pas destinée à alerter en temps réel sur les dysfonctionnements d'un système mais bien de proposer une vision dans le temps de l'évolution d'indicateurs matériels et logiciels (trafic réseau, occupation des disques, temps de réponse, etc.).

Les manipulations expliquées dans ce document s'appuient sur la version 0.8.6 de Cacti, elles sont cependant adaptables aux anciennes et futures version, moyennant quelques modifications dans l'organisation du menu d'administration et dans les fonctionnalités disponibles.

Toutes les fonctionnalités ne sont pas présentées ici, il faudra par exemple se reporter aux autres sources d'informations pour découvrir les requêtes SNMP indexées, la gestion des utilisateurs, l'import et l'export XML des modèles, etc.

Tout d'abord le logiciel RRDtool (version 1.0), pouvant être utilisé de manière autonome, sera présenté. La suite du document constituera un tutoriel décrivant les étapes depuis la création d'un script de collecte d'informations jusqu'à l'obtention d'un graphique sur l'interface utilisateur, en passant par la création des modèles de sources de données et de graphiques.

RRDtool

Présentation

Le programme RRDtool a été développé par Tobias Etiker dès 1995. Il est librement téléchargeable sur le site suivant : http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/.

RRD est l'acronyme de Round Robin Database, qui peut se traduire par « base de données cyclique ». Ce mécanisme permet de stocker des données dans des fichiers de taille invariante, définie à la création, par un mécanisme de pile LILO (Last In Last Out). Un fichier RRD peut contenir plusieurs RRA (Round Robin Archive) qui correspondent aux différents cycles de conservation des données (jour, semaine, mois, année, etc.).

Une fois les données collectées, RRDtool fournit des outils permettant de générer des graphiques hautement personnalisables, retraitant les données à la volée.

La preuve par l'exemple

Pour comprendre le fonctionnement de RRDtool, l'exemple d'Alex van den Bogaerdt's expliquant comment créer un graphique sur la vitesse d'une voiture sera exposé (cf. http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/tut/rrdtutorial.en.html). Toutes les manipulations décrites ici sont prises en charge par le logiciel Cacti, elles n'ont pour seul objectif que d'illustrer les concepts mis en jeu dans l'exploitation des fichiers RRD.

Soient les données suivantes : à 12h05 le compteur kilométrique de la voiture indique 12345 km et à 12h10, il indique 12357 km. Ces données permettent de calculer la vitesse moyenne de la voiture entre 14h10 et 16h00 : (12357-12345)/(5/60)=144 km/h.

RRDtool va permettre de calculer et de tracer la vitesse seulement à partir des données collectées.

Création du fichier RRD

La commande suivante initialise un fichier RRD :

# rrdtool create linagora.rrd	\
--start 1120082400	\
DS:vitesse:COUNTER:600:U:U	\
RRA:AVERAGE:0.5:1:24	\
RRA:AVERAGE:0.5:6:10

Le fichier se nomme linagora.rrd. La date d'initialisation (option --start) est donnée dans le format UNIX, c'est à dire le nombre de secondes écoulées depuis le 1er janvier 1970.

Le fichier RRD créé contient une source de données (DS pour Data Source). Elle représente la donnée que l'on souhaite stocker et la manière dont les valeurs seront conservées. Les valeurs d'une source de données sont nommées points de données primaires (PDP pour Primary Data Point). Une source de données peut être de l'un des types suivants :

COUNTER : est stockée la différence entre le PDP actuel et le PDP précédent, le tout divisé par la période d'échantillonnage. Ce type ne fonctionne que pour des PDP en augmentation constante (comme un compteur).

DERIVE : idem que COUNTER, mais accepte les PDP négatifs.

ABSOLUTE : idem que COUNTER sauf que le PDP précédent est toujours 0. C'est également la même chose que GAUGE, sauf que le PDP est divisé par la durée d'échantillonnage.

GAUGE : le PDP brut est stocké, sans calcul avec le PDP précédent ou la durée d'échantillonnage.

Par exemple, si on enregistre toutes les 300 secondes (5 minutes) les PDP suivants : 300, 600, 900, 1200, on obtiendra comme valeurs stockées :

COUNTER	=	1	1	1	1
DERIVE	=	1	1	1	1
ABSOLUTE	=	1	2	3	4
GAUGE	=	300	600	900	1200

Pour déclarer une source de données, il faut donner son nom, son type, son battement de coeur (heartbeat) et les PDP minimaux et maximaux (si un PDP sort de ces limites il est considéré comme inconnu). Le battement de coeur est le temps maximum en secondes d'attente d'un PDP après lequel il est considéré comme inconnu. Dans l'exemple précédent, les valeurs suivantes ont été choisies :

nom : vitesse

type : COUNTER

battement de coeur : 600

minimum : U (pour unknown, inconnu)

maximum : U (pour unknown, inconnu)

Suite à la source de données, les RRA sont déclarées. Elles déterminent le nombre d'échantillons (PDP) nécessaires pour calculer un point de consolidation primaire (CDP pour Primary Consolidation Point) et le nombre d'échantillons à conserver. Une RRA a besoin d'une fonction de consolidation (CF) qui indique comment calculer le CDP à partir des PDP :

AVERAGE : le CDP est la moyenne des tous les PDP.

MINIMUM : le CDP est le PDP le plus petit.

MAXIMUM : le CDP est le PDP le plus grand.

LAST : le CDP est le dernier PDP.

Les paramètres fournis ensuite à la RRA sont le facteur xfiles (xff pour xfiles factor) qui détermine la proportion de PDP inconnus nécessaire pour rendre le CDP inconnu, le nombre d'échantillons (steps) et enfin le nombre de CDP à conserver (rows).

Dans l'exemple précédent, les archives qui ont été déclarées sont :

bihoraires : 1 PDP est pris toutes les 300 secondes (durée d'échantillonnage par défaut). Un CDP est obtenu par 1 PDP et 24 CDP sont conservés, ce qui représente donc 24x1x300 secondes, soit 2 heures.

pentahoraires : 1 PDP est pris toutes les 300 secondes, un CDP est calculé à partir de 6 PDP et 10 CDP sont conservés, ce qui représente 10x6x300 secondes, soit 5 heures.

Remarque : les RRA sont appliquées à chaque source de données, il n'est pas possible de sélectionner les RRA par source, il faut créer des fichiers RRD différents pour obtenir cette fonctionnalité.

Peuplement d'un fichier RRD

Une fois le fichier RRD créé, il faut insérer les données. La date de la donnée est fournie en temps UNIX. Par exemple, pour stocker les valeurs kilométriques indiquées dans l'exemple :

# rrdtool update linagora.rrd 1120082400:12345 1120082700:12357

On note que les deux dates sont distantes de 300 secondes, qui est la durée d'échantillonnage par défaut. Après la date et le séparateur « : », la valeur brute est indiquée. Selon le type de source de données, elle sera ou non retraitée. Si plusieurs DS sont déclarées, la valeur correspondante est préfixée du nom de la source à enrichir.

Dans l'exemple, la source est de type COUNTER, il faut donc au minimum deux valeurs avant d'obtenir un PDP. Dans ce cas, pour la valeur 12345, le premier vaudra nan (Not a Number). Ensuite, pour la valeur 12357, le PDP vaudra (12357-12345)/300 soit 0,04. Ces valeurs seront stockées dans l'archive bihoraire mais il faudra attendre d'avoir au moins 6 PDP pour stocker une valeur dans l'archive pentahoraire (et cette valeur sera calculée à partir de la fonction de consolidation choisie).

Les valeurs conservées dans le fichier RRD auront une dimension en kilomètres par seconde, la transformation en kilomètres par heure pourra être réalisée plus tard, au moment de la création du graphique.

Il est évident que la peuplement d'un fichier RRD doit être exécuté automatiquement par un script prenant en charge la collecte des données et la mise à jour de la base. Pour Cacti, ce script sera nommé poller.

Création du graphique

RRDtool fournit des outils pour générer les graphiques s'appuyant sur les sources de données des fichiers RRD. La mise à jour du graphique est indépendante de la mise à jour des données, ce qui signifie que pour obtenir un graphique « temps réel » il faut d'abord effectuer la mise à jour du fichier RRD puis ensuite générer une nouveau graphique à partir de ces données. La commande suivante génère un graphique basique :

# rrdtool graph linagraphique.png	\
--start 1120082400 --end 1120086000	\
DEF:celerite=linagora.rrd:vitesse:AVERAGE	\
LINE2:celerite#FF0000

Le nom du graphique choisi est linagraphique.png, il sera créé dans le répertoire courant. Les dates de début et de fin sont données sous format UNIX par les options --start et --end.

Vient ensuite la définition (DEF) de la source de données à utiliser. Il faut choisir pour cela un identifiant (ici celerite), le nom du fichier RRD (ici linagora.rrd), le nom de la source de données (ici vitesse) et enfin la fonction de consolidation (ici AVERAGE).

Attention : cette fonction de consolidation est indépendante de la fonction de consolidation choisie dans la création de la source de données. Rarement utilisée, elle intervient lorsque l'échelle du graphique ne coïncide pas avec le nombre de points disponibles dans la source de données, ce qui peut se produire quand la période d'échantillonnage du graphique est forcée à une valeur supérieure de la durée d'échantillonnage de la DS (cf. option --step). Dans ce cas, pour un point du graphique, plusieurs points de la source de données seront utilisés et ce premier sera obtenu en consolidant ces derniers.

Pour finir, les éléments du graphique sont configurés, ils utilisent ou non une des sources de données définies plus haut (DEF). Voici quelques types possibles (liste non exhaustive) pour ces éléments :

GPRINT : élément de légende.

COMMENT : commentaire en bas du graphique.

LINEx : ligne d'épaisseur x.

AREA : aire.

VRULE : ligne horizontale.

Pour certains de ces types, il faut déclarer la DEF associée ainsi que la couleur, au format #RRGGBB. Dans l'exemple, c'est une ligne d'épaisseur 2 et de couleur rouge qui représente la vitesse (définie par celerite).

Comme indiqué dans le chapitre précédent, il est possible de modifier à la volée les valeurs qui seront utilisées pour créer le graphique, sans altérer les données du fichier RRD : ce sont les définitions calculées (CDEF pour Calculations DEFinitions), utilisant le langage RPN (Reverse Polish Notation). Il a comme particularité de définir des opérations en spécifiant d'abord les opérandes et ensuite l'opérateur (par exemple 2+3 s'écrira 2,3,+ en RPN).

Pour obtenir des kilomètres par heure plutôt que des kilomètres par seconde, il faut multiplier les données du fichier RRD par 3600, la commande de création de graphique sera alors :

# rrdtool graph linagraphique.png	\
--start 1120082400 --end 1120086000	\
DEF:celerite=linagora.rrd:vitesse:AVERAGE	\
CDEF:celeriteh=celerite,3600,\*
LINE2:celeriteh#FF0000

Remarque : le caractère * doit être échappé pour que l'expression soit syntaxiquement correcte.

L'outil de création de graphique réserve d'autres fonctionnalités dont certaines seront exposées dans le tutoriel Cacti présenté ci-après.

Cacti

Présentation

Cacti est un logiciel écrit en PHP, s'appuyant sur un base de données MySQL pour stocker tous ses éléments de configuration et sur RRDtool pour créer les fichiers RRD, les peupler et obtenir les graphiques correspondants. Il a pour objectif de faciliter les manipulations parfois fastidieuses de RRDtool, néanmoins une bonne connaissance des fonctionnalités de cet outil est nécessaire pour apprécier l'utilisation de Cacti (cf. 2. RRDtool). Il est librement téléchargeable sur le site http://www.cacti.net.

Le tutoriel suivant va décrire comment programmer un script de collecte de données, comment l'intégrer aux commandes Cacti puis créer les modèles de source de données et de graphiques associés. Ensuite seront décrites les étapes permettant de déclarer un serveur puis lui générer les sources de données et les graphiques issus des modèles créés précédemment. Pour terminer, il sera expliqué comment gérer l'arbre des graphiques présenté sur l'interface utilisateur.

Le script d'exemple permettra de mesurer d'une part le temps nécessaire pour réaliser une authentification sur un annuaire, et d'autre part le temps nécessaire pour réaliser une lecture sur cet annuaire. On obtiendra au final un graphique possédant deux courbes reflétant l'évolution de ces deux temps de réponse.

Script de collecte des données

Le script peut être programmé dans n'importe quel langage, du moment qu'il reste exécutable sur le système d'exploitation hébergeant Cacti. Si PHP est choisi, il est possible d'optimiser l'exécution du script en respectant la norme fixée par les développeurs pour créer un script serveur (voir documentation officielle sur le site http://www.cacti.net).

Le script peut prendre ou non des paramètres en entrée, il doit par contre respecter le format de sortie suivant :

attribut1:valeur1 attribut2:valeur2 attribut3:valeur3 ...

Si le script ne renvoie qu'une valeur, le nom de l'attribut peut être omis. Il est important de mettre des espaces entre chaque couple attribut/valeur mais de ne pas en mettre avant et après le caractère séparateur « : ».

Le script d'exemple se nomme temps_ldap.pl et prend en entrée l'adresse et le port de l'annuaire LDAP. Voici son usage :

./temps_ldap.pl -h hostname -p port

Il renvoie deux valeurs, un pour l'attribut bind, l'autre l'attribut search, par exemple :

bind:0.001 search:0.004

Création de la commande

Le script doit être copié dans le répertoire des scripts de Cacti :

# cp temps_ldap.pl /var/www/html/cacti/scripts

Il doit être exécutable pour l'utilisateur cacti :

# chmod u+x /var/www/html/cacti/scripts/temps_ldap.pl
# chown cacti /var/www/html/cacti/scripts/temps_ldap.pl

Se connecter à l'interface web de Cacti en administrateur (par défaut http://serveur/cacti/, identifiant : admin). Cliquer ensuite sur Data Input Methods dans le sous-menu Collection Methods puis sur Add en haut à droite pour ajouter une nouvelle commande :

Le formulaire propose les champs suivants :

Name : nom de la commande, pour usage dans Cacti.

Input Type : nature de la commande (script externe, requête SNMP, script serveur PHP, etc.).

Input String : chemin complet du script. Les paramètres doivent être placés entre <>, ils seront détectés par Cacti.

Pour le script d'exemple, les valeurs à renseigner sont les suivantes :

Name : Temps de réponse LDAP

Input Type : Script/Command

Input String : /var/www/html/cacti/scripts/temps_ldap.pl -h <hostname> -p <port>

Cliquer sur create pour enregistrer la nouvelle commande. Le message Save Successful doit apparaître en haut de la page.

Il faut à présent préciser les paramètres d'entrée de la commande, qui ont été définis plus haut dans le champ Input String. Dans le tableau Input Fields, cliquer sur Add :

Le formulaire propose les champs suivants :

Field [Input] : identifiant du paramètre d'entrée (généré à partir des valeurs entre <> du champ Input String).

Friendly Name : nom explicite du paramètre, pour usage dans Cacti.

Regular Expression Match : expression régulière validant la saisie du champ.

Allow Empty Input : permettre une valeur vide pour ce champ.

Special Type Code : nature spéciale du champ, permettant à Cacti de remplir dynamiquement sa valeur. Les natures suivantes sont disponibles :

hostname : adresse du serveur.

snmp_community : communauté SNMP.

snmp_username : utilisateur SNMP.

snmp_password : mot de passe SNMP.

snmp_port : port SNMP.

snmp_timeout : temps maximal de connexion SNMP.

snmp_version : version SNMP.

Pour le script d'exemple, deux paramètres d'entrée sont déclarés, voici les propriétés qu'il faut leur affecter :

Field [Input]	Friendly Name	Regular Expression Match	Allow Empty Input	Special Type Code
hostname	Nom ou IP de l'hôte			hostname
port	Port du serveur LDAP			

Pour chaque paramètre, cliquer sur create pour valider et sur Add pour ajouter le suivant. Le message Save Successful doit apparaître en haut de la page.

Pour terminer il faut déclarer les champs de sortie, en cliquant sur Add en haut du tableau Ouput Fields :

Le formulaire propose les champs suivants :

Field [Output] : identifiant du champ de sortie.

Friendly Name : nom explicite du champ de sortie, pour usage dans Cacti.

Update RRD File : mettre à jour la base RRD avec les données de champ.

Pour le script d'exemple, deux champs de sortie sont déclarés, voici les propriétés qu'il faut leur affecter :

Field [OUTput]	Friendly Name	UPDATE RRD FILE
bind	Temps d'authentification	oui
search	Temps de lecture	oui

Pour chaque champ, cliquer sur create pour valider et sur Add pour ajouter le suivant. Le message Save Successful doit apparaître en haut de la page.

Cliquer sur save pour enregistrer la commande.

Création de l'hôte

Avant toute chose, il faut déclarer les hôtes supervisés dans Cacti. Il est fortement conseillé que ces hôtes soient accessibles par SNMP, mais ce n'est pas une obligation.

Cliquer sur Devices dans le sous-menu Management, puis sur Add en haut à droite :

Le formulaire propose les champs suivants :

Description : nom explicite de l'hôte, par convention son nom d'hôte, pour usage dans Cacti.

Hostname : DNS ou adresse IP de l'hôte.

Host Template : modèle Cacti à utiliser.

Disable Host : désactivation de l'hôte.

SNMP Community : communauté SNMP pour la lecture.

SNMP Version : version du protocole SNMP.

SNMP Port : port UDP du serveur SNMP.

SNMP Timeout : temps maximum d'établissement d'une connexion, en ms.

Pour l'exemple, il faut remplir les champs Description et Hostname, choisir ucd/net SNMP Host pour le champ Host Template et modifier si besoin le nom de la communauté SNMP. Si on ne souhaite pas de SNMP, conserver None comme modèle. Cliquer sur create pour créer l'hôte. Un message de réussite doit s'afficher en haut de la page.

Si le modèle ucd/net SNMP Host a été choisi, il est possible de créer rapidement les graphiques de base :

Trafic des cartes réseaux

Occupation des partitions du disque

Utilisation du processeur

Charge du processeur

Utilisation de la mémoire

Ces éléments sont indiqués dans les tableaux Associated Data Queries et Associated Graph Templates. Pour créer les graphiques standards, cliquer sur Create Graphs for this Host en haut à droite de la page :

Dans le tableau Graph Templates, sélectionner la totalité des graphiques avec la case en haut à droite. Dans les tableaux Data Query, sélectionner les interfaces réseaux et les partitions à superviser. Cliquer ensuite sur create.

Il est demandé de préciser les noms de la source et du graphique pour l'utilisation du processeur. Laisser les valeurs par défaut et cliquer sur create. En haut de la page doit s'afficher la liste des graphiques générés.

Si le serveur ne possède pas SNMP, ces graphiques ne peuvent pas être crées, mais les étapes suivantes permettent dans les deux cas de générer le graphique pour le temps de réponse LDAP.

Sources de données

La première étape consiste à créer un modèle de sources de données utilisant la commande définie au 3.3. Création de la commande. La seconde étape, à renouveler pour chaque nouveau serveur, permet de créer une source de données rapidement à partir du modèle.

Modèle

Pour créer un modèle de source de données, cliquer sur Data Templates dans le sous-menu Templates. Cliquer sur Add en haut à droite :

Champs du cadre Data Templates :

Name : nom du modèle, pour usage dans Cacti.

Champs du cadre Data Source :

Name : nom de la source de données issue de ce modèle, pour usage dans Cacti. Il est possible d'utiliser des champs automatiques comme |host_description| qui est remplacé automatiquement par la description de l'hôte (voir 3.4. Création de l'hôte).

Data Input Method : méthode de collecte des données, c'est ici que l'on sélectionne la commande.

Associated RRA's : Cacti possède par défaut 4 RRA (cf. 2.2.1. Création du fichier RRD) :

Daily : données conservées 24 heures, avec une moyenne sur 5 minutes.

Weekly : données conservées 7 jours, avec une moyenne sur 30 minutes.

Monthly : données conservées 30 jours, avec une moyenne sur 2 heures.

Yearly : données conservées 365 jours, avec une moyenne sur 24 heures.

Step : nombre de secondes entre chaque mise à jour des données.

Data Source Active : activation de la collecte des données.

Les cadres Data Source Item correspondent aux champs de sortie du script. Ils correspondent aux lignes DS de la commande de création du fichier RRD (cf. 2.2.1. Création du fichier RRD) :

Internal Data Source Name : identifiant de l'élément de la source de données, pour usage dans Cacti, indépendant du nom des champs de sortie, mais il est préférable de choisir le même pour faciliter la maintenance. Attention, la taille de ce champ est limitée à 19 caractères.

Minimum Value : en-dessous de cette limite, la valeur sera considérée comme inconnue (U).

Maximum Value au-dessus de cette limite, la valeur sera considérée comme inconnue (U).

Date Source Type : COUNTER, DERIVE, ABSOLUTE ou GAUGE (cf. 2.2.1. Création du fichier RRD).

Heartbeat : temps maximum en secondes d'attente d'une valeur. Après ce temps, la valeur est considérée comme inconnue (U).

La plupart des champs possède l'option Use Per Data Source Value (Ignore this Value). Elle permet de rendre le champ spécifique, c'est-à-dire que la valeur inscrite dans le modèle ne sera pas propagée aux sources issues du modèle. Plus exactement, la valeur servira de valeur par défaut dans la source mais le champ sera modifiable pour chaque source issue du modèle.

Cliquer sur create pour créer le modèle. Le message Save Successful apparaît en haut de la page. Il est possible de créer de nouveaux éléments de la source en cliquant sur new en haut à gauche du cadre Data Source Item.

Après sauvegarde, le cadre Custom Data apparaît, lié à la valeur inscrite dans le champ Data Input Method. Il permet d'indiquer les valeurs des paramètres d'entrée. Un nouveau champ apparaît également dans le cadre Data Source Item, nommé Output Field, qui permet d'associer un champ de sortie (parmi ceux déclarés dans la méthode sélectionnée) à un élément de la source de donnée. Il n'est pas obligatoire de déclarer un élément par champ de sortie, mais il en faut au minimum un.

Cliquer sur save pour enregistrer le modèle.

Le tableau suivant indique les valeurs à affecter au champ pour créer le modèle du tutoriel :

Temps de réponse LDAP
Champ	Use Per Data Source Value	Valeur
Data Templates
Name		Temps de réponse LDAP
Data Source
Name	Oui	|host_description| - Temps de réponse LDAP
Data Input Method		Temps de réponse LDAP
Associated RRA's		Daily (5 Minute Average) Weekly (30 Minute Average) Monthly (2 Hour Average) Yearly (1 Day Average)
Step	Non	300
Data Source Active	Non	Oui
Data Source Item
Internal Data Source Name	Non	bind
Minimum Value	Non	0
Maximum Value	Non	0
Data Source Type	Non	GAUGE
Heartbeat	Non	600
Output Field	Non	bind – Temps d'authentification
Data Source Item
Internal Data Source Name	Non	search
Minimum Value	Non	0
Maximum Value	Non	0
Data Source Type	Non	GAUGE
Heartbeat	Non	600
Output Field	Non	search – Temps de lecture
Custom Data
Nom ou IP de l'hôte	Non	
Port du serveur LDAP	Oui	389

Ce modèle permettra donc de créer des fichiers RRD contenant 2 éléments de sources de données (bind et search), avec 4 archives associées à chacune d'elles, soit au total huit rangées de données.

Génération des sources à partir du modèle

Cliquer sur Data Sources dans le sous-menu Management. Sélectionner l'hôte concerné dans le cadre Data Sources et cliquer sur Add en haut à droite.

Dans le cadre Data Template Selection, choisir le modèle qui vient d'être créé (champ Selected Data Template), vérifier que l'hôte est bien sélectionné (champ Host), et cliquer sur create.

Le cadre Supplemental Data Template Data apparaît, avec les champs spécifiques mentionnés dans le modèle (options Use Per Data Source Value), plus le champ Data Source Path qui détermine le nom du fichier RRD (il est conseillé de conserver la valeur attribuée par Cacti).

Remplir les champs spécifiques et cliquer sur save. Le message Save Successful apparaît en haut de la page.

Pour l'exemple, les champs spécifiques sont le nom de la source de données et le port de l'annuaire LDAP, il est possible de les modifier pour chaque source de données générée.

La création de la source de données dans Cacti équivaut à la création du fichier RRD avec RRDtool. Cependant comme la source est active, Cacti va la mettre à jour automatiquement en utilisant la commande fournie, alors qu'il faudrait le faire manuellement avec RRDtool (cf. 2.2.2. Peuplement d'un fichier RRD).

Graphiques

Dans le même esprit que pour les sources de données, un modèle va d'abord être créé pour permettre de générer facilement des graphiques pour chaque hôte.

Modèle

Pour créer un modèle de graphiques, cliquer sur Graph Templates dans le sous-menu Templates. Cliquer sur Add en haut à droite. Un formulaire vierge avec plusieurs cadres apparaît.

Champs du cadre Template :

Name : nom du modèle, pour usage dans Cacti.

Champs du cadre Graph Template :

Title : titre du graphique issu de ce modèle, pour usage dans Cacti. Il est possible d'utiliser des champs automatiques comme |host_description| qui est remplacé automatiquement par la description de l'hôte (voir 3.4. Création de l'hôte).

Image Format : format de sortie de l'image (PNG ou GIF).

Height : hauteur de l'image en pixels.

Width : largeur de l'image en pixels.

Auto Scale : adapter automatiquement l'échelle (ordonnée) du graphique aux valeurs extrêmes.

Auto Scale Options : options d'adaptation de l'échelle. Soit l'échelle s'adapte aux valeurs minimum et maximum (Use --alt-autoscale), soit juste au maximum, en prenant 0 comme minimum (Use --alt-autoscale-max).

Logarithmic Auto Scaling (--logarithmic) : utiliser une échelle automatique logarithmique.

Rigid Boundaries Mode (--rigid) : Les valeurs maximum et minimum (voir options plus bas) ne seront pas dépassées. Cela n'empêche pas d'avoir une échelle automatique pour les valeurs contenues entre ces bornes.

Auto Padding : gestion automatique des abscisses (texte et espacement des colonnes).

Allow Graph Export : permet d'exporter le graphique pour une utilisation hors de Cacti.

Upper Limit : limite haute de l'échelle du graphique (inactif si Auto Scale activé).

Lower Limit : limite basse de l'échelle du graphique (inactif si Auto Scale activé).

Base Value : valeur de base de l'ordonnée. Par exemple 1024 (1kilo-octet = 1024 octets) pour la mémoire et 1000 (1kilo-bit = 1000 bits) pour le trafic réseau.

Unit Value : unité de valeur de l'ordonnée.

Unit Exponent Value : exposant des valeurs des ordonnées. Par exemple 3 pour avoir des kilos, ou 6 pour avoir des megas. Les valeurs permises se situent entre -18 et +18. La meilleure valeur est choisie si le champ est laissé vide.

Vertical Label : texte affiché verticalement à gauche du graphique.

L'option Use Per-Graph Value permet de spécifier une valeur spécifique par graphique issu du modèle.

Cliquer sur create pour créer le modèle. Le message Save Successful apparaît en haut de la page. Les cadres Graph Template Items et Graph Item Inputs sont également créés.

Le tableau suivant donne les valeurs associées à l'exemple :

Temps de réponse LDAP
Champ	Use Per Data Source Value	Valeur
Template
Name		Temps de réponse LDAP
Graph Template
Name	Oui	|host_description| - Temps de réponse LDAP
Image Format	Non	PNG
Height	Non	120
Width	Non	500
Auto Scale	Non	Oui
Auto Scale Options	Non	Use --alt-autoscale-max
Logarithmic Auto Scaling	Non	Non
Rigid Boundaries Mode	Non	Non
Auto Padding	Non	Oui
Allow Graph Export	Non	Oui
Upper Limit	Non	10
Lower Limit	Non	0
Base Value	Non	1000
Unit Value	Non	
Unit Exponent Value	Non	
Vertical Label	Non	secondes

Il faut à présent définir les éléments du graphique que sont les courbes, les aires, les légendes, etc. Les choix diffèrent avec ceux proposés par défaut dans RRDtool (cf 2.2.3. Création du graphique).

Cliquer sur Add en haut à droite du cadre Graph Template Items. Le formulaire suivant apparaît :

Il propose les champs suivants :

Data Source : nom de l'élément d'un modèle de source de données (laisser à None pour un élément texte ou les lignes horizontales et verticales).

Color : couleur de la courbe ou de l'aire (laisser à None pour un élément texte).

Graph Item Type : type d'élément parmi les choix suivants ;

COMMENT : commentaire en bas du graphique.

HRULE : ligne horizontale (valeur d'ordonnée à préciser dans Value).

VRULE : ligne verticale (valeur de la forme HH:MM à préciser dans Value).

LINE1, LINE2, LINE3 : ligne de petite, moyenne ou grande épaisseur.

AREA : aire de couleur.

STACK : pile de couleur, c'est-à-dire une aire de couleur dont la limite inférieure est la limite supérieure de la pile ou de l'aire du dessous. Il faut au minimum avoir définit une aire pour utiliser une pile. Si on utilise des aires plutôt que des piles, elles risquent de se superposer et de disparaître derrière les plus grandes.

GPRINT : élément de légende, à préciser avec l'option Consolidation Function et GPRINT Type.

LEGEND : type virtuel générant trois GPRINT (LAST, AVERAGE et MAX).

Consolidation Function : fonction de consolidation entre la valeur du graphique et les valeurs de la source de données. AVERAGE (moyenne) convient la plupart du temps, pour les légendes on peut aussi utiliser LAST (dernier), MAX (maximum) et MIN (minimum).

CDEF Function : fonction appliquée à l'élément du graphique (permet par exemple de totaliser les valeurs de toutes les sources de données). Les fonctions CDEF sont configurables dans le sous-menu Management > Graph Management > CDEFs.

Value : utilisé seulement pour les types HRULE et VRULE, c'est la valeur de l'abscisse ou de l'ordonnée de la ligne.

GPRINT Type : fonction en langage GPRINT de format de la valeur. Le choix Normal convient dans la majorité des cas. Les fonctions GPRINT sont configurables dans le sous-menu Management > Graph Management > GPRINT Presets.

Text Format : non-applicable pour le type LEGEND, c'est le texte affiché en légende d'un élément du graphique.

Insert Hard Return : force le retour à la ligne après l'élément. Utilisé pour mettre en forme la légende du graphique, il est activé automatiquement avec le type LEGEND.

Les concepts de fonctions de consolidation et de CDEF sont ceux exposés dans le chapitre 2.2.3. Création du graphique.

Cliquer sur create pour créer l'élément. Le message Save Successful apparaît en haut de la page.

Le tableau suivant donne les éléments à créer pour l'exemple :

Graph Template Items (bind)
Data Source		Temps de réponse LDAP -(bind)
Color		6557D0
Graph Item Type		LINE2
Consolidation Function		AVERAGE
CDEF Function		None
Value		
GPRINT Type		Normal
Text Format		Temps d'authentification
Insert Hard Return		Non
Graph Template Items (légende)
Data Source		Temps de réponse LDAP -(bind)
Color		
Graph Item Type		LEGEND
Consolidation Function		AVERAGE
CDEF Function		None
Value		
GPRINT Type		Normal
Text Format		
Insert Hard Return		Non
Graph Template Items (search)
Data Source		Temps de réponse LDAP -(search)
Color		FAFD9E
Graph Item Type		LINE2
Consolidation Function		AVERAGE
CDEF Function		None
Value		
GPRINT Type		Normal
Text Format		Temps de recherche
Insert Hard Return		Non
Graph Template Items (légende)
Data Source		Temps de réponse LDAP -(search)
Color		
Graph Item Type		LEGEND
Consolidation Function		AVERAGE
CDEF Function		None
Value		
GPRINT Type		Normal
Text Format		
Insert Hard Return		Non

Lorsque que l'élément du graphique est lié à un nouvel élément de source de données (option Data Source dans le formulaire précédent), une entrée est créée dans le tableau Graph Item Inputs (elle correspond à une ligne DEF dans la commande de création de graphique RRDtool). Une entrée peut servir à plusieurs élément (par exemple pour tracer la courbe et afficher la valeur en légende). Il est possible d'éditer ces entrées en cliquant sur leur nom, on obtient alors les options suivantes :

Name : identifiant de l'entrée.

Description : description de l'entrée (optionnel).

Field Type : nature de l'entrée. C'est Data Source qui convient dans la majorité des cas.

Associated Graph Items : éléments du graphique associés. Il est préférable de les configurer dans le tableau Graph Template Items.

Pour l'exemple, deux entrées (bind et search) seront créées automatiquement, il n'est pas nécessaire de les modifier.

Cliquer sur save pour enregistrer le modèle.

Génération des graphiques à partir du modèle

Cliquer sur Graph Management dans le sous-menu Management. Sélectionner l'hôte concerné dans le cadre Graph Management et cliquer sur Add en haut à droite.

Dans le cadre Graph Template Selection, choisir le modèle concerné (champ Selected Graph Template), vérifier que l'hôte est bien sélectionné (champ Host), et cliquer sur create.

Le cadre Supplemental Graph Template Data apparaît, avec les champs spécifiques mentionnés dans le modèle (options Use Per Data Source Value), plus les champs Data Source qui déterminent les éléments des sources de données à associer aux entrées des éléments du graphique (Graph Item Inputs).

Remplir les champs spécifiques (uniquement le nom pour l'exemple) et cliquer sur save. Le message Save Successful apparaît en haut de la page.

Positionnement du graphique

Les graphiques sont créés mais n'apparaissent par dans l'arbre de présentation de Cacti (Graph Tree). Pour cela il faut cliquer sur Graph Trees dans le sous-menu Management.

Pour créer un nouvel arbre, cliquer sur Add en haut à droite du cadre Graph Trees. Deux paramètres seulement sont nécessaires :

Name : Nom de l'arbre

Sorting Type : Tri des éléments de l'arbre :

Manual Ordering : tri manuel.

Alphabetic Ordering : tri par ordre alphabétique.

Numeric Ordering : tri par valeurs numériques.

Pour éditer un des arbres existants, cliquer sur le nom de celui-ci. Pour l'exemple, créer un arbre « Temps de réponse LDAP » avec un tri manuel.

À l'intérieur d'un arbre, pour créer un élément, cliquer sur Add en haut à droite du cadre Tree Items. Trois types d'éléments (Tree Item Type) peuvent être créés :

Header : branche d'un arbre. L'option Title contient le nom de la branche et l'option Sorting Type la méthode de tri des éléments.

Graph : graphique simple. L'option Graph permet de sélectionner le graphique à afficher et l'option Round Robin Archive permet de choisir la RRA associée.

Host : branche spéciale regroupant tous les graphiques d'un hôte. L'option Host permet de sélectionner l'hôte et l'option Graph Grouping Style l'ordre de présentation des graphiques.

Pour l'exemple, créer des graphiques simples (avec RRA Daily) pour chaque hôte configuré.

Il est possible de modifier la hiérarchie des éléments en changeant la valeur de l'option Parent Item.

Cliquer sur create ou save pour enregistrer les modifications. Elles sont visibles immédiatement dans l'interface utilisateur. Les graphiques créés dans ce tutoriel doivent se trouver dans la branche « Temps de réponse LDAP ».

GNU Free Documentation License

Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.

51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this licence principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

H. Include an unaltered copy of this License.

I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this licence give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

	Introduction à Cacti	Page 3 sur 30
Copyright (c) 2005 Clément OUDOT	http://www.linagora.org	modifié le 05/07/05

LINAGORA

30 rue Saint Augustin

75002 PARIS

http://www.linagora.com

http://www.linagora.org

Introduction à Cacti

Clément OUDOT

2005-06-27T12:22:38