Monitorer son serveur

Une zone pour les utilisateurs enregistrés qui désirent contribuer au site et faire profiter la communauté de leur expérience d'Apache.

Modérateur : Gandalf

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » dim. 28 nov. 2004, 1:23

Qu'est que RrdTool
Round Robin Data Tools. Rrdtool est un programme, dotés de différentes fonctions, qui permettent de traiter des données du stockage, jusqu'à l'affichage.
Le plus souvent, on se sert de RrdTool couplé à un script qui permet de récupérer des données SNMP. Cela permet, par exemple danalyser le debit de l'interface reseau, de stocker sa valeur à interval régulier dans une base de donnée .rrd et de restaurer ces valeurs sous forme de graphiques.
Jusqu'ici, on fait difficilement la distinction entre mrtg et rrdtool. RrdTool et Mrtg sont developpés par le même auteur. Pour simplifier la différence entre les deux outils, ou pourrais constater que Rrdtool est plus paramatrable que Mrtg.


1.0 - Installer RrdTool
Pour installer RrdTool sous windows, il suffit de le <a href='http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/download.html' target='_blank'>telecharger ici</a>. Décompressez l'archive, et récuperez le programme src\tool_release\rrdtool.exe
Je vous conseille, de lire l'article ainsi que le post qui suit, et de ne pas faire la configuration au fur et à mesure.


1.1 - Fonctions de RrdTool
Au total,11 fonctions sont disponibles en argument du programme rrdtool.exe. Pour une première utilisation, seules les 3 premières seront utilisées:
- create : pour créer une base de donnée .rrd, où stocker les données
- update : pour mettre à jour cette base de données
- graph : pour restaurer les valeurs sous forme de graphiques.


2.0 - Installer un outils SNMP
Le protocole SNMP permet de diagnostiquer l'état d'un appareil informatique. Il permet par exemple, d'interroger les routeurs d'un réseau pour récuperer les dernières erreurs qui sont survenues.SNMP met à disposition des informations qui peuvent s'averer sensibles : la première version du protocole ne gère absoluement pas l'authentification. N'importe qui en connection avec un peripheriques supportant SNMP peut lire toutes les données mises à disposition. La version 2 corrige se problème, en intégrant la gestion de mot de passe.

Sous windows, le protocole SNMP peut être installé, afin de diagnostiquer le réseau (dans ajout/suppression de programme -> Composants ). On pourrais se contenter des valeurs récuperés par Windows, mais vous pouvez aussi ajouter un outils, qui récupère un maximum d'informations sur le système d'exploitation (memoire vive, cpu, debit reseau ...) et qui permet leur lecture par le protocole SNMP.

2.1 - Récuperer les valeurs SNMP
Les outils les plus connus qui permettent de faire cela, ce trouvent sur cette page:<a href='http://www.wtcs.org/snmp4tpc/default.htm' target='_blank'>SNMP4PC</a>.
Pour les utilisateurs de WindowsXP, deux solutions s'offrent à vous. Télécharger la version SNMPW2K, ou snmp-informant.

2.2 Trouver les clés
Le protocole SNMP permet la lecture d'informations sous forme de node. Toutes les valeurs sont organisées, comme dans l'arborescence d'un répertoire. On peut lire l'adresse d'une node sous forme brut, 1.2.3, ou sous forme un peu plus clair, parent.fils.petit-fils
Suivant l'outils que vous utilisez (2.1) pour sonder votre système, l'adresse des nodes ne sera pas le même.
Ex: avec SNMP4W2K, la node permettant de lire, la quantité de mémoire vive libre est 1.3.6.1.4.1.311.1.1.3.1.1.1.2.0 alors qu'avec informant il s'agit de la node .1.3.6.1.4.1.9600.1.1.2.1.0.

Pour trouver les valeurs que vous voudrez intégrer à vos graphiques, il suffit d'installer <a href='http://www.wtcs.org/snmp4tpc/getif.htm' target='_blank'>GetIf</a>

Image


3.0 - Création de la base de données
Pour créer une base de donnée qui permettra de stocker les valeurs SNMP, ouvrez une console, et tapez:
rrdtool create rrdf_memory.rrd --step 300 DS:mem_usage:GAUGE:1000:0:1024000000 DS:mem_free:GAUGE:1000:0:1024000000 DS:mem_cache:GAUGE:1000:0:1024000000 RRA:AVERAGE:0.5:1:1200 RRA:MIN:0.5:12:2400 RRA:MAX:0.5:12:2400 RRA:AVERAGE:0.5:12:2400

Barbare ? Non ! 'create' est la fonction que nous allons utiliser.'rrdf_memory.rrd' est le fichier qui fera office de base de données. 'step' indique le temps minimum qui doit s'écouler entre deux mise à jour de la base. Ensuite, vous allez spécifier des colonnes.
DS:nomcolonne:typecolonne:temps:min:max

