L'add-on plus pratique, à mon sens, est Nagiosgraph. Il stocke ses données dans une base RRD, et peut donc en tirer des graphes. Il gère aussi bien les données de performances (perfdata) renvoyées par les plug-ins de Nagios, que le texte (output). Sa configuration est relativement aisée.
C'est ce dernier point qui le différencie de NagiosGrapher. Celui-ci fait de plus jolis graphes, il sait même configurer automatiquement Nagios quand tu ajoutes des services. Mais il m'a l'air un poil plus lourd : service à faire tourner en permanence (en Perl), paquetages Perl exotiques, configuration plus poussée, changement à la volée de la configuration de Nagios (toujours risqué, ça, hmmm). Mais si, contrairement à moi, tu n'es pas laminé du bulbe, tu obtiendra de plus grandes satisfaction avec NagiosGrapher qu'avec le simpliste Nagiosgraph.
Prérequis
- Apache
- CGI
- Perl
- Nagios
- RRDTool
Installation
Télécharge donc la dernière version de Nagiosgraph sur Sourceforge. En ce qui me concerne, j'ai la version 0.7. Je la fais tourner avec un Nagios 2.1.
Il suffit de détarzipper l'archive dans le répertoire de Nagios (/usr/local/nagios/ en général) sous le nom nagiosgraph par exemple.
Configuration
Le fichier INSTALL est assez clair, il suffit de suivre les instructions.
Attention à l'activation du traitement des données de performance : il faut non seulement l'activer globalement dans nagios.cfg (process_performance_data = 1), mais aussi pour chaque service concerné (process_perf_data 1). Pour ce qui me concerne, je l'ai activé globalement dans ma définition de service générique, un template dont héritent tous mes autres services (voir ci-dessous).
Attention aussi au paramétre "heartbeat" de nagiosgraph.conf : il détermine pour RRDTool l'écart maximal entre deux collectes de données.Comme mon intervalle de vérification par défaut est de 15 minutes, et pas de 5 minutes comme le suppose l'auteur de Nagiosgraph, mon "heartbeat" n'est pas de 600 (2 x 5 minutes exprimées en secondes), mais de 1800 (2 x 15 minutes). En fait, je l'ai même rallongé un peu (3000) pour ne pas perdre de données entre deux redémarrages de Nagios. Parce que, comme tu l'as remarqué, Nagios attend un bon 1/4 d'heure avant d'ordonnancer son premier contrôle (comment ça se fait d'ailleurs ?).
nagiosgraph.conf
Mon fichier de configuration à moi, ça donne ça :
# File: $Id:nagiosgraph.conf,v 1.6 2005/10/08 05:55:08 sauber Exp $
# Author: (c) Soren Dossing, 2005
# License: OSI Artistic License
# http://www.opensource.org/licenses/artistic-license.php
# Debug levels
# 0 = None
# 1 = Critical
# 2 = Error
# 3 = Warn
# 4 = Info
# 5 = Debug
debug = 2
# Location of debug log file
logfile = /usr/local/nagios/nagiosgraph/log/nagiosgraph.log
# Directory to store rrd database files
rrddir = /usr/local/nagios/nagiosgraph/rrd
# File containing regular expressions to identify service and perf data
mapfile = /usr/local/nagios/nagiosgraph/map
# Color scheme for graphs. Choose a number between 1 and 8.
colorscheme = 1
# Heartbeat. In seconds, twice the size of servicecheck intervals
heartbeat = 3000
# Location of performance data log file. Comment out it not used.
perflog = /usr/local/nagios/var/perfdata.log
Fichier "map"
Le fichier map décrit pour Nagiosgraph quelles données collecter et comment les stocker.
Voici un extrait de mon fichier de configuration, qui illustre l'utilisation des perfdatas et de l'output, avec NSClient (si ce lien est mort, comme je le suppute, vas voir sur NagiosExchange) ou des checks Linux.
Définition du Service Nagios | Défintion correspondante dans le fichier "map" |
---|---|
# Generic service definition template | |
define service{ | # Service type: nsclient CPU |
define service{ | # Service type: nsclient Memory |
define service{ | # Service type: linux remote load |
Cette configuration va générer automatiquement des RRDs pour tous les hôtes utilisant ces services. Pour mettre au point le fichier map, tu peux :
- faire un "tail -f /usr/local/nagios/var/perfdata.log", pour voir passer en direct les perfdata, et en déduire l'expression régulière Perl appropriée
- mettre le niveau de debug à 5 dans nagiosgraph.conf, pour voir si la collecte se passe comme prévu
Maintenant que ton fichier map ressemble à quelque chose, reste à ajouter dans Nagios un lien vers les URLs permettant d'afficher les graphes.
Liens dans Nagios
Il est question dans le fichier INSTALL de nagiosgraph d'une icône pour signaler les graphes dans Nagios. Elle n'est pas fournie dans la distribution, mais tiens, prends celle-ci si tu veux : , à coller dans le répertoire share/images/logos de Nagios.
Pour me simplifier la configuration, j'ai créé un hostgroup avec tous les serveurs utilisant par exemple le service Server-Cpu.
define hostgroup{
hostgroup_name x-nsclient
alias Pour affichage icone graphe
members SERVEUR1,SERVEUR2,SERVEUR3
}
L'insertion de mon icône "graphe" se fait via le fichier de configuration de Nagios serviceextinfo.cfg :
define serviceextinfo {
service_description Charge CPU
hostgroup x-nsclient
notes Graph
notes_url /nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&db=ntload,avg05min&rrdopts=%2Dl%200%20%2Du%20100
icon_image graph.gif
icon_image_alt View graphs
}
Vas-y, redémarre Nagios, tu vas voir : ça marche.
Voir aussi
Pour l'utilisation de NagiosGraph en environnement Windows, ce site (en anglais) propose également quelques explications.