Outils personnels
Vous êtes ici : Accueil Blog Installation de Nagios sous Fedora (suite...)
Navigation
 
Actions sur le document

Installation de Nagios sous Fedora (suite...)

Filed Under:

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

ll nous manque encore les logos de base pour l'enrichissement cosmétique de la CGI.
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;
        }
 }
Réalisation de nouvelles images pour nagios au format compressé gd2
 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.rpm

 

http://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 Wink

 

 

 

 

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).