Le type de colonne, est dans la majorité des cas, GAUGE, mais il peut aussi être COUNTER, quand il s'agit d'une valeur qui s'incremente à chaque mise à jour. 'temps' indique la durée qui est l'interval maximum qui peut s'écouler entre deux mises à jour, après quoi, le graphiques deviendra discontinu: on observera une coupure, et le vide sera designé comme 'valeurs inconnues'
'min' et 'max' sont les extremes des valeurs qui pourront être stockées.

Ensuite, RRA permet d'indiquer la 'compression' qui aura lieu au court des mises à jour.
RRA:AVERAGE:0.5:1:1200
Ici, la base de donnée sera composé de 1200 enregistrements occupant 5minutes chacuns. Pour le 601 enregistrement, soit au bout de ([step=300]*600/60=50heures), la deuxieme reègle s'applique.
RRA:MIN:0.5:12:2400
La base de donnée sera composée de 2400 enregistrements de 30minute (12*300/60=100jrs) a partir du 600eme, jusqu'a 3000eme donc, en ainsi de suite.


3.1 - Mise à jour des valeurs
Pour mettre à jour les valeurs, c'est simplisime: il suffit d'executer la commande suivante:
rrdtool update --template mem_usage:mem_free:mem_cache 156000:56000:12000
De template, à mem_cache, la chaine n'est pas obligatoire: elle sert simplement à s'assurer que les valeurs entrées iront dans la bonne colonne.
Vous ne pouvez effectuer de rafraichissement, si la durée écoulée depuis le dernier rafraichissement est plus courte que celle spécifiée dans le paragraphe précédent, lors de la création de la base.
Pour entrer automatiquement les valeurs, il vous faudra un script qui les récupère et qui lance la commande de mise à jour. Un exemple est donné dans le deuxieme post.

3.2 - Création de graphiques
Pour créer un graphique, ce n'est pas plus compliqué.
rrdtool graph "graphs/rrdg_memory_d.png" --vertical-label "RAM" --base "1024" DEF:mem_usagec=rrdf_memory.rrd:mem_usage:AVERAGE AREA:mem_usagec#7FB4D9:"Memoire utilisee" DEF:mem_freec=rrdf_memory.rrd:mem_free:AVERAGE LINE2:mem_freec#0056B4:"Memoire libre" DEF:mem_cachec=rrdf_memory.rrd:mem_cache:AVERAGE LINE2:mem_cachec#FF56B4:"Memoire cache"

Cette commande va lancer créer le fichier graphs/rrdg_memory_d.png, avec comme titre vertical "RAM". Dans cette exemple, on spécfiera que la base des valeurs à afficher est 1024 (1ko).
Ensuite, on definit mem_usagec, qui correspond au fichier rrdf_memory.rdd et à la colonne mem_usage. On prends une moyenne des valeur. Puis on definit la manière dont sera représenté mem_usage. AREA, permet de faire des bandes, et LINEX permet de faire des lignes d'épaisseur X. Puis, on choisit une couleur et une légende.

Par défaut, Rrdtool prend les valeurs des dernières 24heures. On peut lui demander de prendre les valeurs de toute la semaine en ajoutant
--start "-2419200"
Ici, Rddtool debutera son graphique, 2419200 secondes avant maintenant.

Ne pas oublier non plus les --lower-limit "x"[I/] et [I]--upper-limit "x". Ces limites permettent d'agrandir le graph par defaut. Un exemple, pour que le graphiques de l'utilisation du processeur en % aille toujours de 0 à 100, on indiquera --upper-limit "100".
Si une limite est dépassé, alors le graphique s'ajuste automatiquement. Si vous limitez le graphiques du cpu à 75% et que une valeur atteint 80%, alors le graphiques s'ajuste: pour éviter cela, ajoutez --rigid, et les valeurs extremes seront alors coupées.

Enfin, au lieu d'afficher directement mem_usagec, vous pouvez travailler la valeur.
CDEF:mem_usage_mod=mem_usagec,512,+
Ici, la variable mem_usage_mod, va contenir la valeur de mem_usagec + 512.Ensuite:
AREA:mem_usage_mod#7FB4D9:"Memoire utilisee"

Voila, voila.
La mise en place de rddtool est finalement assez simple. Reste à configurer la récuperation de valeurs, leur entré, et leur affichage.

Pour plus d'info, rendez-vous sur le
<a href='http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/' target='_blank'> Site officiel de RRDTool</a>
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
apis
Pilier de forum
Pilier de forum
Messages : 1107
Inscription : sam. 21 févr. 2004, 14:50
Localisation : Lyon
Contact :

Messagepar apis » dim. 28 nov. 2004, 12:27

Recuperation de valeurs SNMP, ajout dans la base, création de graphiques
Je n'ai pas trouvé de script qui permette de mettre à jour simplement des valeurs SNMP données, bien que cela doit exister.

