informatique:logiciels:nagios
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
informatique:logiciels:nagios [2013/10/14 20:45] – modification externe 127.0.0.1 | informatique:logiciels:nagios [2015/09/02 08:43] – [Créer ses templates PNP] pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag> | ||
- | |||
====== Nagios ====== | ====== Nagios ====== | ||
Line 999: | Line 997: | ||
<code bash> | <code bash> | ||
aptitude install pnp4nagios | aptitude install pnp4nagios | ||
- | </ | ||
- | * Choisir le mode de fonctionnement de pnp4nagios (cf http://docs.pnp4nagios.org/fr/pnp-0.6/modes). Dans mon cas ça sera le **mode synchronisé** car c'est ce qui est conseillé pour les petites installations. | + | # avec, au passage |
+ | 0 paquets mis à jour, 100 nouvellement installés, 0 à enlever et 0 non mis à jour. | ||
+ | Il est nécessaire de télécharger 32,2 Mo d' | ||
+ | Les paquets suivants ont des dépendances non satisfaites : | ||
+ | | ||
+ | Est en conflit avec: libgd2-noxpm mais 2.0.36~rc1~dfsg-6.1 est installé. | ||
+ | | ||
+ | Est en conflit avec: libgd2-xpm mais 2.0.36~rc1~dfsg-6.1 doit être installé. | ||
+ | Les actions suivantes permettront de résoudre ces dépendances : | ||
- | * Télécharger et lancer (en root) le script de check pour vérifier votre installation | + | |
- | <code bash> | + | 1) libgd2-noxpm |
- | wget http:// | + | |
- | perl verify_pnp_config --mode=sync --config=/ | + | Accepter cette solution ? [Y/n/q/?] y |
</ | </ | ||
+ | |||
+ | * Choisir le mode de fonctionnement de pnp4nagios (cf http:// | ||
* Configurer Nagios pour qu'il fasse appel à PNP4Nagios : | * Configurer Nagios pour qu'il fasse appel à PNP4Nagios : | ||
<code bash> | <code bash> | ||
vi / | vi / | ||
+ | |||
+ | # activer le traitement des perfdata | ||
+ | process_performance_data=1 | ||
# décommenter les lignes suivantes | # décommenter les lignes suivantes | ||
host_perfdata_command=process-host-perfdata | host_perfdata_command=process-host-perfdata | ||
service_perfdata_command=process-service-perfdata | service_perfdata_command=process-service-perfdata | ||
- | # activer le traitement des perfdata | ||
- | process_performance_data=1 | ||
</ | </ | ||
- | Préciser les commandes de perfdata (adaptez les chemins à vos environnements !) : | + | Préciser les commandes de perfdata (adaptez les chemins à vos environnements !) : pour notre installation il faut remplacer les '' |
<code bash> | <code bash> | ||
vi / | vi / | ||
Line 1077: | Line 1085: | ||
</ | </ | ||
+ | * Si on obtient des erreurs de fonctionnement ou si les graphiques ne sont pas générés, il existe un script de diagnostique qu'on peut télécharger et lancer (en root et avec les bons chemins d' | ||
+ | <code bash> | ||
+ | wget http:// | ||
+ | perl verify_pnp_config --mode=sync --config=/ | ||
+ | </ | ||
+ | ====Certains plugins ne marchent pas !==== | ||
+ | Effectivement certains plugins ne fonctionnent pas avec PNP4Nagios car ils ne génèrent pas de perfdata. Pour rappel, les perfdatas sont affichés par le plugin juste après le status, séparé par un '' | ||
+ | <code bash> | ||
+ | check_ping -H 127.0.0.1 -w30,50% -c 50,60% | ||
+ | PING OK - Paquets perdus = 0%, RTA = 0.07 ms|rta=0.074000ms; | ||
+ | </ | ||
+ | * Status = '' | ||
+ | * Perfdata = '' | ||
- | =====Problèmes | + | C'est notamment le cas du service "Total processes", |
+ | <code bash> | ||
+ | / | ||
+ | PROCS OK: 3 processus avec args ' | ||
+ | </ | ||
+ | |||
+ | C'est dommage parce qu'il fait le taff mais sa sortie est juste mal formattée, il ne lui manque que : '' | ||
+ | |||
+ | Pour corriger cela, on va utiliser le [[http:// | ||
+ | <code bash> | ||
+ | # | ||
+ | # ersatz de cmde pour checker le nb de processes et afficher les perfdata | ||
+ | |||
+ | LINE=`/ | ||
+ | RC=$? | ||
+ | COUNT=`echo $LINE | awk ' | ||
+ | PROCS=`expr $COUNT - 1` | ||
+ | LINE=`echo $LINE | sed "s/: $COUNT /: $PROCS /"` | ||
+ | echo $LINE \| procs=$PROCS | ||
+ | exit $RC | ||
+ | </ | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | on notera que j'ai adapté le chemin du script check_procs puisque sous Debian ils sont dans ''/ | ||
+ | </ | ||
+ | |||
+ | On dépose donc ces lignes dans un nouveau fichier, par exemple ''/ | ||
+ | <code bash> | ||
+ | chmod 755 / | ||
+ | </ | ||
+ | |||
+ | Puis, on définit une nouvelle commande dans '' | ||
+ | <code bash> | ||
+ | # contournement de check_procs pour avoir des perfdatas | ||
+ | # cf http:// | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Enfin, on remplace le service dans '' | ||
+ | <code bash> | ||
+ | define service{ | ||
+ | use | ||
+ | host_name | ||
+ | service_description | ||
+ | # | ||
+ | check_command | ||
+ | </ | ||
+ | |||
+ | (Et on relance Nagios après avoir vérifier les éventuelles erreurs avec '' | ||
+ | |||
+ | ====Créer ses templates PNP==== | ||
+ | |||
+ | Un template (au sens PNP4nagios du terme) est un modèle de graphique adapté aux valeurs des données de performance. Il est intéressant d' | ||
+ | |||
+ | On peut choisir les couleurs, le type de graphique (courbe, aire, ligne), sa hauteur, la plage de données utilisée (1h, 12h, 1 semaine), etc... ça peut devenir des trucs très sympa : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Pour chaque service disposant de perfdata et sur lequel PNP4nagios est activé, le plugin va rechercher son template éponyme avec l' | ||
+ | <code bash> | ||
+ | # avec le paquet pnp4nagios sous debian 7 : | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | # avec une installation à partir des sources, ils seront plutôt ici : | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Par exemple pour un service " | ||
+ | |||
+ | ===Exemple 1 : trafic in/out=== | ||
+ | |||
+ | Voici un exemple de " | ||
+ | * création des objets dans Nagios : | ||
+ | <code bash> | ||
+ | vi / | ||
+ | |||
+ | # déclaration du NAS, on utilise bien le template nagios " | ||
+ | define host{ | ||
+ | use | ||
+ | host_name | ||
+ | address | ||
+ | hostgroups | ||
+ | } | ||
+ | |||
+ | # dans le service on ne précise que le nom de communauté, | ||
+ | # le service est appliqué au host grâce au groupe " | ||
+ | define service{ | ||
+ | use | ||
+ | hostgroup_name | ||
+ | service_description traffic eth0 | ||
+ | check_command | ||
+ | } | ||
+ | |||
+ | # trafic reseau | ||
+ | # le plugin avec l' | ||
+ | # -> penser à faire : #chmod 755 /usr/var && mkdir / | ||
+ | # -o est suivi par les 2 OIDs correspondant au trafic in et out de l' | ||
+ | # -l permet d' | ||
+ | # -u permet de préciser l' | ||
+ | # -P précise la version de SNMP | ||
+ | # -C spécifie la communauté SNMP | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * On créer ensuite le template, qui permet d' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | <?php | ||
+ | # | ||
+ | # Copyright (c) 2006-2010 Joerg Linge (http:// | ||
+ | # Plugin: check_iftraffic.pl (COUNTER) | ||
+ | # adaptation pour traffic syno | ||
+ | |||
+ | $opt[1] | ||
+ | # | ||
+ | $def[1] | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | $def[1] .= " | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===Exemple 2 : courbe CPU=== | ||
+ | |||
+ | Autre exemple pour grapher l' | ||
+ | |||
+ | Conf nagios, en vrac : | ||
+ | <code bash> | ||
+ | # paramètres de check_snmp : | ||
+ | # -P2c pour préciser le version de SNMP (2c) | ||
+ | # -t5 pour préciser le timeout (en secondes) de la commande | ||
+ | # -l < | ||
+ | # et les classiques mandataires : -C < | ||
+ | define command{ | ||
+ | command_name | ||
+ | command_line | ||
+ | } | ||
+ | |||
+ | # le service est rattaché au groupe fortigate_v4 | ||
+ | define service { | ||
+ | name check-snmp-forti-cpu-v4 | ||
+ | hostgroup_name | ||
+ | use | ||
+ | service_description | ||
+ | check_command | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | On réutilise le template par défaut : | ||
+ | <code bash> | ||
+ | <?php | ||
+ | # template CPU derive du default template : | ||
+ | # Copyright (c) 2006-2010 Joerg Linge (http:// | ||
+ | # | ||
+ | # Define some colors .. | ||
+ | # | ||
+ | $_WARNRULE = '# | ||
+ | $_CRITRULE = '# | ||
+ | $_AREA | ||
+ | |||
+ | # couleurs de la courbe | ||
+ | $_LINE | ||
+ | $GRAD_INF | ||
+ | $GRAD_SUP | ||
+ | |||
+ | # | ||
+ | # Initial Logic ... | ||
+ | # | ||
+ | |||
+ | foreach ($this-> | ||
+ | |||
+ | $maximum | ||
+ | $minimum | ||
+ | $critical = ""; | ||
+ | $crit_min = ""; | ||
+ | $crit_max = ""; | ||
+ | $warning | ||
+ | $warn_max = ""; | ||
+ | $warn_min = ""; | ||
+ | $vlabel | ||
+ | $lower | ||
+ | $upper | ||
+ | |||
+ | if ($VAL[' | ||
+ | $warning = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $warn_max = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $warn_min = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $critical = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $crit_max = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $crit_min = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $lower = " --lower=" | ||
+ | $minimum = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $maximum = $VAL[' | ||
+ | } | ||
+ | if ($VAL[' | ||
+ | $vlabel = " | ||
+ | $upper = " --upper=101 "; | ||
+ | $lower = " --lower=0 "; | ||
+ | } | ||
+ | else { | ||
+ | $vlabel = $VAL[' | ||
+ | } | ||
+ | |||
+ | $opt[$KEY] = ' | ||
+ | $ds_name[$KEY] = $VAL[' | ||
+ | $def[$KEY] | ||
+ | $def[$KEY] .= rrd:: | ||
+ | $def[$KEY] .= rrd:: | ||
+ | $def[$KEY] .= rrd:: | ||
+ | if ($warning != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($warn_min != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($warn_max != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($critical != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($crit_min != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | if ($crit_max != "" | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | $def[$KEY] .= rrd:: | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Résultat : | ||
+ | {{ : | ||
+ | |||
+ | =====Activer les commandes externes===== | ||
+ | |||
+ | Pour utiliser certaines fonctionnalités, | ||
+ | |||
+ | Pour cela : | ||
+ | <code bash> | ||
+ | # arrêter Apache et Nagios : | ||
+ | service apache2 stop | ||
+ | service nagios3 stop | ||
+ | |||
+ | # activer les commandes externes dans la configuration de Nagios : | ||
+ | vi nagios.cfg | ||
+ | |||
+ | check_external_commands=1 | ||
+ | command_check_interval=15s | ||
+ | |||
+ | # ajouter l' | ||
+ | vi / | ||
+ | |||
+ | nagios: | ||
+ | |||
+ | # le paquet Debian a des problemes de droits sur certains répertoire, | ||
+ | # - ajouter l' | ||
+ | dpkg-statoverride --update --add nagios nagios 751 / | ||
+ | # - ajouter le sticky bit au répertoire parent du pipe des commandes externes | ||
+ | dpkg-statoverride --update --add nagios www-data 2710 / | ||
+ | |||
+ | # relancer Apache et Nagios : | ||
+ | service apache2 start | ||
+ | service nagios3 start | ||
+ | </ | ||
====Installation du paquet Ubuntu par défaut==== | ====Installation du paquet Ubuntu par défaut==== | ||
Line 1173: | Line 1491: | ||
| | ||
</ | </ | ||
+ | |||
+ | =====De Wheezy vers Jessie===== | ||
+ | |||
+ | Depuis quelques jours (fin avril 2015) Debian 8 stable est release. Je me suis donc mis à la page et j'ai eu la stupeur de voir que mon nagios3 avait été à moitié dézingué, et que le pnp4nagios avait même disparu des paquets (à priori il n' | ||
+ | |||
+ | Voici le mode pompier pour restaurer nos courbes : | ||
+ | <code bash> | ||
+ | // prérequis | ||
+ | aptitude install rrdtool librrds-perl php5-gd | ||
+ | |||
+ | wget https:// | ||
+ | # dans mon cas c'est la version pnp4nagios-0.6.25.tar.gz | ||
+ | tar -zxvf pnp4nagios-0.6.25.tar.gz | ||
+ | cd pnp4nagios-0.6.25 | ||
+ | ./configure | ||
+ | [..] | ||
+ | *** Configuration summary for pnp4nagios-0.6.25 03-01-2015 *** | ||
+ | |||
+ | General Options: | ||
+ | ------------------------- | ||
+ | Nagios user/ | ||
+ | Install directory: | ||
+ | HTML Dir: / | ||
+ | Config Dir: / | ||
+ | Location of rrdtool binary: | ||
+ | RRDs Perl Modules: | ||
+ | RRD Files stored in: / | ||
+ | process_perfdata.pl Logfile: | ||
+ | Perfdata files (NPCD) stored in: / | ||
+ | |||
+ | Web Interface Options: | ||
+ | ------------------------- | ||
+ | HTML URL: | ||
+ | Apache Config File: / | ||
+ | |||
+ | |||
+ | Review the options above for accuracy. | ||
+ | type 'make all' to compile. | ||
+ | |||
+ | make all | ||
+ | cd ./src && make | ||
+ | make[1]: Entering directory '/ | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE | ||
+ | gcc -g -O2 -DHAVE_CONFIG_H -DNSCORE -o npcd npcd.c utils.o config.o logging.o -lpthread | ||
+ | gcc -fPIC -g -O2 -DHAVE_CONFIG_H -DNSCORE -o npcdmod.o npcdmod.c -shared | ||
+ | make[1]: Leaving directory '/ | ||
+ | cd ./share && make | ||
+ | make[1]: Entering directory '/ | ||
+ | make[1]: Nothing to be done for ' | ||
+ | make[1]: Leaving directory '/ | ||
+ | cd ./scripts && make | ||
+ | make[1]: Entering directory '/ | ||
+ | make[1]: Nothing to be done for ' | ||
+ | make[1]: Leaving directory '/ | ||
+ | chmod a+r ./ | ||
+ | |||
+ | *** Compile finished *** | ||
+ | |||
+ | make install | ||
+ | - This installs the main program and HTML files | ||
+ | |||
+ | make fullinstall | ||
+ | - This installs the main program, runlevel scripts, config and HTML files | ||
+ | |||
+ | Enjoy. | ||
+ | |||
+ | # on va faire simple : | ||
+ | make fullinstall | ||
+ | [..] | ||
+ | </ | ||
+ | |||
+ | Seulement voilà il faut le réintégrer au bousin, donc corriger quelques trucs : | ||
+ | * le fichier de conf d' | ||
+ | <code bash> | ||
+ | mv / | ||
+ | ln -s / | ||
+ | </ | ||
+ | NB : on aurait pu utiliser les commandes toutes faites d' | ||
+ | |||
+ | * dans ce même fichier, le chemin du fichier de mots de passe (htpasswd) n'est pas correct, il faut le corriger : | ||
+ | <code bash> | ||
+ | vi / | ||
+ | # | ||
+ | AuthUserFile / | ||
+ | </ | ||
+ | |||
+ | * dans le cadre de l' | ||
+ | <code bash> | ||
+ | vi / | ||
+ | define command{ | ||
+ | command_name | ||
+ | # | ||
+ | command_line | ||
+ | } | ||
+ | |||
+ | define command{ | ||
+ | command_name | ||
+ | # | ||
+ | command_line | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * du au changement de path, le chemin des templates à été modifié et pnp ne retrouve plus ces petits ; il faut donc déplacer les templates persos de l' | ||
+ | <code bash> | ||
+ | mv / | ||
+ | </ | ||
+ | |||
+ | * pour une raison qui m'est inconnue, le plugin **check_snmp** (quand utilisé avec l' | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | chown nagios / | ||
+ | </ | ||
+ | |||
+ | * quand on passe la souris sur les icônes, les courbes ne s' | ||
+ | <code bash> | ||
+ | updatedb | ||
+ | locate status-header.ssi | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | // on copie donc status-header.ssi à la place du symlink " | ||
+ | rm / | ||
+ | cp / | ||
+ | chmod o+r / | ||
+ | </ | ||
+ | |||
+ | * TODO : la prochaine fois, ne pas oublier de restaurer les bases RRD pour ne pas perdre tout l' | ||
+ | |||
===== Liens ===== | ===== Liens ===== | ||
* http:// | * http:// |
informatique/logiciels/nagios.txt · Last modified: 2021/01/15 15:47 by pteu