NGraph est un un programme à l'origine conçu pour Nagios (un système de monitoring très avancé et très modulaire, permettant d'utiliser des scripts pour interroger divers services sur divers hôtes d'un réseau), qui a très rapidement évolué pour permettre l'interrogation de diverses sources si nécessaire.
Il est articulé de RRDTool pour la partie dessin de graphes, écrite en Ruby, pour sa flexibilité et son dynamisme, à mon sens particulièrements adaptés à ce type de tâche. Mon programme me semble répondre à une série de problèmes que les autres projets du même genre n'adressaient pas tous :
Ce dernier point était particulièrement important. En pratique, il m'est possible de mettre sur un même graphe les valeurs rapportées par deux sondes de température, qui sont chacune associée à un service Nagios distinct, pour avoir deux déclencheurs d'alarmes (et des zones séparées dans les affichages de Nagios). A l'inverse, j'utilise un meta-plugin pour collecter par SNMP des informations qui ne sont pas directement liées (bande passante utilisée, taille des tables de routage et ARP, nombre de connexions TCP, UDP, etc, etc), ce qui évite d'écrire des dizaines de services alors que je collecte ces données uniquement pour en faire des graphes. Ces données collectées par deux services génèrent plusieurs pages, contenant chacune plusieurs graphes.
Pour pouvoir utiliser ce soft, il est nécessaire d'installer :
Il n'a été testé que sous FreeBSD, mais devrait pouvoir fonctionner sans aucun problème sous tout OS de la famille des Unix. Je suppose qu'il doit être possible d'utiliser Windows, mais sans aucune garantie.
NGraph a besoin d'un répertoire où stocker ses bases de données RRD, par défaut /var/spool/nagios/rrd. L'utilisateur sous lequel il tourne (nagios, souvent) doit y avoir l'accès en écriture.
Au niveau des tests, le fichier nagios.cfg doit inclure ceci (la ligne de template a été brisée en trois pour l'affichage ; elle doit être mise en un seul morceau) :
Il faut également préciser le fichier à utiliser (service_perfdata_file), l'intervalle de traitement (service_perfdata_file_processing_interval), et la commande (service_perfdata_file_processing_command).
Celle-ci est généralement définie dans un des autres fichiers de configuration, et aurait la forme de :
Avec, bien entendu, les chemins appropriés et le nom de commande approprié.
Le plugin collecteur nagiosserv.rb doit être installé dans le répertoire ad-hoc.
Ensuite, il reste à éditer le fichier ngraph.conf et adapter les valeurs qui y sont présentes. Ce fichier est commenté en anglais pour expliquer les différentes options.
A noter que le fichier, sous le format clé = valeur est lu en tout début d'opération, et donne lieu à une table de hachage publique $conf qui associe la version symbolique de la clé à sa valeur, qu'elles soient connues ou non des scripts de base. Cela permet aux plugins de rajouter leur propre configuration dans ce fichier de manière transparente.
NGraph se divise en deux parties : le tester et le grapher, faisant chacun appel à des plugins, pour récolter les données (collecteurs), les analyser (testeurs) et finalement les grapher (grapheurs). Par défaut, les plugins sont simplement placés dans des répertoires différents, avec l'extension .rb.
Les plugins fonctionnent sur un principe commun : ils doivent hériter chacun d'une interface (Collecter, Tester, et Grapher), et implémenter chacun quelques méthodes obligatoires, et éventuellement quelques autres optionnelles. La manière dont le code est agencé (une classe par fichier ou plusieurs, inclusions d'autres classes, etc) et ce qu'il fait d'autre précisément est parfaitement libre.