Actions sur le document
Installation de Nagios sous Fedora (suite...)
Installation de Nagios sous Fedora (suite...)
Petit rappel avant :
/usr/share/nagios/html/
/usr/lib/nagios/plugins
/usr/lib/nagios/cgi-bin
/etc/nagios/*.cfg
Customisation graphique
Pour ce faire http://www.nagiosexchange.org/Image_Packs.75.0.html
Mise en place d'un favicon dans le répertoire /usr/share/nagios/html/
Rajout du theme nagios-nuvola. Pour un screeneshot http://www.nagiosexchange.org/typo3conf/ext/net_nagext/pi1/download.php?file=uploads/tx_netnagext_pi1/Nuvola_Style/ss-explorer.png&ext=.png
Configuration
J'ai découpé le fichier bigger.cfg en plusieurs fichiers, à savoir
contactgroups.cfg
contacts.cfg
dependencies.cfg
escalations.cfg
hostgroups.cfg
hosts.cfg
services.cfg
timeperiods.cfg
Pour un problème avec check_ntp
yum install perl-Params-Util
redéfinition des libs par
use lib "/usr/lib/nagios/plugins";
au lieu de
use lib "nagios/plugins";
Diff sur le check_ntp
diff -u /usr/lib/nagios/plugins/check_ntp.SAVE2
/usr/lib/nagios/plugins/check_ntp
--- /usr/lib/nagios/plugins/check_ntp.SAVE2 2006-04-04
17:31:04.000000000 +0200
+++ /usr/lib/nagios/plugins/check_ntp 2006-04-04 17:33:12.000000000 +0200
@@ -420,7 +420,7 @@
foreach my $key (keys %ERRORS) {
if ($state==$ERRORS{$key}) {
# print ("NTP $key: $answer");
- print ("NTP $key: $answer|offset=$offset, jitter=" .
$jitter/1000 . ",peer_stratum=$stratum\n");
+ print ("NTP $key: $answer|offset=$offset, jitter=" .
(defined($jitter) ? $jitter/1000 : "not available") .
",peer_stratum=$stratum\n");
last;
}
}
sudo yum install gd-progs
pngtogd2 fedora-logo.png fedora-logo.gd2 cs fmt
Installation de nagiosgraph
Nagios fait du temps réel, mais pour avoir un historique des valeurs mesurées, il faut utiliser un "add-on". On trouve sur NagiosExchange différents modules permettant cela. L'intérêt est bien sûr d'observer des tendances ou des variations dans le temps.
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.
wget http://heanet.dl.sourceforge.net/sourceforge/nagiosgraph/nagiosgraph-0.8.2.tar.gz
tar xvzf nagiosgraph-0.8.2.tar.gz
mv nagiosgraph-0.8.2 nagiosgraph
mv nagiosgraph /usr/lib/nagios/
Pour insert.pl et show.cgi modification du path nagiosgraph.conf.
Dans nagios.cfg ajout de
process_performance_data=1
service_perfdata_file=/var/log/nagios/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata
Dans misccommands.cfg mise en commentaire de tout sur perfdata
Ajout dans checkcommands.cfg
define command {
command_name process-service-perfdata
command_line /usr/lib/nagios/nagiosgraph/insert.pl
}
Ajout dans services.cfg de la ligne
process_perf_data
1
Ajout d'un icone graph
télécharger l'icone suivant http://xavier.dusart.free.fr/nagios/graph.gif dans le dossier /usr/share/nagios/html/images/logos/
Créationdu fichier 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
}
Ajout de la ligne dans httpd.conf
ScriptAlias /nagiosgraph/ /usr/lib/nagios/nagiosgraph/
# rpm -qa |grep perl
perl-5.8.5-12.1
perl-Net-Telnet-3.03-3
perl-URI-1.30-4
pehttp://dag.wieers.com/packages/rrdtool/rrdtool-1.2.13-1.el4.test.i386.rpmhttp://dag.wieers.com/packages/rrdtool/perl-rrdtool-1.2.13-1.el4.test.i386.rpm
rl-Filter-1.30-6
mkdir rrd
chown -R apache.nagios nagiosgraph
mv nagiosgraph.css /usr/share/nagios/html/stylesheets/
Patch nagiosgraph
pour générer automatiquement les serviceextinfo
* Plate-forme: Nagios 2.3, nagoisgraph 0.8.2
Un souci avec nagiosgraph
, c'est de définir un serviceextinfo pour chaque service.
Ce patch génère automatiquement les serviceextinfo, en même temps que la création de la base rrd.
J'ai trouvé ce patch sur le forum sourceforge de nagiosgraph. Le post original: http://sourceforge.net/forum/forum.php?thread_id=1391591&forum_id=394748
Traduction et adaptation par moi.
- Ajouter l'emplacement des fichiers de config dans "nagiosgraph
.conf". C'est un répertoire dans lequel seront créé un fichier de config par service.
| Code: |
| # Emplacement des fichiers de config serviceextinfo
extserviceinfocfg = /usr/local/nagios/etc/extended_service_info_dir |
- Créer le répertoire en question:
| Code: |
| mkdir /usr/local/nagios/etc/extended_service_info_dir
chown nagios:nagios /usr/local/nagios/etc/extended_service_info_dir chmod 755 /usr/local/nagios/etc/extended_service_info_dir |
- Modifier "nagios.cfg" pour qu'il utilise ces fichiers de config.
On commente le fichier "serviceextinfo" pour le remplacer par un template + les fichiers de config auto-générés.
| Code: |
| #cfg_file=/usr/local/nagios/etc/serviceextinfo.cfg
cfg_dir=/usr/local/nagios/etc/extended_service_info_dir/ cfg_file=/usr/local/nagios/etc/extended_service_info_templates.cfg |
Création du template "extended_service_info" avec le nom que vous venez de définir (/usr/local/nagios/etc/extended_service_info_templates.cfg).
| Code: |
| define serviceextinfo {
name nagiosgraph notes_url /nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&rrdopts=%2Dt%20$HOSTNAME$%2D$SERVICEDESC$%20%2Dl%0&geom=900x400 register 0 } |
On lui donne les bons droits:
| Code: |
| chown nagios:nagios /usr/local/nagios/etc/extended_service_info_templates.cfg
chmod 644 /usr/local/nagios/etc/extended_service_info_templates.cfg |
Explication rapide de "notes_url":
Le minimum est "/nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&rrdopts=%2Dt%20$HOSTNAME$%2D$SERVICEDESC$"
J'y ai rajouté quelques arguments à passer à rrd: "%20%2Dl%0&geom=900x400"
En lisible ça donne "-l 0&geom=900x400" (il faut les urlencoder pour le fichier de config)
-l 0 = définir le minimum en y à 0. Ca rend les graphes plus parlants que si l'axe y commence à la valeur mini.
geom=900x400 = c'est les dimensions des graphes. Je les trouvais trop petits d'origine
Maintenant, la modif de nagiosgraph
:
Il faut modifier le fichier insert.pl de nagiosgraph.
Cherchez la fonction "createrrd":
| Code: |
| sub createrrd {
my($host,$service,$start,$labels) = @_; my($f,$v,$t,$ds,$db); $db = shift @$labels; $f = urlencode("${host}_${service}_${db}") . '.rrd'; debug(5, "INSERT Checking $Config{rrddir}/$f"); ... |
Il faut la modifier comme ceci:
| Code: |
| sub createrrd {
my($host,$service,$start,$labels) = @_; my($f,$v,$t,$ds,$db,$si); $db = shift @$labels; $f = urlencode("${host}_${service}_${db}") . '.rrd'; ## auto service_ext_info $si = urlencode("${host}_${service}_${db}") . '.cfg'; debug(5, "verifying file $Config{extserviceinfocfg}/$si"); unless ( -e "$Config{extserviceinfocfg}/$si" ) { debug(4, "Creating extended info file: $Config{extserviceinfocfg}/$si"); open (OUT,">$Config{extserviceinfocfg}/$si") || die "Could not create $si !"; print OUT "# written by nagiosgraph\n"; print OUT "define serviceextinfo {\n"; print OUT "\tuse\t\t\t\tnagiosgraph\n"; print OUT "\thost_name\t\t".${host}."\n"; print OUT "\tservice_description\t".${service}."\n"; print OUT "}\n\n"; } debug(5, "INSERT Checking $Config{rrddir}/$f"); |
C'est à dire:
* rajouter $si à la 3e ligne ( my($f,$v,$t,$ds,$db); )
* rajouter ce bloc code pour la création du fichier 3 lignes plus loin:
| Code: |
| ## auto service_ext_info
$si = urlencode("${host}_${service}_${db}") . '.cfg'; debug(5, "verifying file $Config{extserviceinfocfg}/$si"); unless ( -e "$Config{extserviceinfocfg}/$si" ) { debug(4, "Creating extended info file: $Config{extserviceinfocfg}/$si"); open (OUT,">$Config{extserviceinfocfg}/$si") || die "Could not create $si !"; print OUT "# written by nagiosgraph\n"; print OUT "define serviceextinfo {\n"; print OUT "\tuse\t\t\t\tnagiosgraph\n"; print OUT "\thost_name\t\t".${host}."\n"; print OUT "\tservice_description\t".${service}."\n"; print OUT "}\n\n"; } |
Après avoir fait toutes ces modifs:
* Il faut déjà vérifier que la config nagios est bonne, avec l'option -v de nagios.
* On peut vérifier que le script insert.pl n'a pas d'erreurs à l'exécution, en l'exécutant en ligne de commande.
Attendez un moment que nagiosgraph
génère ces fichiers. Vous devriez voir apparaître de nouveaux fichiers dans le répertoire extended_service_info_dir/.
Réexécutez nagios avec l'option -v pour vérifier qu'il n'y a pas d'erreurs dans ces nouveaux fichiers de config.
Si tout va bien, redémarrez nagios pour les prendre en compte.
Il se peut que certains services soient définis en double, si ils répondent à plusieurs règles du fichier map. Dans ce cas, deux solutions:
- supprimer les doublons dans le fichier map ET dans le répertoire ext_info
- éditer les fichiers ext_info qui posent problème pour tout commenter dedans (violent mais efficace).