J'expose ici une solution, qui permet de gerer les valeurs que l'on veut sonder, et les bases de données où on les enregistre. Bien plus rapides, serait de creer un script php, ou perl, en dur, sans se connecter à mysql. Cela rend l'execution plus rapide.

Sinon,récuperez php5, prennez php5-cgi,php.ini, le script joint à l'article, rrdtool.exe et les bases rrd que vous avez crée suivant les valeurs que vous voulez sonder: mettre le tout dans
x:/y/
Ensuite, créer un fichier update.cmd contenant:

Code : Tout sélectionner

x:/y/php-cgi -c x:/y/php.ini x:/y/rrdc_update.php


Créez un fichier graphs.cmd contenant les commandes à executer pour mettre à jour les valeurs des dernières 24h.
Créez un fichier graphs2.cmd contenant les commandes à executer pour mettre à jour de la semaine, du mois, et de l'année. ( à l'aide de --start "-604800" pour une semaine, et --start "-2419200" pour un mois )


Dans le planificateur de taches, ajoutez une tache qui s'execute pendant 24h, et se repete toutes les 10minutes : elle executera update.cmd
Ajoutez une autre tache qui execute une fois par jour graphs2.cmd.

Je vous laisse la liberté, de modifier l'entete du script php, pour l'adapter à votre configuration. Il nécessite une table
CREATE TABLE `snmp_config` (
`id` int(1) NOT NULL default '0',
`file` char(16) NOT NULL default '0',
`node` char(255) NOT NULL default '',
`name` char(255) NOT NULL default '',
`split` int(1) NOT NULL default '1'
) TYPE=MyISAM;


Dans la colonne id, mettez la meme valeur aux nodes qui iront dans le meme fichier. File, contiendrait pour l'exemple rrdf_memory.rrd, node doit contenir la valeur de la node parente à celle voulu. Dans getif par exemple, si vous cliquez sur la node des disques dur, une liste va s'afficher en bas. Au lieu de prendre cliquer sur l'element de la liste que vous voulez sonder, pour avoir l'adresse de la node, gardez la node parente, et accolez ".x" avec x qui est le numero du resultat de la liste, en partant de 0.
Exemple:
si 1.2.3 affiche les resultats
1.2.3.456
1.2.3.654
1.2.3.789

alors indiqué dans la base mysql la node 1.2.3.1 pour sonder la valeur 1.2.3.654, 1.2.3.0 pour sonder la première valeur. Il faut faire cela, car le module snmp pour php, connait encore quelques bugs.

Enfin, la colonne name de la table mysql contiendra le nom de la colonne de la base de donnée du fichier et split permet de corriger le resultat.
Sous informant,lorsque qu'on lit une node avec les fonctions SNMP, il nous renvoi la valeur, mais précédé du type de valeur lue: "gauge:123456".
Or on s'interesse qu'a la valeur 123456, et non le type de valeur à lire, qui a été ajouté. Dans ce cas, on remplira la colonne split avec 1, qui indiquera qu'il faut prendre le resultat qui suit ":". Sinon, avec snmp4pc, ou met split à 0.



Pour le script, il est joint à ce post.
Si quelqu'un trouve un soft, qui permettent de recuperer des valeurs SNMP et de les stocker dans une base rdd,
qu'il poste à la suite.

Normalement, vous devez pouvoir voir un exemple de courbe sur <a href='http://snmp.nekralium.ath.cx' target='_blank'>http://cette page de graphiques</a>
Nekralium Admin: Au jour du jugement, la plume du savant pèsera autant que l'épée du guerrier.

Avatar de l’utilisateur
The BLION Corp.
Membre avancé
Membre avancé
Messages : 51
Inscription : mer. 02 juin 2004, 9:44
Localisation : Lyon, France
Contact :

Messagepar The BLION Corp. » sam. 20 mai 2006, 4:39

Et pour les fainéants : <a href='http://www.linux-sottises.net/software.php#mrtnk' target='_blank'>http://www.linux-sottises.net/software.php#mrtnk</a>
Même principe que MRTG, mais basé sur RRDTOOL.
Quelques bugs avec la dernière version de RRDTOOl, je vous laisse les chercher, ils sont pas compliqués à trouver :-)

Ca peut donner ça : <a href='http://www.hebergement-pro.org/mrtnk/' target='_blank'>Mes stats</a>

Avatar de l’utilisateur
remyd
Nouveau membre
Messages : 3
Inscription : mar. 25 avr. 2006, 18:18

Messagepar remyd » lun. 22 mai 2006, 15:27

Y'a aussi Cacti pour monitorer pas mal de trucs , perso je trouve l'installation beaucoup plus simple.... Et en plus on peut loader pas mal d'Add-ins depuis le forum

<a href='http://www.cacti.net' target='_blank'>Cacti.net</a>


Revenir vers « Articles »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités