Vous êtes sur la page 1sur 72

Installer Nagios 4

Laurent Archambault
<archi.laurent@gmail.com>
Copyright 2009 Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or any later version
published by the Free Software Foundation; with no Invariant Sections, no Front-Cover
Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License". Plus de renseignements ici : FDL
Historique des versions
Version 1.0 30 sept 2013
Publication.
Version 1.2 20 oct 2013
Ajout des addons pour Netasq
Version 1.2 30 nov 2013
Ajout de PNP4nagios

Table of Contents
Contexte
1. Installer les dpendances.
La version 4.0.0 !
Les dpendances via une distribution Gnu/Linux-Debian/Ubuntu.
Tlchargement des composants Nagios.
Nagios-core
Les plugins
2. La compilation
Compilation de Nagios-Core
3. Nagios-plugins
Autres plugins
4. Configuration des fichiers nagios.cfg et cgi.cfg
nagios.cfg
cgi.cfg
5. Les autres fichiers de configuration
Les diffrents tats
Les tats pour les htes :
Les tats pour les services :
Dfinitions des htes (hosts.cfg) :
Dfinitions de services (services.cfg) :
Dfinitions de services groups (services-group.cfg) :
Dfinitions de contacts (contacts.cfg) :
Dfinition d'un contact de groupe (contactgroups.cfg) :
Dfinition d'un groupe dhtes (hostsgroup.cfg) :
Dfinition des priodes horaires (timeperiods.cfg):
Dfinition de commandes (commands.cfg) :
Dfinition de dpendance de service (dependancies.cfg) :
Dfinition d'escalade de service (escalations.cfg) :
Dfinition d'un groupe de services (servicegroups.cfg) :
Dfinition d'informations sur les htes (hostextinfo.cfg) :
Dfinition des templates (templates.cfg)
6. Compiler et installer NRPE
Son utilisation
Compilation
La configuration
Le fichier /etc/default/nagios-nrpe-server
Le fichier /etc/nagios/nrpe.cfg
Lancer NRPE
NRPE cot Nagios
7. NsClient
Tlchargement et installation
8. Le format graphique GD2
9. Nagios et Vmware (ESXi)
Les dpendances :
10. NagiosGraph
Rcupration des sources
Installation
Configurer un service.
Vrification du bon fonctionnement.
Ajouter le menu Nagiosgraph dans l'interface
Le fichier map
Pourquoi est-ce compliqu ?
11. Supervision Netasq
check_vpn_netasq.pl
Son paramtrage
check_eth_netasq.pl
12. La notification avec Gmail
Via un plugin :
13. PNP4Nagios
Installation
Les dpendances
Les problmes rencontrs.
Les templates
14. Conclusion.
A. Les liens utiles.
Glossary
Contexte
Ce document explique comment installer, configurer et exploiter Nagios 4.0, tout en
constituant une solution technique et financire viable. De nos jours, le moindre rseau
comprend une multitude dlments actifs, de machines et de services. Il est donc important
de pouvoir connatre la disponibilit d'un service, d'une machine ou d'un rseau pour en
informer rapidement les administrateurs. Nagios se distingue des autres logiciels de
supervision souvent propritaires et utilisant en masse SNMP, par son dveloppement
constant depuis 1999, par son cot Open source, par la prsence de greffons installables sur
les serveurs. La surveillance d'un ensemble de machines pourra s'effectuer par plusieurs
niveaux, suivant les besoins :
Simple : PING sur une machine et un service avec notification et supervision par pages WEB.
labor : Test du service et de la machine avec notification supplmentaire par courriel,
PAGER, SMS...
Sophistiqu : Dans ce cas Nagios sera capable de relancer un service avec notification
MAIL/PAGER/SMS...
Parmi les fonctionnalits basiques de Nagios voil les possibilits :
Surveillance des services rseaux (SMTP, POP3, IMAP, HTTP(s), NNTP, PING, SSH, NTP,
ORACLE, ...Etc..)
Surveillance des ressources des machines (htes) (charge processeur, utilisation des disques,
etc.)
Systme simple de plugins (ou greffons) permettant aux utilisateurs de dvelopper facilement
leurs propres vrifications de services personnaliss.
Paralllisation de la vrification des services et ou des machines.
Possibilit de dfinir la hirarchie du rseau en utilisant des htes parents , ce qui permet la
dtection et la distinction entre les htes qui sont l'arrt et ceux qui sont injoignables.
Notifications des contacts quand un hte ou un service a un problme, et est rsolu (via ml,
pager, ou par mthode dfinie par l'utilisateur)
Possibilit d'alertes sonores.
Possibilit de dfinir des gestionnaires dvnements qui s'excutent pour des vnements sur
des htes ou des services, pour une rsolution des problmes directement sur la machine.
Rotation automatique des fichiers log.
Support pour l'implmentation de la surveillance des machines (htes) de manire redondante,
et ou rpartie.
Interface web pour voir l'tat actuel du rseau, notification et historique des problmes,
fichiers log, etc avec authentification des utilisateurs.
Utilisation d'une base de donnes possible.
Nombreux plugins(greffons) disponibles.
volution permanente et encore bien d'autres possibilits.
Cet article va aborder l'installation, la configuration et l'exploitation de Nagios 3.99.96
,autant parler de Nagios 4.0. Je ne peux classer cette version dans le domaine "stable", la
version 4.0 en version finale arrive; d'o le choix de cette version. L'installation, la
configuration et l'exploitation des greffons NRPE sera aborde, et au final comment
superviser des quipements de type Netasq (U70) et divers quipements
Vmware/ESXi/Vcenter 5.0.
Pour avoir travaill finement avec Nagios en version 2.0 (2004/2005) cette version apporte
mes yeux de grands changements, sans pour cela changer la philosophie Nagios. Et puis
Nagios est pour moi par forcment l'outil le meilleur configurer, mais il apporte par la suite
beaucoup comme des graphiques sur l'tat d'un service, d'un serveur. Ce systme est
suffisamment ouvert pour permettre pleins de choses, y compris se lancer soi-mme si besoin.
Et comme souvent le travail est rcompens !
Chapter 1. Installer les dpendances.
Table of Contents
La version 4.0.0 !
Les dpendances via une distribution Gnu/Linux-Debian/Ubuntu.
Tlchargement des composants Nagios.
Nagios-core
Les plugins
La version 4.0.0 !
Courant juillet 2013, j'ai commenc rdiger ce document et le 20 septembre 2013 le version
finale de Nagios est sortie. Ce chapitre t ajout pour la sortie de cette version la vieille
de publier ce document. Cette version apporte une page pour les diverses modifications entre
la version 3 et 4. Les modifications portent surtout le moteur en lui-mme, beaucoup
d'optimisations et peut de modifications vis--vis des fichiers de configuration.
Aprs lecture des nouveauts, je suis heureux de constater que ce document ne doit pas tre
modifi, les dfinitions obsoltes font dj l'objet de remarques.
Voici le lien de cette annonce : nagios-core-4-now-available.
Voici le lien sur les diverses modifications : whatsnew.html
Les dpendances via une distribution Gnu/Linux-
Debian/Ubuntu.
Les composants qui suivent s'installent trs simplement; ils sont indispensables. Ils sont tous
disponibles sans modification. Cette liste n'est pas exhaustive car je me suis bas sur une
distribution active depuis longtemps, certains composants taient dj installs. Nanmoins
voici une liste pour information :
apt-get install apache2 make php5-gd postfix fping snmp ntp smbclient nmap
saidar traceroute \
php5-snmp curl gettext libperl-dev libgd2-xpm-dev libltdl3-dev build-
essential rrdtool librrdbs-perl \
wget build-essential libgd2-xpm libapache2-mod-php5 libgetargs-long-perl
libgd-tools libapache2-mod-gnutls \
libssl-dev mrtg libsnmp-perl libglib2.0-dev
Rien de bien spcial ce niveau, cette liste prend en compte des paquets pour l'extension par
la suite de Nagios, comme SNMP, MRTG.
Tlchargement des composants Nagios.
Voici les procdures pour tlcharger les lments principaux pour une version de Nagios
classique, il existe de nombreuses applications autour de lui (Nagvis, Nagiograph...). J'ai
choisi volontairement d'utiliser une version basique, chaque chose en son temps.
Nagios-core
Il est ncessaire d'aller sur le site : Nagios-core, puis de tlcharger la dernire version. A ce
jour, la version disponible est la version 3.5, la version 4 est en bta1, vous de choisir.
Selon votre version, il suffit tout simplement de dcompresser les archives dans un rpertoire
ddi.
J'ai choisi la version via git-n3. A savoir que le mot nagios4 correspond votre rpertoire de
destination, ce qui donne :
git clone git://git.code.sf.net/p/nagios/nagios nagios4
Cloning into 'nagios4'...
remote: Counting objects: 17407, done.
remote: Compressing objects: 100% (3275/3275), done.
remote: Total 17407 (delta 14090), reused 17407 (delta 14090)
Receiving objects: 100% (17407/17407), 9.68 MiB | 212 KiB/s, done.
Resolving deltas: 100% (14090/14090), done.
J'ai donc tlcharg la dernire version de nagios 3.X, ce qui donne ce jour et dans mon cas
la version 3.99.96. Mais pourquoi se compliquer la vie alors que la version 4.0.bta 1 est
disponible plus facilement. Sans analyser fichier par fichier, il s'avre que la taille des sources
de cette version est moindre que ma version tlcharge via Git. J'en conclue, peut-tre
facilement, qu'elle est plus complte.

Warning
Avec la nouvelle version en 4.0.x, le dpot GIT semble ne plus tre tenu jour; il est
toujours en version 3.96...
Les plugins
Les plugins sont indispensables, ils fournissent divers modules que Nagios utilisera pour
tester ce que vous voulez, les exemples sont nombreux et multiples. Les domaines concerns
sont trs varis, ils concernent les services, les routeurs et switchs et mme des sondes de
temprature, le matriel comme Netapp, les bases de donnes ...etc.
Il existe un site ddi tous ces modules, disponible ici : Nagios Exchange ou est list 4007
plugins dans 429 catgories.
Le tlchargement
Il suffit de tlcharger le fichier suivant : http://nagiosplug.sourceforge.net/snapshot/nagios-
plugins-master.tar.gz, puis de le dcompresser ou il faut.
Chapter 2. La compilation
Table of Contents
Compilation de Nagios-Core
La partie prcdente est une formalit, nous attaquons l'une des tapes les plus importantes et
qui parfois prend du temps. Comme dj dit choisir une version en cours de dveloppement
n'est pas forcment fait pour aider. En ce qui concerne les plugins, comme il en existe dans
divers langages, des problmes de dpendance peuvent apparatre.
Compilation de Nagios-Core
Placez vous dans le rpertoire nagios4, conformment au paragraphe git-n3. Voici les
options possibles de compilation, toutes ne seront pas utilises.
./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included
packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']

Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local/nagios]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]

By default, `make install' will install all the files in
`/usr/local/nagios/bin', `/usr/local/nagios/lib' etc. You can specify
an installation prefix other than `/usr/local/nagios' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data
[PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root
[PREFIX/share]
--datadir=DIR read-only architecture-independent data
[DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]

System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]

Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-
FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-statusmap=disables compilation of statusmap CGI
--disable-statuswrl=disables compilation of statuswrl (VRML) CGI
--enable-nanosleep enables use of nanosleep (instead of sleep) in event
timing
--enable-event-broker enables integration of event broker routines
--enable-cygwin enables building under the CYGWIN environment
--enable-libtap Enable built-in libtap for unit-testing (default:
no).

Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-nagios-user=user sets user name to run nagios
--with-nagios-group=grp sets group name to run nagios
--with-command-user=user sets user name for command access
--with-command-group=grp sets group name for command access
--with-mail=path_to_mail sets path to equivalent program to mail
--with-httpd-conf=path_to_conf sets path to Apache conf.d directory
--with-checkresult-dir=path sets path to check results spool directory
--with-temp-dir= path sets path to temp directory
--with-init-dir=path sets directory to place init script into
--with-lockfile=path sets path and file name for lock file
--with-gd-lib=DIR sets location of the gd library
--with-gd-inc=DIR sets location of the gd include files
--with-cgiurl=local-url sets URL for cgi programs (do not use a trailing
slash)
--with-htmurl=local-url sets URL for public html

Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -Llib dir if you have libraries in a
nonstandard directory lib dir
LIBS libraries to pass to the linker, e.g. -l library
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I include dir if
you have headers in a nonstandard directory include dir
CPP C preprocessor
J'ai choisi une compilation presque par dfaut, ce qui donne ceci pour mes paramtres :
make clean dep ; ./configure --with-nagios-group=nagios --with-command-
group=nagcmd \
--enable-embedded-perl --with-temp-dir=/tmp --with-init-dir=/etc/init.d \
--with-cgiurl=/nagios3/cgi-bin --with-htmurl=/nagios3 --
sysconfdir=/etc/nagios \
--localstatedir=/var/nagios --with-checkresult-dir=/var/nagios --enable-
event-broker--enable-nanosleep

Note
Je ne peux que vous conseiller de mmoriser ces paramtres, ils pourront ventuellement
servir ultrieurement, ou mme pour une autre plate-forme. (config.log)
La commande make clean dep ; est optionnelle, mais indispensable si vous faites plusieurs
essais de compilation. Le --enable-embedded-perl est activ et ne pose aucun problme.
Nanmoins dans la version 4 de Nagios cette option sera supprime. Il est inutile de crer au
pralable l'utilisateur nagios et son groupe nagcmd, ils seront faits la fin de compilation
automatiquement.
Avant de tout lancer il est ncessaire de crer l'utilisateur nagios et ses groupes : voici
comment faire. Ensuite il faut modifier le fichier /etc/passwd et modifier la valeur /bin/sh
(ou autre) par cette valeur /bin/false.
# groupadd -g 1002 nagios
# groupadd -g 1003 nagcmd
# useradd -u 1001 -g nagios -G nagcmd -d /usr/local/nagios -c "Nagios
Admin" nagios
*** Configuration summary for nagios 3.99.96 03-14-2013 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/apache2/conf.d
Mail program: /bin/mail
Host OS: linux-gnu

Web Interface Options:
------------------------
HTML URL: http://localhost/nagios3/
CGI URL: http://localhost/nagios3/cgi-bin/
Traceroute (used by WAP): /usr/sbin/traceroute

Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs.
Rien de bien spcial ce niveau, il est tout de mme intressant de bien regarder chaque ligne
car elles correspondent un paramtre qui formera la structure de votre Nagios. A titre
d'exemple, la ligne Check result directory: ${prefix}/var/spool/checkresults va
se retrouver ici /usr/local/nagios/var/spool/checkresults. Ceci n'est pas trs gnant,
mais personnellement je prfre chercher directement dans le rpertoire /var/spool/....
Une fois l'architecture dfinie, il est temps de faire chauffer les CPUs, via la commande make
all :
make all ;
*** Exfoliation theme installed ***
NOTE: Use 'make install-classicui' to revert to classic Nagios theme

make[1]: quittant le rpertoire /mnt/Divers@/Compilation/nagios3
make install-basic
make[1]: entrant dans le rpertoire /mnt/Divers@/Compilation/nagios3
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/libexec
/usr/bin/install -c -m 775 -o nagios -g nagios -d /var
/usr/bin/install -c -m 775 -o nagios -g nagios -d /var/archives
/usr/bin/install -c -m 775 -o nagios -g nagios -d /var/spool/checkresults

*** Main program, CGIs and HTML files installed ***

You can continue with installing Nagios as follows (type 'make'
without any arguments for a list of all possible options):

make install-init
- This installs the init script in /etc/nagios3

make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file

make install-config
- This installs sample config files in /etc
Une fois cette commande ralise, Nagios vous indique les tapes suivantes, il faut les faire :
make install && make install-init && make install-commandmode && make
install-config && make install-webconf
Une fois toutes ces tapes ralises avec succs, Nagios est presque install, il est
ncessaire de copier manuellement ceci et de donner les droits ncessaires:

Warning
Pour une mise jour de Nagios ou plutt pour une volution dans la mme srie, il suffit
de refaire la compilation puis de lancer les scripts suivants : make all ; make install,
et le tour est jou !
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/ ; chown -R
nagios:nagcmd /usr/local/nagios/libexec/eventhandlers
Il est temps de tester tout , simplement en faisant cette commande :
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Rien de bien spcial une fois de plus. Si une erreur est prsente Nagios va l'afficher
clairement. L'tape suivante est le lancement de Nagios en mode rsident, via la commande :
/etc/init.d/nagios start

Warning
Sauf que le fichier fournit dans les sources ne fonctionne pas sur une Debian/Ubuntu. Si
ncessaire, le plus rapide est d'adapter un script existant pour votre situation.
Il faut crer le fichier /etc/default/nagios avec les valeurs suivantes :
# Activer Nagios au boot
ENABLED="yes"

# Fichier de conf Nagios :
NAGIOSCFG="/etc/nagios/nagios.cfg"

# localisation du fichier de conf des CGI-BIN :
CGICFG="/etc/nagios/cgi.cfg"

# Niveau "nice" :
NICENESS=5

# Si utilisation de "pam_tmpdir" il faut activer :
# TMPDIR="/tmp"

# Si utilisation de RAM DISK :
USE_RAMDISK="2048"
Pour le fichier /etc/init.d/nagios, voici ma version actuelle: elle comporte un bogue au
niveau du stop. Je vais refaire ce script ultrieurement.
>#! /bin/sh
# Written by Miquel van Smoorenburg miquels@cistron.nl
# Modified for Debian GNU/Linux
# by Ian Murdock imurdock@gnu.ai.mit.edu.
# Clamav version by Magnus Ekdahl magnus@debian.org
# Nagios version by Sean Finney seanius@debian.org and
probably others
# nagios2 version by Marc Haber mh+debian-
packages@zugschlus.de
# nagios3 version by Alexander Wirt formorer@debian.org

### BEGIN INIT INFO
# Provides: nagios3
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: nagios host/service/network monitoring and management
system
# Description: nagios is a monitoring and management system for
hosts, services and networks.
### END INIT INFO

set -e

. /lib/lsb/init-functions

DAEMON=/usr/local/nagios/bin/nagios
NAME="nagios"
DESC="nagios 3.99 monitoring daemon"
NAGIOSCFG="/etc/nagios/nagios.cfg"
CGICFG="/etc/nagios/cgi.cfg"
NICENESS=5

[ -x "$DAEMON" ] || exit 0
[ -r /etc/default/nagios ] && . /etc/default/nagios

# this is from madduck on IRC, 2006-07-06
# There should be a better possibility to give daemon error messages
# and/or to log things
log()
{
case "$1" in
[[:digit:]]*) success=$1; shift;;
*) :;;
esac
log_action_begin_msg "$1"; shift
log_action_end_msg ${success:-0} "$*"
}

check_started () {
#nagios3-core can be installed without -cgi
if [ -e $CGICFG ];
then
check_cmd=$(get_config nagios_check_command $CGICFG)
if [ ! "$check_cmd" ]; then
log 6 "unable to determine nagios_check_command from
$CGICFG!"
return 6
fi
else
#use hardcoded default version
check_cmd="/usr/lib/nagios/plugins/check_nagios
/var/cache/nagios3/status.dat 5 '/usr/local/nagios/bin/nagios'"
fi

eval $check_cmd >/dev/null

if [ -f "$THEPIDFILE" ]; then
pid="$(cat $THEPIDFILE)"
if [ "$pid" ] && kill -0 $pid >/dev/null 2>/dev/null; then
return 0 # Is started
fi
fi
return 1 # Isn't started
}

#
# get_config()
#
# grab a config option from nagios.cfg (or possibly another nagios
config
# file if specified). everything after the '=' is echo'd out, making
# this a nice generalized way to get requested settings.
#
get_config () {
if [ "$2" ]; then
set -- `grep ^$1 $2 | sed 's@=@ @'`
else
set -- `grep ^$1 $NAGIOSCFG | sed 's@=@ @'`
fi
shift
echo $*
}

check_config () {
if $DAEMON -v $NAGIOSCFG >/dev/null 2>&1 ; then
# First get the user/group etc Nagios is running as
nagios_user="$(get_config nagios_user)"
nagios_group="$(get_config nagios_group)"
log_file="$(get_config log_file)"
log_dir="$(dirname $log_file)"

return 0 # Config is ok
else
# config is not okay, so let's barf the error to the user
$DAEMON -v $NAGIOSCFG
fi
}

check_named_pipe () {
nagiospipe="$(get_config command_file)"
if [ -p "$nagiospipe" ]; then
return 1 # a named pipe exists
elif [ -e "$nagiospipe" ];then
return 1
else
return 0 # no named pipe exists
fi
}

if [ ! -f "$NAGIOSCFG" ]; then
log_failure_msg "There is no configuration file for Nagios 3."
exit 6
fi

THEPIDFILE=$(get_config "lock_file")
[ -n "$THEPIDFILE" ] || THEPIDFILE='/var/run/nagios.pid'

start () {

if [ "$ENABLED" = "no" ]; then
log_warning_msg "Not starting Nagios3 - set ENABLED to yes in
/etc/default/nagios"
exit 0
fi

DIRECTORY=$(dirname $THEPIDFILE)
[ ! -d $DIRECTORY ] && mkdir -p $DIRECTORY
chown nagios:nagios $DIRECTORY

if ! check_started; then
if ! check_named_pipe; then
log_action_msg "named pipe exists - removing"
rm -f $nagiospipe
fi
if check_config; then
start_daemon -n $NICENESS -p $THEPIDFILE $DAEMON -d $NAGIOSCFG
ret=$?
else
log_failure_msg "errors in config!"
log_end_msg 1
exit 1
fi
else
log_warning_msg "already running!"
fi
return $ret
}

stop () {
killproc -p $THEPIDFILE
ret=$?
if [ `pidof nagios3 | wc -l ` -gt 0 ]; then
echo -n "Waiting for $NAME daemon to die.."
cnt=0
while [ `pidof nagios3 | wc -l ` -gt 0 ]; do
cnt=`expr "$cnt" + 1`
if [ "$cnt" -gt 15 ]; then
kill -9 `pidof nagios`
break
fi
sleep 1
echo -n "."
done
fi
echo
if ! check_named_pipe; then
rm -f $nagiospipe
fi
if [ -n "$ret" ]; then
return $ret
else
return $?
fi
}

status()
{
log_action_begin_msg "checking $DAEMON"
if check_started; then
log_action_end_msg 0 "running"
else
if [ -e "$THEPIDFILE" ]; then
log_action_end_msg 1 "$DAEMON failed"
exit 1
else
log_action_end_msg 1 "not running"
exit 3
fi
fi
}

reload () {
# Check first
if check_config; then
if check_started; then
killproc -p $THEPIDFILE $DAEMON 1
else
log_warning_msg "Not running."
fi
else
log_failure_msg "errors in config!"
log_end_msg 6
exit 6
fi
}

case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
start
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
stop
log_end_msg $?
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
stop
if [ -z "$?" -o "$?" = "0" ]; then
start
fi
log_end_msg $?
;;
reload|force-reload)
log_daemon_msg "Reloading $DESC configuration files" "$NAME"
reload
log_end_msg $?
;;
status)
status
;;
check)
check
;;
*)
log_failure_msg "Usage: $0 {start|stop|restart|reload|force-
reload|status}" >&2
exit 1
;;
esac

exit 0
Il faut lancer le serveur HTTP (Apache2) dsormais :
/etc/init.d/httpd start
Il faut tablir un mot de passe pour le compte nagiosadmin, voici la procdure :
cd /etc/nagios ; htpasswd -c htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
Il est possible de rajouter et/ou modifier le mot de passe d'une ou plusieurs personnes via cette
commande. Reportez vous la commande htpasswd pour de plus amples renseignements. En
fonction de la configuration de votre serveur Apache, il est possible de voir plusieurs
instances de Nagios.

Warning
Pendant que nous sommes avec Apache, si jamais Nagios affiche des caractres mal
encods il faut activer ceci dans le fichier etc/apache2/conf.d/charset :
AddDefaultCharset UTF-8
Cette modification demande un reload pour Apache, et le tour est jou.
Cette commande vous facilitera la vie : ajout de l'utilisateur Apache dans le group nagios,
ce qui donne : adduser www-data nagcmd.
Chapter 3. Nagios-plugins
Table of Contents
Autres plugins
Il faut se placer dans le rpertoire des plugins rcemment tlchargs; puis lancer la
commande :
./configure --with-nagios-user=nagios --with-nagios-group=nagios
Depuis ce problme est peut-tre corrig. Si vous rencontrez une erreur fatale lie ce fichier
./gl/stdio.ht, il faut faire ceci :
ditez le fichier gl/stdio.ht ligne 456 remplacer gets par fgets, -_GL_WARN_ON_USE
(gets, "gets is a security hole - use fgets instead");. Ensuite refaire le dbut
de la compilation sans lancer avant un make clean dep
Une fois cette tape complte, il faut lancer la compilation proprement dite via make &&
make install
Tous les plugins sont installs dans ce rpertoire : /usr/local/nagios/libexec
Autres plugins
Il en reste plein d'autres encore dans le rpertoire des sources, dans le rpertoire contrib.
Libre vous de les utiliser condition de les copier dans /usr/local/nagios/libexec.

Note
Il existe un site ddi pour le dveloppement ou pour rgler un bogue avec un plugin.
Donc il vaut mieux viter de choisir l'un des plugins figurant sur ce site :
https://github.com/nagios-plugins/nagios-plugins/issues
Chapter 4. Configuration des fichiers nagios.cfg
et cgi.cfg
Table of Contents
nagios.cfg
cgi.cfg
nagios.cfg
Ce fichier doit tre vrifi ligne par ligne, il mrite quelques modifications ou adaptations.
Les donnes qui suivent proviennent de ma configuration, libre vous de les modifier.
Personnellement j'ai regroup beaucoup de fichiers dans /var/nagios/: ceci pour viter des
problmes de droits, mais surtout pour retrouver presque tout rapidement.
log_file=/var/log/nagios.log
object_cache_file=/var/nagios/objects.cache
precached_object_file=/var/nagios/objects.precache
status_file=/var/nagios/status.dat
command_file=/var/log/nagios/nagios.cmd
lock_file=/var/run/nagios.lock
temp_file=/tmp/nagios.tmp
temp_path=/tmp
state_retention_file=/var/nagios/retention.dat
use_timezone=Africa/Libreville
Les paramtres possibles sont dans le rpertoire /usr/share/zonefinfo/
(Etc/GMT+1 ou Europe/Paris...)
date_format=euro
admin_email=nagios@localhost
Sera modifi/adapt par la suite...
Les paramtres suivants sont apparus avec la V 4; ils ne sont pas obligatoires car ils existent
des valeurs par dfaut.
# represente le nbr de daemon pour les requtes HOST/SRV...par defaut=4, en
fonction de l'importance de votre rseau.
check_workers=10
# fichier necessaire avec la V 4
query_socket=/var/nagios/rw/nagios.qh
# pour de grosses installation placer cette valeur 0 permet de gagner de
la place disque lors de la rotation des logs.
log_current_states=0
cgi.cfg
Ce fichier comprend les paramtres pour l'interface WEB.
Ce fichier est configur avec une authentification obligatoire pour accder l'interface. Ceci
permet de rgler les accs en modifications, finement et ceux en lecture seules avec le
caractre *.
nagios_check_command=/usr/local/nagios/libexec/check_nagios -F
/var/cache/status.dat 5 '/usr/local/nagios/bin/nagios'
Ligne que j'ai ajoute : elle tait absente (?) et pourtant obligatoire.

Warning
Ne placer cette ligne qu'uniquement lors d'un problme. Lors d'une rcente
installation tout est pass sans problme. C'est l'avantage de se baser sur une
version en dveloppement...
authorized_for_system_information=*
authorized_for_configuration_information=*
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
#authorized_for_read_only=*
Cette ligne sera active par la suite, une fois Nagios actif.
#statusmap_background_image=smbackground.gd2
Comme pour la ligne prcdente, elle sera modifie ultrieurement. Voir aussi le
chapitre sur le format gd2 pour de plus amples renseignements.
Maintenant que les 2 fichiers principaux sont configurs vous pouvez tester l'ensemble via
cette commande :
/usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
Nagios Core 3.99.96
Copyright (c) 2009-present Nagios Core Development Team and Community
Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 03-14-2013
License: GPL

Website: http://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...

Running pre-flight check on configuration data...

Checking services...
Checked 8 services.
Checking hosts...
Checked 1 hosts.
Checking host groups...
Checked 1 host groups.
Checking service groups...
Checked 0 service groups.
Checking contacts...
Checked 1 contacts.
Checking contact groups...
Checked 1 contact groups.
Checking commands...
Checked 24 commands.
Checking time periods...
Checked 5 time periods.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors: 0

Things look okay - No serious problems were detected during the pre-flight
check
Chapter 5. Les autres fichiers de
configuration
Table of Contents
Les diffrents tats
Les tats pour les htes :
Les tats pour les services :
Dfinitions des htes (hosts.cfg) :
Dfinitions de services (services.cfg) :
Dfinitions de services groups (services-group.cfg) :
Dfinitions de contacts (contacts.cfg) :
Dfinition d'un contact de groupe (contactgroups.cfg) :
Dfinition d'un groupe dhtes (hostsgroup.cfg) :
Dfinition des priodes horaires (timeperiods.cfg):
Dfinition de commandes (commands.cfg) :
Dfinition de dpendance de service (dependancies.cfg) :
Dfinition d'escalade de service (escalations.cfg) :
Dfinition d'un groupe de services (servicegroups.cfg) :
Dfinition d'informations sur les htes (hostextinfo.cfg) :
Dfinition des templates (templates.cfg)
Ce chapitre va sefforcer d'expliquer la configuration des divers matriels, services pour que
Nagios soit en mesure de les superviser. Cette tape est relativement pnible car elle doit tre
faite manuellement. Il faut avoir en tte tous les types diffrents superviser et les placer dans
la mesure du possible dans des fichiers distincts, et non tous dans un mme fichier.
Les diffrents tats
Je prsente les diffrents tats que peuvent avoir un hte ou service, il est important de les
connatre avant de passer la configuration. Ces paramtres sont prsents un peu partout sous
la forme d'une seule lettre.
Les tats pour les htes :
d : Notification sur les htes en tats DOWN
u : Notification sur les htes en tats non joignables (UNREACHABLE)
r : Notification quand un hte retourne l'tat normal (tats UP)
f : Notification quand un hte commence ou s'arrte d'osciller,
s : Notification quand un hte ou service entre ou sort de priode de maintenance
planifie.
n : None ou (null) aucune notification
Les tats pour les services :
w : Notification sur tats WARNING de service
u : Notification sur tats UNKNOWN de service
c : Notification sur tats CRITICAL de service
r : Notification sur tats OK
f : Notification quand le service commence et s'arrte d'osciller.
n : (none) : Le contact ne recevra aucun type de notifications de services
Dfinitions des htes (hosts.cfg) :
Une dfinition d'hte ou de machine s'applique un serveur "physique/virtuel", une station de
travail, un priphrique, ou un quipement prsent sur votre rseau. Il est possible d'utiliser
les templates pour la configuration de ce fichier
define host{
host_name host_name
; C'est le nom court qui permet d'identifier l'hte.
; Il est utilis dans les groupes d'htes et les dfinitions de service
pour faire rfrence cet hte particulier.
; Les htes peuvent tre associs de multiples services (qui sont
superviss).
; Si elle est utilise dans le bon contexte, la macro $HOSTNAME$ contient
ce nom court.

alias alias
; C'est un nom long ou une description de l'hte permettant de l'identifier
plus facilement.
; Si elle est utilise dans le bon contexte, la macro $HOSTALIAS$ contient
cet alias/description.

display_name display_name

address address
; @IP ou FQDN

parents host_names
; dpendance vis--vis d'un autre hte

hostgroups hostgroup_names
; remplir

check_command command_name
; C'est le nom court de la commande utiliser pour dterminer si l'hte
est hors service ou non.
; Typiquement, cette commande lance un "test (HTTP)" vers l'hte pour voir
si il est "vivant".
; La commande doit retourner un tat OK (0) sinon Nagios supposera que cet
hte est hors service.
; Si vous laissez cet argument vide, l'hte ne sera pas contrl -
; Nagios supposera que l'hte est toujours en fonctionnement.
; Ceci est utile pour superviser des imprimantes ou autres priphriques
qui sont teints frquemment.

initial_state [o,d,u]
; OK/ DOWN / UP "d" est mon sens une bonne valeur

max_check_attempts 1
; C'est le nombre de fois que Nagios relancera la commande de contrle de
; lhte si celle-ci retourne un tat diffrent de OK. Positionner cette
valeur 1 fera
; que Nagios gnrera une alerte sans re-contrler l'hte.
; Note : si vous ne voulez pas contrler l'tat de l'hte,
; vous devez quand mme mettre une valeur suprieure ou gale 1.
; Pour ne pas effectuer le contrle de l'hte, laissez simplement vide
l'option "host_check_command".

check_interval #
; interval de test si tat = OK

retry_interval #
; interval de test si etat est NOK.

active_checks_enabled [0/1]
; active les tests via Nagios

passive_checks_enabled [0/1]
; active les tests indirects, style NRPE, nsclient...

check_period timeperiod_name
; priode de test, souvent "24x7"

obsess_over_host [0/1]
; experimentale - a utiliser avec precaution - defaut zro

check_freshness [0/1]
; a utiliser avec passive tests ! en gnral plus pour un service qu'un
hote.
; A utiliser si vous utilisez un Nagios en redondant.

freshness_threshold #
; a utiliser avec passifs test et en Nagios redondant
; elle indique en secondes l'ge maximum des rsultats fournis pour ce
service, sachant qu'il s'agit en gnral d'un systme distribu

event_handler command_name
; permet de lancer une commande aprs que le SVC soit pass en NOK, style
un reboot du SVC, un autre test...

event_handler_enabled [0/1]
; active ou pas le gestionnaire dvnement

low_flap_threshold #
; a utiliser si l'option "flap_detection_enabled" est active, utiliser en
particulier pour la mmoire, CPU.
; Donc plus pour un service qu'un hte en gnral.

high_flap_threshold #
; a utiliser si l'option "flap_detection_enabled" est active sinon Nagios
supprime les notifications sauf
; les valeures hautes et basses sont dpasses.

flap_detection_enabled [0/1]
; active le mode "oscillation" de l'hte, en gnral valable pour un
service et non un hote.

flap_detection_options [o,d,u]
; Ok / DOWN / UP

process_perf_data [0/1]
; a utiliser pour faire des stats via MRTG ou autre...

retain_status_information [0/1]
; conserve un tat de lhte si Nagios est redmarr - par dfaut = 1

retain_nonstatus_information [0/1]
; conserve l'tat ...si Nagios est redmarr par dfaut = 1

contacts contacts
; remplir, si notification active
contact_groups contact_groups

notification_interval #
; notification_interval 0
; C'est le nombre d'"units de temps" patienter avant de re-notifier un
; contact que l'hte est toujours hors service ou inaccessible.
; Si vous n'avez pas modifi la valeur par dfaut de la variable
interval_length dans
; le fichier de configuration principal, qui est de 60, ce nombre exprime
des minutes.
; Si vous mettez cette valeur 0, Nagios ne re-notifiera pas les contacts
propos des problmes
; de cet hte - une seule notification sera mise.

first_notification_delay #
; quand sera transmise la 1ere notification en principe tout de suite donc
zro ou sinon rglable : "0h 0m 0s"

notification_period timeperiod_name
; notification_period 24x7
; C'est le nom court de la priode durant laquelle les notifications
d'vnements
; concernant cet hte peuvent tre mises vers les contacts.
; Si un hte est hors service, inaccessible, ou se rtablit en dehors
; de la priode de notification, aucune notification ne sera envoye.

notification_options [d,u,r,f,s]
; Cette directive dfinit quand les notifications pour cet hte doivent
tre envoyes.
; Les options valides sont une combinaison d'une ou plusieurs des valeurs
suivantes :
; d = envoi de la notification pour un tat DOWN,
; u = envoi de la notification pour un tat UNREACHABLE , et
; r = envoi de la notification pour le retour la normale (tat OK).
; f = mode "flap"
; s = mode "stop"
; Si vous spcifiez la valeur n (none), aucune notification ne sera
envoye.
; Exemple: avec les valeurs d,r dans ce champ, les notifications seront
envoyes quand l'hte
; sera DOWN et quand il sortira de cet tat pour un tat OK.

notifications_enabled [0/1]

stalking_options [o,d,u];
; utilis en gnral pour un service OK / DOWN / non joignable
; permet de notifier en limitant si besoin les tats
; si vous slectionnez que U, uniquement les notifications UP seront
envoyes
; (Cette option n'est pas encore document pour un hte).
; par dfaut = none ou rien(vide).

notes note_string
; description possible

notes_url url

action_url url
; pour un site WEB, il est possible de placer son lien ici.

icon_image image_file
icon_image_alt alt_string
vrml_image image_file

statusmap_image image_file
; en prinicpe au format GD2.

2d_coords x_coord,y_coord
3d_coords x_coord,y_coord,z_coord
}
Dfinitions de services (services.cfg) :
La dfinition d'un service identifie un service tournant sur un hte. Le terme "service" est trs
gnrique. Il peut s'appliquer un service ( tel que POP, SMTP, HTTP, etc.) ou bien tout
autre type de mesure associ l'hte (temps de rponse un ping, nombre d'utilisateurs
connects, usage des disques). Les diffrents arguments sont expliqus ci-dessous. Ce fichier
est galement indispensable et primordial : c'est lui qui dfinit les tests effectuer pour un
service. Il ressemble au prcdent fichier avec des options identiques mais applicables un
service. Il est conseill de faire plusieurs fichiers services plutt qu'un gros fichier
inexploitable par la suite.
Il est conseill de travailler avec les templates; expliqus par la suite.
define service{
host_name host_name

hostgroup_name hostgroup_name
service_description service_description
display_name display_name

servicegroups servicegroup_names
; appartenance un group de service

is_volatile [0/1]
; En principe tous les services sont "non volatiles" (normaux). Donc valeur
zro
; a utiliser dans des cas "rares" comme sur un test (portsentry), une
alerte dans ou sur un fichier (log), une alarme...

check_command command_name
; la commande lancer pour les tests

initial_state [o,w,u,c]
; OK/ WARNING / UNKNOWN joignable / CRITICAL
; peut utiliser

max_check_attempts #
; C'est le nombre de fois que Nagios relancera la commande de contrle du
SVC
; si celle-ci retourne un tat diffrent de OK. Positionner cette valeur
1 fera
; que Nagios gnrera une alerte sans re-contrler.
; Note : si vous ne voulez pas contrler l'tat,vous devez quand mme
mettre une valeur suprieure ou gale 1.

check_interval #
; interval de test si tat = OK - minutes

retry_interval #
; interval de test si etat est NOK. minutes

active_checks_enabled [0/1]
; test via Nagios

passive_checks_enabled [0/1]
; test via NRPE, nsclient...

check_period timeperiod_name
; priode de test, souvent "24x7"

obsess_over_service [0/1]
; experimentale - utiliser avec prcaution - dfaut zro

check_freshness [0/1]
; a utiliser avec passive tests ! en gnral plus pour un service qu'un
hte.
; utiliser avec un nagios en redondant

freshness_threshold #
; a utiliser avec passifs test !
; utiliser avec un nagios en redondant

event_handler command_name
; permet de lancer une commande supplmentaire une fois l'tat est NOK

event_handler_enabled [0/1]
; active le gestionnaire dvnement complmentaire ou pas, en gnral non

low_flap_threshold #
; a utiliser si l'option "flap_detection_enabled" est active, utiliser en
particulier pour la mmoire, CPU.
; Donc plus pour un service qu'un hte en gnral.

high_flap_threshold #
; a utiliser si l'option "flap_detection_enabled" est active sinon Nagios
supprime les notifications sauf
; les valeures hautes et basses sont dpasses.

flap_detection_enabled [0/1]
; active le mode "oscillation" de l'hte, en gnral valable pour un
service et non un hote.

flap_detection_options [o,w,c,u]
; Ok / WARNING / CRITICAL / Non joignable

process_perf_data [0/1]

retain_status_information [0/1]
; conserve un tat de l'hote si Nagios est redmarr - par dfaut = 1

retain_nonstatus_information [0/1]
; conserve l'tat ...si Nagios est redmarr par dfaut = 1

notification_interval #
; tout de suite donc 0
first_notification_delay #

notification_period timeperiod_name
; notification_period 24x7
; C'est le nom court de la priode durant laquelle les notifications
d'vnements
; concernant cet hte peuvent tre mises vers les contacts.
; Si un hte est hors service, inaccessible, ou se rtablit en dehors
; de la priode de notification, aucune notification ne sera envoye.

notification_options [w,u,c,r,f,s]
; Cette directive dfinit quand les notifications pour cet hte doivent
tre envoyes.
; Les options valides sont une combinaison d'une ou plusieurs des valeurs
suivantes :
; w = warning
; u = UP
; c = CRITICAL
; r = envoi de la notification pour le retour la normale (tat OK
RECOVERY).
; f = mode "flap"
; s = mode "stop"
; Si vous spcifiez la valeur n (none), aucune notification ne sera
envoye.

notifications_enabled [0/1]
stalking_options [o,d,u];
; utilis en gnral pour un service OK / DOWN / UP
; permet de notifier en limitant si besoin les tats
; si vous slectionnez que U, uniquement les notifications UP seront
envoyes
; (Cette option n'est pas encore document pour un hte).
; par dfaut = none ou rien(vide).

contacts contacts
contact_groups contact_groups

stalking_options [o,w,u,c]
; utilis en gnral pour un service OK / DOWN / UP
; permet de notifier en limitant si besoin les tats
; si vous slectionnez que U, uniquement les notifications UP seront
envoyes
; (Cette option n'est pas encore document pour un hte).
; par dfaut = none ou rien(vide).

notes note_string
notes_url url

action_url url

icon_image image_file
icon_image_alt alt_string
}
Dfinitions de services groups (services-group.cfg) :
Ce fichier permet de regrouper les mmes services pour une simplification de la
configuration. Depuis je ne sais pas combien temps, mais dans la dfinition du service existe
galement l'option servicegroups. Certes elle peut tre utilise ici. Personnellement je
prfre configurer les groupements au travers d'un fichier ddi cela.
La configuration est trs simple ici; pas de templates possibles. Il suffit de placer
l'identification du service au niveau de l'option members. Chaque valeur doit tre spare par
une virgule.
define servicegroup{
servicegroup_name http-services
alias WEB Services
members web1,web2,Server,web3
}
Il est possible d'ajouter la variable servicegroup_members pour inclure un groupe dans ce
groupe. Il est possible de faire une note galement.
Dfinitions de contacts (contacts.cfg) :
Une dfinition de contact s'applique la personne physique, qui doit tre contacte en cas de
problmes sur le rseau. Les diffrents arguments possibles sont expliqus ci-dessous
###########################################################################
####
# CONTACTS.CFG - SAMPLE CONTACT/CONTACTGROUP DEFINITIONS
#
# NOTES: This config file provides you with some example contact and
contact
# group definitions that you can reference in host and service
# definitions.
#
# You don't need to keep these definitions in a separate file from
your
# other object definitions. This has been done just to make things
# easier to understand.
#
###########################################################################
####
# Il est possible de faire encore plus fin :
#define contact{
#contact_name mdupont
#alias Moi Dupont
#host_notifications_enabled 1
#service_notifications_enabled 1
#service_notification_period 24x7
#host_notification_period 24x7
#service_notification_options w,u,c,r
#host_notification_options d,u,r
#service_notification_commands notify-by-email
#host_notification_commands host-notify-by-email
#email mdupont@domain.fr
#pager 456-7890@pager.domain.fr
#address1 mdupont@icq.com
#address2 545-565-5775
#can_submit_commands 1
#}

# 06 adresses MAX utiliser avec la vaviable $CONTAC-TADDRESSx$ ou "x" est
le n

###########################################################################
####
###########################################################################
####
#
# CONTACTS
#
###########################################################################
####
###########################################################################
####

define contact{
use generic-contact ; Inherit
default values from generic-contact template (defined above)
contact_name paul ; Short name of user
alias Paul Linux Admin ; Full name of user
email paul@localhost ;
}

Dfinition d'un contact de groupe (contactgroups.cfg) :
Cette dfinition permet de regrouper un ou plusieurs contacts pour mettre des notifications.
Quand un hte ou un service un problme ou se rtablit, Nagios recherche les groupes de
contacts qui envoyer des notifications, et les notifie. Ceci peut sembler complexe, mais dans
la plupart des cas, ce ne le sera pas. On obtient ainsi une meilleure souplesse dans la dfinition
de qui est notifi vis--vis d'un problme. Les diffrents arguments d'une dfinition de groupe
de contacts sont dtaills ci-dessous.
define contactgroup{
contactgroup_name linux-admins
alias Linux Administrators
members jdoe,robert,paul
}
Dfinition d'un groupe dhtes (hostsgroup.cfg) :
Cette dfinition permet de regrouper un ou plusieurs htes pour simplifier la gestion, et
simplifie l'affichage dans Nagios. Chaque hte que vous dfinissez doit tre membre d'au
moins un groupe d'htes, mme si c'est le seul hte du groupe. Un hte peut faire partie de
plusieurs groupes. Quand un hte est hors service, inaccessible, ou se rtablit, Nagios
recherche les groupes dont cet hte fait partie, en extrait chaque groupe de contacts, et les
notifie. On obtient ainsi une meilleure souplesse.
# A list of your Debian GNU/Linux servers
define hostgroup {
hostgroup_name debian-servers
alias Debian GNU/Linux Servers
members localhost, serveur, vm-debian
}
Dfinition des priodes horaires (timeperiods.cfg):
Une priode est une liste de tranches horaires pour les diffrents jours de la semaine, qui sont
"valides" pour l'envoi des notifications et les contrles de service. Ces tranches sont elles-
mmes composes d'autres tranches de temps, pour chaque jour de la semaine. On ne peut pas
dfinir d'exception. Par contre on peut utiliser l'option use pour inclure une dclaration qui
fera exception sur des dates ou des horaires.
define timeperiod{
name us-holidays
timeperiod_name us-holidays
alias U.S. Holidays

january 1 00:00-00:00 ; New Years
monday -1 may 00:00-00:00 ; Memorial Day (last Monday
in May)
july 4 00:00-00:00 ; Independence Day
monday 1 september 00:00-00:00 ; Labor Day (first Monday
in September)
thursday 4 november 00:00-00:00 ; Thanksgiving (4th
Thursday in November)
december 25 00:00-00:00 ; Christmas
}

# This defines a modified "24x7" timeperiod that covers every day of the
# year, except for U.S. holidays (defined in the timeperiod above).
define timeperiod{
timeperiod_name 24x7_sans_holidays
alias 24x7 Sans Holidays

use us-holidays ; va inclure les journes
fries.

sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
Dfinition de commandes (commands.cfg) :
Les commandes qu'on peut dfinir sont les contrles de service, les notifications de service,
les gestionnaires d'vnements de services, les contrles d'htes, les notifications d'htes, et
les gestionnaires d'vnements d'htes. Les dfinitions de commandes peuvent contenir des
macros, mais vous devez vous assurer de n'utiliser que des macros "valides" dans le contexte
de la commande. Les diffrents arguments d'une dfinition de commande sont dtaills ci-
dessous.
###########################################################################
####
# COMMANDS.CFG - SAMPLE COMMAND DEFINITIONS FOR NAGIOS 3.99.96
#
#
# NOTES: This config file provides you with some example command
definitions
# that you can reference in host, service, and contact definitions.
#
# You don't need to keep commands in a separate file from your other
# object definitions. This has been done just to make things easier
to
# understand.
#
###########################################################################
####
# These are some example notification commands. They may or may not work
on
# your system without modification. As an example, some systems will
require
# you to use "/usr/bin/mailx" instead of "/usr/bin/mail" in the commands
below.
###########################################################################
#####


# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios
*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState:
$HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time:
$LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert:
$HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}

# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios
*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService:
$SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState:
$SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional
Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$
Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"
$CONTACTEMAIL$
}

###########################################################################
#####
#
# SAMPLE HOST CHECK COMMANDS
#
###########################################################################
#####

# This command checks to see if a host is "alive" by pinging it
# The check must result in a 100% packet loss or 5 second (5000ms) round
trip
# average time to produce a critical error.
# Note: Five ICMP echo packets are sent (determined by the '-p 5' argument)

# 'check-host-alive' command definition
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -
c 5000.0,100% -p 5
}

###########################################################################
#####

# 'check_local_disk' command definition
define command{
command_name check_local_disk
command_line $USER1$/check_disk -W 85 -C 90 -p $ARG1$ -u GB
}

# 'check_local_load' command definition
define command{
command_name check_local_load
command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}

# 'check_local_procs' command definition
define command{
command_name check_local_procs
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}

# 'check_local_users' command definition
define command{
command_name check_local_users
command_line $USER1$/check_users -w $ARG1$ -c $ARG2$
}

# 'check_local_swap' command definition
define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
}

# 'check_local_temp-CPU' command definition
# voir manuel a l'interieur du script !!!
define command{
command_name check_local_temp
command_line $USER1$/check_temp.pl -s temp1 -w 65 -c 75
}

# 'check_local_mrtgtraf' command definition
#define command{
# command_name check_local_mrtgtraf
# command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$
-c $ARG4$ -e $ARG5$
# }

###########################################################################
#####
# NOTE: The following 'check_...' commands are used to monitor services on
# both local and remote hosts.
###########################################################################
#####

# 'check_ftp' command definition
define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}

# 'check_snmp' command definition
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
}

# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

# 'check_ssh' command definition
define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}

# 'check_dhcp' command definition
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp $ARG1$
}

# 'check_ping' command definition
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c
$ARG2$ -p 5
}

# 'check_pop' command definition
define command{
command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}

# 'check_imap' command definition
define command{
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}

# 'check_smtp' command definition
define command{
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}

# 'check_tcp' command definition
define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

# 'check_udp' command definition
define command{
command_name check_udp
command_line $USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

# 'check_nt' command definition
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$
$ARG2$
}


#./check_mem.sh - Les valeurs W + C sont inscrites dans le plugin !!!
define command{
command_name check_mem
command_line $USER1$/check_mem1.sh -w 85 -c 90
}

###########################################################################
#####
#
# SAMPLE PERFORMANCE DATA COMMANDS - 2 Lignes coupes volontairement pour
ce document !
#
###########################################################################
#####

# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b"
"$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t
$HOSTEXECUTIONTIME$\
t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /var/nagios/host-perfdata.out
}


# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b"
"$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATT
EMPT$\t$SERVICESTATETYPE$\
t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVIC
EPERFDATA$\n" >> /var/nagios/service-perfdata.out
}

# Pour nagiosgraph configuration

define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/local/nagiosgraph/bin/insert.pl
}

Dfinition de dpendance de service (dependancies.cfg) :
Les dfinitions de dpendance du service sont une fonctionnalit avance de Nagios qui
permet de supprimer des notifications et des contrles actifs, partir de l'tat d'un ou plusieurs
services. Elles sont optionnelles et sont principalement destines aux utilisateurs avertis qui
ont des configurations de supervisions complexes.
define servicedependency{
host_name WEB
service_description Apache HTTP
dependent_host_name localhost
dependent_service_description Main Web Site
execution_failure_criteria n
notification_failure_criteria w,u,c
}
Dfinition d'escalade de service (escalations.cfg) :
Une dfinition d'escalade pour un service est compltement optionnelle, et est utilise pour
notifier un ou plusieurs contacts diffrents de la premire notification ou plus.
define serviceescalation{
host_name act-1
service_description Mail problem
first_notification 4
last_notification 0
notification_interval 15
contact postmaster@domain.fr
;contact_groups admins,themanagers (optionnelle)
;escalation_period 24x7 (optionnelle)
}
Dfinition d'un groupe de services (servicegroups.cfg) :
Un groupe de services permet de rassembler plusieurs services ensemble pour pouvoir
apparatre dans les CGIs. Trs pratique lors d'une multitude de services tests.
# *******************************************************************
# servicegroups.cfg
#
# Pour prise en compte ne pas oublier dans nagios.cfg,
# la mise a jour/ajout de cfg_file=/etc/nagios/servicegroups.cfg
# *******************************************************************

# service group >>> PING
define servicegroup{
servicegroup_name PING
alias Tests PING
members serveur,dm,nt1,switch1
}

# service group >>> HTTP
define servicegroup{
servicegroup_name HTTP
alias Test serveur WWW
members serveur,HTTP,dm,HTTP
}

# service group >>> MEM
define servicegroup{
servicegroup_name MEMOIRE
alias Mmoire utilis
members serveur,MEM
}
Dfinition d'informations sur les htes (hostextinfo.cfg) :
Ce fichier est obsolte avec la version 4.0.x ! (nouveau). Ses paramtres identiques sont
inclure dsormais avec la dfinition de l'hte (Cf chap.hosts).
Dfinition des templates (templates.cfg)
Les templates apportent une souplesse dans la configuration des paramtres pour les htes
et les services. Il est ncessaire de crer d'abord votre modle, exemple generic-contact
puis de configurer avec prcision tous les paramtres communs de vos htes. Les paramtres
spcifiques pour chaque hte seront dfinis lors des dclarations. Il va de soi que les fichiers
de configuration sont plus compacts et plus faciles comprendre en utilisant les templates.
Lutilisation est simple : d'abord il faut que votre modle(template) soit conforme vos
rglages. Ensuite vous pouvez dfinir des paramtres particuliers au travers de cette
configuration (exemple):
define host{
name linux-server ; Le nom du template
use generic-host ; Le nom d'un template qui sert
galement pour complter les dfinitions.
...

###########################################################################
####
# TEMPLATES.CFG - SAMPLE OBJECT TEMPLATES
#
# NOTES: This config file provides you with some example object definition
# templates that are refered by other host, service, contact, etc.
# definitions in other config files.
#
# You don't need to keep these definitions in a separate file from
your
# other object definitions. This has been done just to make things
# easier to understand.
#
###########################################################################
####
###########################################################################
####
#
# CONTACT TEMPLATES
#
###########################################################################
####
###########################################################################
####

# Generic contact definition template - This is NOT a real contact, just a
template!

define contact{
name generic-contact ; The name of
this contact template
service_notification_period 24x7 ; Priode de
notification pour le service
host_notification_period 24x7 ; Priode de
notification pour l'hte
service_notification_options w,u,c,r,f,s ; Prise en
compte des statut pour les notifications (services)
host_notification_options d,u,r,f,s ; Prise en
compte des statut pour les notifications (htes)
service_notification_commands notify-service-by-email ; send
service notifications via email
host_notification_commands notify-host-by-email ; send host
notifications via email
register 0 ; DONT REGISTER THIS
DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}

###########################################################################
####
###########################################################################
####
#
# HOST TEMPLATES
#
###########################################################################
####
###########################################################################
####

# Generic host definition template - This is NOT a real host, just a
template!

define host{
name generic-host
notifications_enabled 1 ; Host notifications are
enabled
event_handler_enabled 1 ; Host event handler is
enabled
flap_detection_enabled 1 ; Flap detection is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information
across program restarts
retain_nonstatus_information 1 ; Retain non-status
information across program restarts
check_period 24x7 ; By default, Linux hosts
are checked round the clock
check_command check-host-alive ; la commande
pour le test
max_check_attempts 10
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins
register 0 ; DONT REGISTER THIS
DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

# Linux host definition template - This is NOT a real host, just a
template!

define host{
name linux-server ; The name of
this host template
use generic-host ; This template
inherits other values from the generic-host template
check_period 24x7 ; By default,
Linux hosts are checked round the clock
check_interval 5 ; Actively check
the host every 5 minutes
retry_interval 1 ; Schedule host
check retries at 1 minute intervals
max_check_attempts 10 ; Check each
Linux host 10 times (max)
check_command check-host-alive ; Default
command to check Linux hosts
notification_period 24x7 ;
notification_interval 60 ; Resend
notifications / 60 mn
notification_options d,u,r ; Only send
notifications for specific host states
contact_groups admins ; Notifications
get sent to the admins by default
register 0 ; DONT REGISTER
THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

# Define a template for switches that we can reuse
define host{
name generic-switch ; The name of
this host template
use generic-host ; Inherit default
values from the generic-host template
check_period 24x7 ; By default,
switches are monitored round the clock
check_interval 5 ; Switches are
checked every 5 minutes
retry_interval 1 ; Schedule host
check retries at 1 minute intervals
max_check_attempts 10 ; Check each host
10 times (max)
check_command check-host-alive ; Default command
to check if routers are "alive"
notification_period 24x7 ; Send
notifications at any time
notification_interval 30 ; Resend
notifications every 30 minutes
notification_options d,r ; Only send
notifications for specific host states
contact_groups admins ; Notifications
get sent to the admins by default
register 0 ; DONT REGISTER
THIS - ITS JUST A TEMPLATE
}

###########################################################################
####
###########################################################################
####
#
# SERVICE TEMPLATES
#
###########################################################################
####
###########################################################################
####

# Generic service definition template - This is NOT a real service, just a
template!

# generic service template definition
define service{
name generic-service ; The 'name' of
this service template
active_checks_enabled 1 ; Test actif (via
Nagios)
passive_checks_enabled 0 ; Test passif (via
NRPE/nsclient...)
parallelize_check 1 ; Active service
checks should be parallelized (disabling this can lead to major performance
problems)
obsess_over_service 0 ; We should obsess
over this service (if necessary)
check_freshness 0 ; A utiliser via
des plugins externes (NSCDA)
notifications_enabled 1 ; Les notifications
sont actives
event_handler_enabled 1 ; Le gestionnaire
dvnement est il active
flap_detection_enabled 1 ; "Flap" ou qui
oscille
process_perf_data 1 ; Data
complmentaire (souvent utilise dans les graphes)
retain_status_information 1 ; garde en
rtention les donnes (re demarrage de Nagios)
retain_nonstatus_information 1 ; Nagios peut
garder en retention des variables de conf, si problme il faut placer cette
valeur zero
notification_interval 0 ; Notifications sur
changement de statut.
is_volatile 0 ;
check_period 24x7 ; priode de
tests/notification
normal_check_interval 5 ; Toutes les 5 mn
retry_check_interval 1 ; test /1 mn aprs
changement d'etat (voir avec "interval length")
max_check_attempts 1 ; Nbr de fois que
Nagios va tenter de contrler lhte si ltat est NOK, suivi d'une
notification. Vide=rien
notification_period 24x7
notification_options w,u,c,r
contact_groups admins
register 0 ; DONT REGISTER
THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}

# Local service definition template - This is NOT a real service, just a
template!

define service{
name local-service ; The name of
this service template
use generic-service ; Inherit
default values from the generic-service definition
max_check_attempts 4 ; Re-check the
service up to 4 times in order to determine its final (hard) state
normal_check_interval 5 ; Check the
service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the
service every minute until a hard state can be determined
register 0 ; DONT REGISTER
THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
Chapter 6. Compiler et installer NRPE
Table of Contents
Son utilisation
Compilation
La configuration
Le fichier /etc/default/nagios-nrpe-server
Le fichier /etc/nagios/nrpe.cfg
Lancer NRPE
NRPE cot Nagios
Son utilisation
Son utilisation est simple : savoir que ce serveur est destin Gnu/Linux. Il n'est pas
possible d'interroger des services sur une machine distante sans un additif quelconque. Il
existe pour Nagios une formule via SSH qui fonctionne, mais aussi via NRPE. C'est cette
formule qui sera utilise et explique. Le serveur Nagios demandera au serveur client de
raliser des commandes sa place, et de lui retourner les rsultats. Les commandes, vers le
serveur NRPE, peuvent comporter des arguments. Les arguments peuvent tre dfinis avec
prcision au niveau du client. C'est aussi cette solution que j'ai adopte. Dans un premier
temps, elle vite de surcharger Nagios par des paramtres spcifiques, alors qu'une commande
gnrique suffit. Au niveau de la scurit, le transfert de ces variables peut poser un problme,
surtout si vous n'utilisez pas SSL (comme moi).
Au sujet de SSL, NRPE peut communiquer avec ce protocole pour scuriser les connexions.
Personnellement je n'ai pas opt pour cette solution.
Compilation
Pour tlcharger : Sourceforge-NRPE.
Il faut se placer dans le rpertoire puis lancer la compilation via cette commande :
./configure --prefix=/usr/local/nagios --localstatedir=/var/nagios --
sysconfdir=/etc/nagios \
--with-nrpe-user=nagios --with-nrpe-grp=nagioscmd --
infodir=/usr/share/info --mandir=/usr/share/man \
--with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
La dernire ligne est importante surtout si rencontrez l'erreur suivante :
checking for SSL libraries... configure: error: Cannot find ssl libraries
Tout est mentionn :
*** Generating DH Parameters for SSL/TLS ***
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
........................+.......+........+......+........+...+..........+..
....++*++*++*++*++*++*
checking for Kerberos include files... could not find include files
checking for perl... /usr/bin/perl
configure: creating ./config.status
config.status: creating Makefile
config.status: creating subst
config.status: creating src/Makefile
config.status: creating package/solaris/Makefile
config.status: creating init-script
config.status: creating init-script.debian
config.status: creating init-script.suse
config.status: creating nrpe.spec
config.status: creating sample-config/nrpe.cfg
config.status: creating sample-config/nrpe.xinetd
config.status: creating include/config.h
config.status: include/config.h is unchanged
configure: WARNING: unrecognized options: --with-nrpe-grp

*** Configuration summary for nrpe 2.14 12-21-2012 ***:

General Options:
-------------------------
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios
Ensuite il faut lancer la commande make all && make install plugin && make install-
daemon && make install-daemon-config && , cette tape est rapide. Aprs et
manuellement il faut copier les excutables qui se trouvent dans le rpertoire src vers le
rpertoire suivant: (/usr/local/nagios/bin).
La configuration
J'avoue avoir pass un certain temps avant d'apercevoir mes tats en OK. En se servant de
mes fichiers cette tape est courte.
Le fichier /etc/default/nagios-nrpe-server
Ce fichier est facile rgler, il ne pose pas de problme.
# defaults file for nagios-nrpe-server
# (this file is a /bin/sh compatible fragment)

# DAEMON_OPTS
# -n = sans SSL
DAEMON_OPTS="-n"

NICENESS=5

# INETD is if you want to run the server via inetd (default=0, run as
daemon)
INETD=0
Le fichier /etc/nagios/nrpe.cfg
Ce fichier a t l'un de mes problmes. Avec une Debian en version 7, la commande sudo
n'est plus incluse par dfaut. Le fichier /etc/sudousers est donc galement absent; en
consquence il ne faut pas activer la ligne # command_prefix=/usr/bin/sudo , au risque de
voir le message Unable to read output. Le cas chant il suffit d'abord de tester sans la
commande sudo puis adapter ou pas.
Rien de bien spcial dans ce fichier, il est important de tester les commandes avant de les
placer dfinitivement. Au moindre problme, il faut passer en mode dbogage et rechercher
l'erreur. NRPE utilise le fichier/etc/hosts.allow, il est donc recommand d'y placer
l'adresse IP du serveur Nagios.
NRPE crit toutes ses historiques dans le fichier /var/log/syslog, pour mmoire.
###########################################################################
##
# Sample NRPE Config File
# Written by: Ethan Galstad (nagios@nagios.org)
#
# Last Modified: 11-23-2007
#
# NOTES:
# This is a sample configuration file for the NRPE daemon. It needs to be
# located on the remote host that is running the NRPE daemon, not the host
# from which the check_nrpe client is being executed.
###########################################################################
##

# LOG FACILITY
log_facility=daemon

# PID FILE
pid_file=/run/nagios/nrpe.pid

# PORT NUMBER vrifier/modifier le fichier /etc/services si besoin
server_port=5666

# SERVER ADDRESS
# Adresse IP du serveur, chaque client de Nagios est serveur NRPE, c'est
l'@IP d'coute donc pas "127.0.0.1"

server_address=192.168.1.4

# NRPE USER
nrpe_user=nagios
nrpe_group=nagios

# NOTE: c'est l'@IP de nagios, pour plusieurs IP il faut placer une virgule
# possible 192.168.1.0/24
allowed_hosts=192.168.1.2

# COMMAND ARGUMENT PROCESSING
# Values: 0=SANS prise en compte de paramtre, 1= AVEC prise en compte

dont_blame_nrpe=0

# COMMAND PREFIX SUDO
#
# nagios ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/
#
# command_prefix=/usr/bin/sudo

# DEBUGGING OPTION
# Values: 0=debugging off, 1=debugging on

debug=0

# COMMAND TIMEOUT
# This specifies the maximum number of seconds that the NRPE daemon will
# allow plugins to finish executing before killing them off.
command_timeout=60

# CONNECTION TIMEOUT
connection_timeout=300

# WEEK RANDOM SEED OPTION
# This directive allows you to use SSL even if your system does not have
# a /dev/random or /dev/urandom (on purpose or because the necessary
patches
# were not applied). The random number generator will be seeded from a file
# which is either a file pointed to by the environment valiable $RANDFILE
# or $HOME/.rnd. If neither exists, the pseudo random number generator will
# be initialized and a warning will be issued.
# Values: 0=only seed from /dev/[u]random, 1=also seed from weak randomness

#allow_weak_random_seed=1

# INCLUDE CONFIG FILE
# This directive allows you to include definitions from an external config
file.

#include=somefile.cfg

# INCLUDE CONFIG DIRECTORY
# This directive allows you to include definitions from config files (with
a
# .cfg extension) in one or more directories (with recursion).

#include_dir=somedirectory
#include_dir=someotherdirectory

# COMMAND DEFINITIONS
#
# Voici des exemples, ne pas hsiter tester sur la machine pour les
rglages...

command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c
30,25,20
command[check_disk]=/usr/lib/nagios/plugins/check_disk -u GB -c 10% -p / -p
/var -p /home
# command[check_var]=/usr/lib/nagios/plugins/check_disk -w GB -c 10% -p
/var
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10
-s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c
200
command[check_http]=/usr/lib/nagios/plugins/check_http_status -w 1 -c 2 -H
127.0.0.1

# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to '1'. This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.

#command[check_users]=/usr/lib/nagios/plugins/check_users -w $ARG1$ -c
$ARG2$
#command[check_load]=/usr/lib/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
#command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$
-p $ARG3$
#command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c
$ARG2$ -s $ARG3$

#
# local configuration:
# if you'd prefer, you can instead place directives here

#include=/etc/nagios/nrpe_local.cfg

#
# you can place your config snipplets into nrpe.d/
# only snipplets ending in .cfg will get included

#include_dir=/etc/nagios/nrpe.d/
Lancer NRPE
En regardant de prs l'excutable NRPE, pour inhiber le protocole SSL il faut utiliser le
paramtre -n, et non --no-ssl.
NRPE - Nagios Remote Plugin Executor
Copyright (c) 1999-2008 Ethan Galstad (nagios@nagios.org)
Version: 2.14
Last Modified: 12-21-2012
License: GPL v2 with exemptions (-l for more info)
SSL/TLS Available: Anonymous DH Mode, OpenSSL 0.9.6 or higher required

***************************************************************
** POSSIBLE SECURITY RISK - TCP WRAPPERS ARE NOT AVAILABLE! **
** Read the NRPE SECURITY file for more information **
***************************************************************

Usage: nrpe [-n] -c config_file mode
Options:
-n = Do not use SSL
config_file = Name of config file to use
mode = One of the following operating modes:
-i = Run as a service under inetd or xinetd
-d = Run as a standalone daemon
-d -s = Run as a subsystem under AIX
NRPE cot Nagios
C'est bien le cot le plus simple ! Il faut installer les plugins spciaux nrpeet c'est tout. Ceci
peut-tre fait via la commande apt-get install nagios-nrpe-plugin. Celui ci installe
juste un script supplmentaire qui servira par la suite check_nrpe, et divers fichiers.
Parmi les fichiers installs il existe de quoi prendre en compte la commande check_nrpe par
le fichier classique command.cfg. Voici ce qu'il faut ajouter :
###########################################################################
####
# N R P E
# nrpe sans ssl
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -n -H $HOSTADDRESS$ -c $ARG1$
}
###########################################################################
#####
Il reste placer les commandes au niveau des services, ce qui donne en exemple :
################### N R P E #######################
define service{
use generic-service
host_name vm-debian
service_description HDD libre
check_command check_nrpe!check_disk
contact_groups admins
}

define service{
use generic-service
host_name vm-debian
service_description Charge
check_command check_nrpe!check_load
contact_groups admins
}
Donc rien de trs compliqu, les commandes sont simples car je ne passe aucun argument:
c'est le client qui fait tout. On relance Nagios. Maintenant je peux superviser toutes les
machines Gnu/Linux. Il est temps de passer du similaire mais pour Windows.
Chapter 7. NsClient
Table of Contents
Tlchargement et installation
Tlchargement et installation
Aprs plusieurs recherches, il existe un site ddi ce projet: http://nsclient.org/nscp/. Le site
est bien fait il est possible de trouver la dernire version, et de la documentation.
Pour tlcharger il faut choisir parmi les versions disponibles ici :
http://nsclient.org/nscp/downloads. Vous avez le choix entre les formats .msi et .zip en
version 32 ou 64 bits. Une fois sur l'hte windows, il faut installer ce package. J'ai
personnellement choisi une installation via un fichier en .msi, cette tape est propre et ne
pose aucun problme. Un menu est cr pour la gestion de Nsclient.
Il faut vrifier que le service NSClient++ (Win32) dmarre automatiquement. Il est aussi
possible d'utiliser les menus. Ensuite vous de rgler le fichier nsclient.ini afin d'viter
qu'il charge tout inutilement. Je n'ai rien fait d'autre, les 3 tests que je fais sur la mmoire, la
charge CPU et l'tat des disques durs fonctionnent. Nanmoins les retours d'informations sont
mes yeux lgers. J'aurais aim plus d'informations.
Mon choix s'est donc port sur le systme NRPE que j'utilise dj pour autre chose. Il est
simple configurer. Il correspond bien mes demandes.
Vis--vis des plateformes Microsoft, je pense qu'il est possible de faire mieux.
Voici mon fichier d'initialisation :
# If you want to fill this file with all avalible options run the following
command:
# nscp settings --generate --add-defaults --load-all
# If you want to activate a module and bring in all its options use:
# nscp settings --activate-module <MODULE NAME> --add-defaults
# For details run: nscp settings --help
# fichier : nsclient.ini

; Undocumented section
[/modules]

; CheckDisk - CheckDisk can check various file and disk related things. The
current version has commands to check Size of hard drives and directories.
CheckDisk = 1

; Event log Checker. - Check for errors and warnings in the event log. This
is only supported through NRPE so if you plan to use only NSClient this
wont help you at all.
CheckEventLog = 1

; Check External Scripts - A simple wrapper to run external scripts and
batch files.
CheckExternalScripts = 1

; Helper function - Various helper function to extend other checks. This is
also only supported through NRPE.
CheckHelpers = 1

; Check NSCP - Checkes the state of the agent
CheckNSCP = 0

; CheckSystem - Various system related checks, such as CPU load, process
state, service state memory usage and PDH counters.
CheckSystem = 1

; CheckWMI - CheckWMI can check various file and disk related things. The
current version has commands to check Size of hard drives and directories.
CheckWMI = 1

; NRPE server - A simple server that listens for incoming NRPE connection
and handles them.
NRPEServer = 1

; NSClient server - A simple server that listens for incoming NSClient
(check_nt) connection and handles them.
; Although NRPE is the preferred method NSClient is fully supported and can
be used for simplicity or for compatibility.
NSClientServer = 0

; Undocumented section
[/settings/default]

; ALLOWED HOSTS - A comaseparated list of allowed hosts. You can use
netmasks (/ syntax) or * to create ranges.
allowed hosts = 192.168.1.2

; PASSWORD - Password used to authenticate againast server
password = mypass

; A list of aliases available. An alias is an internal command that has
been "wrapped" (to add arguments).
; Be careful so you don't create loops (ie check_loop=check_a,
check_a=check_loop)
[/settings/external scripts/alias]

; alias_cpu - Alias for alias_cpu. To configure this item add a section
called: /settings/external scripts/alias/alias_cpu
alias_cpu = checkCPU warn=80 crit=90 time=5m time=1m time=30s

; alias_cpu_ex - Alias for alias_cpu_ex. To configure this item add a
section called: /settings/external scripts/alias/alias_cpu_ex
;alias_cpu_ex = checkCPU warn=$ARG1$ crit=$ARG2$ time=5m time=1m time=30s

; alias_disk - Alias for alias_disk. To configure this item add a section
called: /settings/external scripts/alias/alias_disk
alias_disk = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll
FilterType=FIXED

; alias_disk_loose - Alias for alias_disk_loose. To configure this item add
a section called: /settings/external scripts/alias/alias_disk_loose
;alias_disk_loose = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll
FilterType=FIXED ignore-unreadable

; alias_event_log - Alias for alias_event_log. To configure this item add a
section called: /settings/external scripts/alias/alias_event_log
; alias_event_log = CheckEventLog file=application file=system MaxWarn=1
MaxCrit=1 "filter=generated gt -2d AND
; severity NOT IN ('success', 'informational') AND source != 'SideBySide'"
truncate=800 unique descriptions "syntax=%severity%: %source%: %message%
(%count%)"

; alias_file_age - Alias for alias_file_age. To configure this item add a
section called: /settings/external scripts/alias/alias_file_age
;alias_file_age = checkFile2 filter=out "file=$ARG1$" filter-written=>1d
MaxWarn=1 MaxCrit=1 "syntax=%filename% %write%"

; alias_file_size - Alias for alias_file_size. To configure this item add a
section called: /settings/external scripts/alias/alias_file_size
;alias_file_size = CheckFiles "filter=size > $ARG2$" "path=$ARG1$"
MaxWarn=1 MaxCrit=1 "syntax=%filename% %size%" max-dir-depth=10

; alias_mem - Alias for alias_mem. To configure this item add a section
called: /settings/external scripts/alias/alias_mem
alias_mem = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical
type=virtual type=paged type=page

; alias_process - Alias for alias_process. To configure this item add a
section called: /settings/external scripts/alias/alias_process
alias_process = checkProcState "$ARG1$=started"

; alias_process_count - Alias for alias_process_count. To configure this
item add a section called: /settings/external
scripts/alias/alias_process_count
alias_process_count = checkProcState MaxWarnCount=$ARG2$
MaxCritCount=$ARG3$ "$ARG1$=started"

; alias_process_hung - Alias for alias_process_hung. To configure this item
add a section called: /settings/external scripts/alias/alias_process_hung
;alias_process_hung = checkProcState MaxWarnCount=1 MaxCritCount=1
"$ARG1$=hung"

; alias_process_stopped - Alias for alias_process_stopped. To configure
this item add a section called: /settings/external
scripts/alias/alias_process_stopped
;alias_process_stopped = checkProcState "$ARG1$=stopped"

; alias_sched_all - Alias for alias_sched_all. To configure this item add a
section called: /settings/external scripts/alias/alias_sched_all
;alias_sched_all = CheckTaskSched "filter=exit_code ne 0" "syntax=%title%:
%exit_code%" warn=>0

; alias_sched_long - Alias for alias_sched_long. To configure this item add
a section called: /settings/external scripts/alias/alias_sched_long
;alias_sched_long = CheckTaskSched "filter=status = 'running' AND
most_recent_run_time <-$ARG1$" "syntax=%title% (%most_recent_run_time%)"
warn=>0

; alias_sched_task - Alias for alias_sched_task. To configure this item add
a section called: /settings/external scripts/alias/alias_sched_task
;alias_sched_task = CheckTaskSched "filter=title eq '$ARG1$' AND exit_code
ne 0" "syntax=%title% (%most_recent_run_time%)" warn=>0

; alias_service - Alias for alias_service. To configure this item add a
section called: /settings/external scripts/alias/alias_service
alias_service = checkServiceState CheckAll

; alias_service_ex - Alias for alias_service_ex. To configure this item add
a section called: /settings/external scripts/alias/alias_service_ex
alias_service_ex = checkServiceState CheckAll "exclude=Net Driver HPZ12"
"exclude=Pml Driver HPZ12" exclude=stisvc

; alias_up - Alias for alias_up. To configure this item add a section
called: /settings/external scripts/alias/alias_up
alias_up = checkUpTime MinWarn=1d MinWarn=1h

; alias_updates - Alias for alias_updates. To configure this item add a
section called: /settings/external scripts/alias/alias_updates
alias_updates = check_updates -warning 0 -critical 0

; alias_volumes - Alias for alias_volumes. To configure this item add a
section called: /settings/external scripts/alias/alias_volumes
alias_volumes = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes
FilterType=FIXED

; alias_volumes_loose - Alias for alias_volumes_loose. To configure this
item add a section called: /settings/external
scripts/alias/alias_volumes_loose
alias_volumes_loose = CheckDriveSize MinWarn=10% MinCrit=5%
CheckAll=volumes FilterType=FIXED ignore-unreadable

; default - Alias for default. To configure this item add a section called:
/settings/external scripts/alias/default
default =
Et voici le retour des tests du cot de Nagios :
OK CPU Load ok.
OK: All drives within bounds.
OK: physical memory:Total: 2.97G-Used: 376M(12%)-Free: 2.6G(88%),virtual
memory:Total:2G-Used:250M(12%)-Free:1.76G(88%),page file:Total:4.81G-
Used:266M(5%)-Free:4.55G(95%)

A l'exception de la dernire ligne qui est trop complte, les autres tests ne retournent pas
grand chose de prcis.
Chapter 8. Le format graphique GD2
Table of Contents
Ce format est utilis par plusieurs applications, dont Nagios, mais hlas pas par Gimp. Il
est ncessaire d'utiliser un paquet supplmentaire libgd-tools. Une fois ce paquet install,
vous avez accs la commande pngtogd2.
Voici un exemple :
pngtogd2 file.png file.gd2 0 1
Il est indiqu que l'utilisation du format GD2 est prfrable pour Nagios? Ceci lui permet un
traitement plus rapide. Son utilisation possible hormis l'image de fond comprise dans le
fichier cgi.cfg est faisable dans la dfinition des hosts, ce qui donne icon_image
exemple.png et statusmap_image exemple.gd2
Chapter 9. Nagios et Vmware (ESXi)
Table of Contents
Les dpendances :
En se rendant sur le site de Nagios exchange-vmware exchange et en cherchant des plugins
pour Vmware on peut percevoir qu'il en existe de nombreux. J'ai regard avec attention tous
les plugins intressants. Un seul a vraiment attir mon attention : il s'agit de ce projet :
Vmware ESX & VM host; il a pour moi l'avantage de rassembler beaucoup de commandes.
Le script est maintenu par la socit OP5. Hlas pour moi faute d'un Vcenter proche, je n'ai
pas pu le tester.
Les dpendances :
Ce n'est pas forcment le plugin le plus simple installer, il est ncessaire d'installer tout :
apt-get install libmath-calc-units-perl libclass-methodmaker-perl
libnagios-object-perl libnagios-plugin-perl libnet-ssleay-perl \
libcompress-zlib-perl libhtml-parser-perl liburi-perl libconfig-tiny-perl
libparams-validate-perl libconvert-units-perl
Une fois ceci install, il est temps d'aller chercher les sources du plugin via cette commande :
git clone git://git.op5.org/nagios/op5plugins.git op5plugins
Placez vous dans le rpertoire op5plugins: il suffit de rcuprer le plugin
check_vmware_api.pl, puis de le placer parmi les autres plugins. Il existe une page sur le
site d'OP5 qui explique tout cela :
https://kb.op5.com/pages/viewpage.action?pageId=3801484
Usage: %s -D <data_center> | -H <host_name> [ -C <cluster_name> ] [ -N
<vm_name> ]
-u <user> -p <pass> | -f <authfile>"
-l <command> [ -s <subcommand> ] [ -T <timeshift> ] [ -i <interval> ]"
[ -x <black_list> ] [ -o <additional_options> ]"
[ -t <timeout> ] [ -w <warn_range> ] [ -c <crit_range> ]"
[ -V ] [ -h ]',
La version allonge de toutes ces commandes nous montrent ces vastes possibilits :
." VM specific :"
* cpu - shows cpu info"
+ usage - CPU usage in percentage"
+ usagemhz - CPU usage in MHz"
+ wait - CPU wait time in ms"
+ ready - CPU ready time in ms"
^ all cpu info(no thresholds)"
* mem - shows mem info"
+ usage - mem usage in percentage"
+ usagemb - mem usage in MB"
+ swap - swap mem usage in MB"
+ swapin - swapin mem usage in MB"
+ swapout - swapout mem usage in MB"
+ overhead - additional mem used by VM Server in MB"
+ overall - overall mem used by VM Server in MB"
+ active - active mem usage in MB"
+ memctl - mem used by VM memory control driver(vmmemctl) that
controls ballooning"
^ all mem info(except overall and no thresholds)"
* net - shows net info"
+ usage - overall network usage in KBps(Kilobytes per Second)"
+ receive - receive in KBps(Kilobytes per Second)"
+ send - send in KBps(Kilobytes per Second)"
^ all net info(except usage and no thresholds)"
* io - shows disk I/O info"
+ usage - overall disk usage in MB/s"
+ read - read latency in ms (totalReadLatency.average)"
+ write - write latency in ms (totalWriteLatency.average)"
^ all disk io info(no thresholds)"
* runtime - shows runtime info"
+ con - connection state"
+ cpu - allocated CPU in MHz"
+ mem - allocated mem in MB"
+ state - virtual machine state (UP, DOWN, SUSPENDED)"
+ status - overall object status (gray/green/red/yellow)"
+ consoleconnections - console connections to VM"
+ guest - guest OS status, needs VMware Tools"
+ tools - VMWare Tools status"
+ issues - all issues for the host"
^ all runtime info(except con and no thresholds)"
Host specific :"
* cpu - shows cpu info"
+ usage - CPU usage in percentage"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ usagemhz - CPU usage in MHz"
o quickstats - switch for query either PerfCounter values or
Runtime info"
^ all cpu info"
o quickstats - switch for query either PerfCounter values or
Runtime info"
* mem - shows mem info"
+ usage - mem usage in percentage"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ usagemb - mem usage in MB"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ swap - swap mem usage in MB"
o listvm - turn on/off output list of swapping VM's"
+ overhead - additional mem used by VM Server in MB"
+ overall - overall mem used by VM Server in MB"
+ memctl - mem used by VM memory control driver(vmmemctl) that
controls ballooning"
o listvm - turn on/off output list of ballooning VM's"
^ all mem info(except overall and no thresholds)"
* net - shows net info"
+ usage - overall network usage in KBps(Kilobytes per Second)"
+ receive - receive in KBps(Kilobytes per Second)"
+ send - send in KBps(Kilobytes per Second)"
+ nic - makes sure all active NICs are plugged in"
^ all net info(except usage and no thresholds)"
* io - shows disk io info"
+ aborted - aborted commands count"
+ resets - bus resets count"
+ read - read latency in ms (totalReadLatency.average)"
+ write - write latency in ms (totalWriteLatency.average)"
+ kernel - kernel latency in ms"
+ device - device latency in ms"
+ queue - queue latency in ms"
^ all disk io info"
* vmfs - shows Datastore info"
+ (name) - free space info for datastore with name (name)"
o used - output used space instead of free"
o breif - list only alerting volumes"
o regexp - whether to treat name as regexp"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
^ all datastore info"
o used - output used space instead of free"
o breif - list only alerting volumes"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
* runtime - shows runtime info"
+ con - connection state"
+ health - checks cpu/storage/memory/sensor status"
o listitems - list all available sensors(use for listing purpose
only)"
o blackregexpflag - whether to treat blacklist as regexp"
x - blacklist status objects"
+ storagehealth - storage status check"
o blackregexpflag - whether to treat blacklist as regexp"
x - blacklist status objects"
+ temperature - temperature sensors"
o blackregexpflag - whether to treat blacklist as regexp"
x - blacklist status objects"
+ sensor - threshold specified sensor"
+ maintenance - shows whether host is in maintenance mode"
+ list(vm) - list of VMWare machines and their statuses"
+ status - overall object status (gray/green/red/yellow)"
+ issues - all issues for the host"
x - blacklist issues"
^ all runtime info(health, storagehealth, temperature and sensor are
represented as one value and no thresholds)"
* service - shows Host service info"
+ (names) - check the state of one or several services specified by
(names), syntax for (names):<service1>,<service2>,...,<serviceN>"
^ show all services"
* storage - shows Host storage info"
+ adapter - list bus adapters"
x - blacklist adapters"
+ lun - list SCSI logical units"
x - blacklist LUN's"
+ path - list logical unit paths"
x - blacklist paths"
^ show all storage info"
* uptime - shows Host uptime"
o quickstats - switch for query either PerfCounter values or
Runtime info"
* device - shows Host specific device info"
+ cd/dvd - list vm's with attached cd/dvd drives"
o listall - list all available devices(use for listing purpose
only)"
DC specific :"
* cpu - shows cpu info"
+ usage - CPU usage in percentage"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ usagemhz - CPU usage in MHz"
o quickstats - switch for query either PerfCounter values or
Runtime info"
^ all cpu info"
o quickstats - switch for query either PerfCounter values or
Runtime info"
* mem - shows mem info"
+ usage - mem usage in percentage"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ usagemb - mem usage in MB"
o quickstats - switch for query either PerfCounter values or
Runtime info"
+ swap - swap mem usage in MB"
+ overhead - additional mem used by VM Server in MB"
+ overall - overall mem used by VM Server in MB"
+ memctl - mem used by VM memory control driver(vmmemctl) that
controls ballooning"
^ all mem info(except overall and no thresholds)"
* net - shows net info"
+ usage - overall network usage in KBps(Kilobytes per Second)"
+ receive - receive in KBps(Kilobytes per Second)"
+ send - send in KBps(Kilobytes per Second)"
^ all net info(except usage and no thresholds)"
* io - shows disk io info"
+ aborted - aborted commands count"
+ resets - bus resets count"
+ read - read latency in ms (totalReadLatency.average)"
+ write - write latency in ms (totalWriteLatency.average)"
+ kernel - kernel latency in ms"
+ device - device latency in ms"
+ queue - queue latency in ms"
^ all disk io info"
* vmfs - shows Datastore info"
+ (name) - free space info for datastore with name (name)"
o used - output used space instead of free"
o breif - list only alerting volumes"
o regexp - whether to treat name as regexp"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
^ all datastore info"
o used - output used space instead of free"
o breif - list only alerting volumes"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
* runtime - shows runtime info"
+ list(vm) - list of VMWare machines and their statuses"
+ listhost - list of VMWare esx host servers and their statuses"
+ listcluster - list of VMWare clusters and their statuses"
+ tools - VMWare Tools status"
x - blacklist VM's"
+ status - overall object status (gray/green/red/yellow)"
+ issues - all issues for the host"
x - blacklist issues"
^ all runtime info(except cluster and tools and no thresholds)"
* recommendations - shows recommendations for cluster"
+ (name) - recommendations for cluster with name (name)"
^ all clusters recommendations"
Cluster specific :"
* cpu - shows cpu info"
+ usage - CPU usage in percentage"
+ usagemhz - CPU usage in MHz"
^ all cpu info"
* mem - shows mem info"
+ usage - mem usage in percentage"
+ usagemb - mem usage in MB"
+ swap - swap mem usage in MB"
o listvm - turn on/off output list of swapping VM's"
+ memctl - mem used by VM memory control driver(vmmemctl) that
controls ballooning"
o listvm - turn on/off output list of ballooning VM's"
^ all mem info(plus overhead and no thresholds)"
* cluster - shows cluster services info"
+ effectivecpu - total available cpu resources of all hosts within
cluster"
+ effectivemem - total amount of machine memory of all hosts in the
cluster"
+ failover - VMWare HA number of failures that can be tolerated"
+ cpufainess - fairness of distributed cpu resource allocation"
+ memfainess - fairness of distributed mem resource allocation"
^ only effectivecpu and effectivemem values for cluster services"
* runtime - shows runtime info"
+ list(vm) - list of VMWare machines in cluster and their statuses"
+ listhost - list of VMWare esx host servers in cluster and their
statuses"
+ status - overall cluster status (gray/green/red/yellow)"
+ issues - all issues for the cluster"
x - blacklist issues"
^ all cluster runtime info"
* vmfs - shows Datastore info"
+ (name) - free space info for datastore with name (name)"
o used - output used space instead of free"
o breif - list only alerting volumes"
o regexp - whether to treat name as regexp"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
^ all datastore info"
o used - output used space instead of free"
o breif - list only alerting volumes"
o blacklistregexp - whether to treat blacklist as regexp"
x - blacklist VMFS's"
T (value) - timeshift to detemine if we need to refresh"
Copyright (c) 2008-2013 op5 AB,
Avant de tester tout cela avec Nagios, il faut crer un compte dans le Vcenter en
LECTURE uniquement(pour ce plugin). Ces paramtres seront utiliss par les variables: u
<user> -p <pass>. Il est possible d'ajouter dans Nagios $USER20$=supervision
$USER21$=MotDePasse depuis le fichier /etc/nagios/resource.cfg pour faciliter la
configuration.
A tester
define command {
command_name check_esx_cpu
command_line $USER1$/check_vmware_api.pl -H $ARG1$ -u $USER20$ -p
$USER21$ -l cpu -s usage -w 80 -c 90
}
Autres commandes traiter :
check_esx3_host_cpu_usage $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l cpu -s usage -w $ARG1$ -c $ARG2$
check_esx3_host_mem_usage $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l mem -s usage -w $ARG1$ -c $ARG2$
check_esx3_host_swap_usage $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l mem -s swap -w $ARG1$ -c $ARG2$
check_esx3_host_net_usage $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l net -s usage -w $ARG1$ -c $ARG2$
check_esx3_host_vmfs $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l vmfs -s $ARG1$ -w $ARG2$: -c $ARG3$:
check_esx3_host_runtime_status $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l runtime -s status
check_esx3_host_runtime_issues $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l runtime -s issues
check_esx3_host_io_read $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l io -s read -w $ARG1$ -c $ARG2$
check_esx3_host_io_write $USER1$/check_esx3 -H $HOSTADDRESS$ -u
$USER21$ -p $USER22$ -l io -s write -w $ARG1$ -c $ARG2$

Chapter 10. NagiosGraph
Table of Contents
Rcupration des sources
Installation
Configurer un service.
Vrification du bon fonctionnement.
Ajouter le menu Nagiosgraph dans l'interface
Le fichier map
Pourquoi est-ce compliqu ?
Nous avons maintenant un nouveau Nagios. Il manque tout de mme une option que
Nagios ne fait pas d'origine, c'est la rcupration des donnes des divers plugins pour en faire
des graphiques.
Aprs maintes recherches, plusieurs projets existent, certains semblent ne plus tre soutenus.
J'ai retenu Nagiosgraph, dans sa dernire version. Ce projet est bien cot, et les dernires
mises jour semblent ne pas tre vieilles; le forum possde des dpts trs rcents. Cette
version est compatible avec mon Nagios en version 4.0.x.
Rcupration des sources
En allant directement sur le site il est possible d'installer des versions adaptes diffrentes
distributions Gnu/Linux; hlas elles datent toutes de 2011. La solution, une fois de plus,
consiste rcuprer les dernires sources avec un outil comme subversion ou gitub. C'est
gitub qui sera utilis. Il suffit d'aller sur cette page :
http://sourceforge.net/p/nagiosgraph/git/ci/master/tree/, puis de lancer cette commande : git
clone git://git.code.sf.net/p/nagiosgraph/git nagiosgraph-git (expliqu sur le site).
Installation
Il est ncessaire de tlcharger si besoin les dpendances suivantes : apt-get install
libcgi-pm-perl librrds-perl libgd-gd2-perl libgd-gd2-perl libnagios-object-
perl. Ensuite il faut se servir du fichier INSTALL. Tout est indiqu.
La commande ./install.pl est bien faite, pas--pas le script vous demande ventuellement de
changer les paramtres. Une fois cette tape ralise, ce programme vous fait un rsum dont
voici les lignes les plus importantes :
configuration:
ng_prefix /usr/local/nagiosgraph
ng_etc_dir /etc/nagiosgraph
ng_bin_dir /usr/local/nagiosgraph/bin
ng_cgi_dir /usr/local/nagiosgraph/cgi
ng_doc_dir /usr/local/nagiosgraph/doc
ng_examples_dir /usr/local/nagiosgraph/examples
ng_www_dir /usr/local/nagiosgraph/share
ng_util_dir /usr/local/nagiosgraph/util
ng_var_dir /usr/local/nagiosgraph/var
ng_rrd_dir /usr/local/nagiosgraph/var/rrd
ng_log_dir /var/log/nagiosgraph
ng_log_file /var/log/nagiosgraph/nagiosgraph.log
ng_cgilog_file /var/log/nagiosgraph/nagiosgraph-cgi.log
ng_url /nagiosgraph
ng_cgi_url /nagiosgraph/cgi-bin
ng_css_url /nagiosgraph/nagiosgraph.css
ng_js_url /nagiosgraph/nagiosgraph.js
nagios_cgi_url /nagios/cgi-bin
nagios_perfdata_file /tmp/perfdata.log
nagios_user nagios
www_user www-data

Warning
Bien faire attention la variable ng_etc_dir(2eme ligne) qui doit comporter le rpertoire
nagiosgraph.Sinon tout est pos l ou on ne l'attend pas.
Ce programme ne fait que crer des rpertoires, copier des fichiers puis appliquer les droits
ncessaires. Il est donc ncessaire d'adapter manuellement les divers fichiers de configuration
et galement de copier des fichiers.
Bien vrifier que vous avez un rpertoire /etc/nagiosgraph; celui ci comporte les fichiers
de configuration essentiels.
Ensuite il suffit de faire les commandes suivantes, lesquelles sont toutes extraites du fichier
INSTALL.
Il faut copier les fichiers CSS et JavaScript vers les rpertoires suivants:
cp share/nagiosgraph.css /usr/local/nagios/share
cp share/nagiosgraph.js /usr/local/nagios/share
Il faut diter le fichiers /etc/nagiosgraph/nagiosgraph.conf et vrifier la cohrence des
donnes suivantes:
logfile = /var/log/nagiosgraph.log
cgilogfile = /var/nagiosgraph/log/nagiosgraph-cgi.log
perflog = /var/nagios/perfdata.log
rrddir = /var/nagiosgraph/rrd
mapfile = /etc/nagiosgraph/map
nagiosgraphcgiurl = /nagios3/cgi-bin
javascript = /nagios3/nagiosgraph.js
stylesheet = /nagios3/nagiosgraph.css
Il est ncessaire de modifier les droits sur les fichiers suivants. Le principe des droits est assez
simple, c'est soit l'utilisateur/groupe nagios ou l'utilisateur/groupe www-data (apache).
mkdir /var/nagiosgraph/rrd
chown nagios /var/nagiosgraph/rrd
chmod 755 /var/nagiosgraph/rrd

touch /var/nagiosgraph/log/nagiosgraph.log
chown nagios /var/nagiosgraph/log/nagiosgraph.log
chmod 644 /var/nagiosgraph/log/nagiosgraph.log

touch /var/nagiosgraph/log/nagiosgraph-cgi.log
chown www-data /var/nagiosgraph/log/nagiosgraph-cgi.log
chmod 644 /var/nagiosgraph/log/nagiosgraph-cgi.log

chown nagios /var/nagiosgraph
chmod 755 /var/nagiosgraph
Il faut adapter le fichier nagios.cfg vis--vis de Nagiosgraph, en modifiant les lignes
suivantes :
process_performance_data=1

service_perfdata_file=/var/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

Warning
En thorie, les lignes prcdentes sont incluses la fin du fichier nagios.cfg, vous de
faire en sorte d'viter des doublons dans ce fichier.
Le fichier commands.cfg doit galement tre modifi pour Nagiosgraph. Celle ci fonctionne
trs bien (il existe sur le NET plusieurs versions):
define command {
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/insert.sh
"$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPE
RFDATA$"
}
A ce stade tout est presque fonctionnel; il est possible de lancer Nagios, mais avec les
paramtres actuels rien de visible ne sera peru. Il est ncessaire pour cela de configurer les
htes et surtout les services pour apprcier Nagiosgraph. C'est l'tape suivante.
Avec la dernire version d'Ubuntu je n'ai plus les images qui apparaissent lors de la souris au
dessus de licne Nagiosgraph (...).

Note
Je ne montre aucun exemple de prise en compte d'un hte par Nagiosgraph, je me suis
focalis sur les services, qui sont pour moi les plus importants pour les historiques et les
statuts. De plus la supervision d'un hte est simple faire.
Configurer un service.
Les manipulations prcdentes taient simples, nous allons attaquer une autre tape qui
parfois peut se compliquer.
Nagiosgraph conseille de faire une dclaration d'un template cet effet. Personnellement
j'ai arrt ce systme car tous les services tests t pris en compte (erreur de ma part (?)).
Ceci peut suffire pour certains. J'ai fait diffremment.
Solution globale
Pour y parvenir via un template globale, il suffit alors de rajouter dans cette situation les
mots ,graphed-service (exemple) la suite de la ligne use appropries. Les 2 services sont
alors spars par une virgule !
define service {
name graphed-service
; cette ligne t coup volontairement pour ce document.
action_url /nagiosgraph/cgi-
bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$'
onMouseOver='showGraphPopup(this)'
onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgi-
bin/showgraph.cgi?host
=$HOSTNAME$&service=$SERVICEDESC$
register 0
}
Solution individuelle
Pour viter une prise en compte globale des services par Nagiosgraph, il suffit de rajouter
uniquement la ligne action_url dans la dclaration du service.
Voici comment faire une prise en compte d'un service par Nagiosgraph de faon
individuelle: la ligne concerne a t volontairement coupe pour s'adapter la largeur du
document :
define service {
name NTP
use local-service
action_url /nagiosgraph/cgi-
bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$'
onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()'
rel='/nagiosgraph/cgi-
bin/showgraph.cgi?host=$HOSTNAME$&service=$SERVICEDESC$
...
}
En principe, votre Nagios est dsormais capable de vous montrer des graphiques; ce titre la
procdure pour crer les graphes est relativement longue. Par dfaut, le cycle de cration des
graphiques est bas sur 5 minutes, donc ne rien attendre avant 2 cycles. videmment cette
variable est rglable, mais c'est aussi vouloir paramtrer Nagiosgraph finement. De plus il est
indispensable de bien connatre les mandres de rrdtool pour cela.
Il est ncessaire de modifier encore quelques fichiers pour finir.
Si ncessaire, il faut copier licne qui correspond aux graphiques de Nagiosgraph dans le
bon rpertoire. Me concernant, cette opration n'tait pas utile.
mv /usr/local/nagios/share/images/action.gif
/usr/local/nagios/share/images/action.gif-orig
cp share/graph.gif /usr/local/nagios/share/images/action.gif
Il faut apporter Nagiosgraph de quoi prendre en compte les javascripts qui apportent un petit
plus dans les graphiques, comme la slection d'une zone.
vi share/nagiosgraph.ssi
<script type="text/javascript"
src="/nagiosgraph/nagiosgraph.js"></script>

src="/nagiosgraph/nagiosgraph.js" -> src=""
cp share/nagiosgraph.ssi /usr/local/nagios/share/ssi/common-header.ssi
Les modifications qui suivent apportent dans Nagios un menu supplmentaire pour
Nagiosgraph; il sera situ du cot gauche comme les autres. Il suffit d'diter le fichier
/usr/local/nagios/share/side.php et de modifier/insrer les lignes suivantes :

Warning
Il s'agit ici de mes paramtres personnaliss, les lignes de rfrences insrer sont
prsentes dans le fichier README de Nagiosgraph.
<li><a href="<?php echo $cfg["cgi_base_url"];?>/outages.cgi" target="<?php
echo $link_target;?>">Network Outages</a></li>
</ul>
</li>
</ul>

<div class="navsection">
<div class="navsectiontitle">Nagiosgraph</div>
<div class="navsectionlinks">
<ul class="navsectionlinks">
<li><a href="<?php echo $cfg["cgi_base_url"];?>/trends.cgi" target="<?php
echo $link_target;?>">Trends</a></li>
<li><a href="/nagiosgraph/cgi-bin/show.cgi" target="main">Graphs++</a></li>
<li><a href="/nagiosgraph/cgi-bin/showhost.cgi" target="main">Host</a></li>
<li><a href="/nagiosgraph/cgi-bin/showservice.cgi"
target="main">Service</a></li>
<!-- <li><a href="/nagiosgraph/cgi-bin/showgroup.cgi"
target="main">Group</a></li> -->
</ul>

<!-- ************* suppression de la recherche ***************
<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"];?>/status.cgi"
target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem">
</fieldset>
</form>
</div>
-->

</div>
<div class="navsection">
<div class="navsectiontitle">Reports</div>
Il est encore ncessaire de faire prendre en compte Nagiosgraph par Apache. Il suffit de
rajouter dans le rpertoire conf.d le fichier nagiosgraph.conf avec les lignes suivantes :
ScriptAlias /nagiosgraph/cgi-bin /usr/local/nagiosgraph/cgi-bin
<Directory "/usr/local/nagiosgraph/cgi-bin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Alias /nagiosgraph "/usr/local/nagiosgraph/share"
<Directory "/usr/local/nagiosgraph/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
A ce stade, Apache et Nagios doivent tre relancs pour la prise en compte des diverses
modifications.
Vrification du bon fonctionnement.
Depuis l'interface graphique de Nagios vous devez apercevoir des icnes comportants un
graphique ( ). Il suffit de placer la souris pour apercevoir en thorie un dbut de graphique.
Il est galement possible de cliquer sur ce mme icne pour apercevoir plusieurs graphiques
pour le service concern.
Quoiqu'il en soit il est important de constater au moins la prsence d'un icne graphique,
ensuite c'est une excellente chose que de regarder l'ensemble des divers paramtres de
Nagiosgraph au travers du lien suivant :
showconfig

Note
J'insiste une fois de plus sur l'importance du fichier README.html prsent dans les
sources, c'est la rfrence !
Ajouter le menu Nagiosgraph dans l'interface
<li><a href="<?php echo $cfg["cgi_base_url"];?>/outages.cgi" target="<?php
echo $link_target;?>">Network Outages</a></li>
</ul>
</li>
</ul>

<div class="navsection">
<div class="navsectiontitle">Nagiosgraph</div>
<div class="navsectionlinks">
<ul class="navsectionlinks">
<li><a href="<?php echo $cfg["cgi_base_url"];?>/trends.cgi" target="<?php
echo $link_target;?>">Trends</a></li>
<li><a href="/nagiosgraph/cgi-bin/show.cgi" target="main">Graphs++</a></li>
<li><a href="/nagiosgraph/cgi-bin/showhost.cgi" target="main">Host</a></li>
<li><a href="/nagiosgraph/cgi-bin/showservice.cgi"
target="main">Service</a></li>
<!-- <li><a href="/nagiosgraph/cgi-bin/showgroup.cgi"
target="main">Group</a></li> -->

</ul>

<!--
<div class="navbarsearch">
<form method="get" action="<?php echo $cfg["cgi_base_url"];?>/status.cgi"
target="<?php echo $link_target;?>">
<fieldset>
<legend>Quick Search:</legend>
<input type='hidden' name='navbarsearch' value='1'>
<input type='text' name='host' size='15' class="NavBarSearchItem">
</fieldset>
</form>
</div>

-->

</div>
<div class="navsection">
<div class="navsectiontitle">Reports</div>
Le fichier map
Ce fichier map pour Nagiosgraph est un fichier de configuration essentiel. Nanmoins la
prise en compte d'un service peut s'avrer un calvaire. Je tiens prciser que je ne mets pas en
cause le programme ou mme l'quipe de programmeurs. Ce programme est trs bien fait, par
contre la prise en compte d'un service via ce fichier n'est pas toujours ais.
Pour s'aider paramtrer ce fichier, il existe sur le NET un excellent site avec de nombreux
exemples:nagios.frank4dd.com
Voici titre d'exemple mon fichier MAP, dont toutes les dclarations ne servent pas
forcment.
# File: </path/to/nagiosgraph>/etc/map
# Desc: Nagiosgraph map file, perl rules to extract graph data from
Nagios
# host and performance data sent to
</path/to/nagiosgraph>/log/<file>
# Last: 20100303 support@frank4dd.com
###########################################################################
####
# INSTRUCTIONS:
#
#
#
# This file contains several examples of service types. Edit this file to
#
# add more service types. The data string from Nagios is in $_ . Use
#
# regular expressions to identify and extract data like the examples below
#
# below. Match on either output: or perfdata: . The code is pure perl,
#
# that will be run inside an eval{}. Results are expected in @s. The
general #
# format is:
#
#
#
# /output|perfdata:<servicetype> <key>=<value> <key2=value2> .../
#
# and push @s, [ <databasename>,
#
# [ <key>, GAUGE|DERIVE, <value> ],
#
# [ <key2>, GAUGE|DERIVE, <value2> ],
#
# [ . . . ],
#
# [ . . . ] ];
#
#
#
# More advanced code is possible, as long as the resulting data structure
is #
# correct.
#
###########################################################################
####

# 01 ----------------------------------------------------------------------
-- #
# Data to graph: RoundTrip Time measured by Ping
#
# Service type: check-host-alive (ping)
#
# Nagios plugin: check_ping
#
# Nagios output: ||PING OK - Packet loss = 0%, RTA = 1.84 ms
#
# -------------------------------------------------------------------------
-- #

/output:PING.*?(\d+)%.+?(\d+)\sms/
and push @s, [ 'ping',
[ 'rta' , GAUGE, $2 ],
[ 'Perte', GAUGE, $1 ] ];

# 03 ----------------------------------------------------------------------
-- #
# Data to graph: Linux CPU load
#
# Service type: load-check
#
# Nagios plugin: check_snmp_load.pl
#
# Nagios output: ||Load : 0.48 0.62 0.40 : OK||
#
# -------------------------------------------------------------------------
-- #

/output:.*Charge moyenne: (\d+\.\d+), (\d+\.\d+), (\d+\.\d+)/
and push @s, [ 'CPU',
[ '01mn', GAUGE, $1 ],
[ '05mn', GAUGE, $2 ],
[ '15mn', GAUGE, $3 ] ];

# 06 ----------------------------------------------------------------------
-- #
# utilise : check_mem.sh
# output: OK - Libre 60% Libre=2353MB Total=3895MB
#Perfdata: total=3895MB free=2353MB
# \d+ ne fonctionne pas (?) donc il faut \d\d ...

/output:.*(\d\d)%/
and push @s, [ 'MEM' , [ 'Ram' , GAUGE, $1 ] ];

# 07 ----------------------------------------------------------------------
-- #
# utilise : check_temp.pl
# putput: TEMP OK - TEMP:35.0 C - temp1 Temperature OK 35.0 ###
#Perfdata:

/output:.*TEMP:([.0-9]+) C/
and push @s, [ 'TEMP' , [ 'Temp' , GAUGE, $1 ] ];

# 08 ----------------------------------------------------------------------
-- #
# Data to graph: Linux swap check
#
# Service type: swap-memory-check
#
# Nagios plugin: check_swap.pl #
# Nagios output: ||SWAP OK - 100% libre (517 MB sur un total de 517 MB)
|swap=517MB;0;0;0;517
# -------------------------------------------------------------------------
-- #
/output:SWAP.*(\d+)\% libre \((\d+)/
and push @s, [ 'SWAP',
[ 'Max' , GAUGE, $2 ],
[ 'swap', GAUGE, $1 ] ];

# 16 ----------------------------------------------------------------------
-- #
# Data to graph: Check Apache sessions
#
# Service type: apache-load
#
# Nagios plugin: check_apachestatus.pl
#
# Nagios output: OK 0.038933 seconds response time. Idle 5, busy 3, \
#
# open slots 142
#
# Use perfdata: Waiting for Connection=5 Starting Up=0 Reading Request=0 \
#
# Sending Reply=3 Keepalive (read)=0 DNS Lookup=0 Closing \
#
# Connection=0 Logging=0 Gracefully finishing=0 Idle
cleanup=0\#
# Open slot=142 Requests/sec=0.0 B per sec=Ram109.0B B per \
#
# Request=4851.0B
#
# -------------------------------------------------------------------------
-- #
/output:.*([0-9]+\.?[0-9]+).* response time. Idle (\d+), busy (\d+), open
slots (\d+)/
and push @s, [ 'sessions',
[ 'idle', GAUGE, $2 ],
[ 'busy', GAUGE, $3 ],
[ 'avail', GAUGE, $4 ], ];

# 18 ----------------------------------------------------------------------
-- #
# Data to graph: HP Temperature Sensors
#
# Service type: temperature_ambient
#
# Nagios plugin: check_snmp_temperature
#
# Nagios output: ||OK - Ambient_1 Temperature is 24C
#
# -------------------------------------------------------------------------
-- #
/output:.* - (\S+) Temperature is (\d+)C/
and push @s, [ $1, [ 'Celsius', GAUGE, $2 ] ];

# 19 ----------------------------------------------------------------------
-- #
# Data to graph: Check Network Bandwidth
#
# Nagios plugin: check_bandwidth3
#
# Nagios output: ||OK Out: 1.29Kbps: In: 3.61Kbps||
#
# Nagios output: ||OK Bandwidth Out: 458.41bps: In: 2.89Kbps||
#
# Use perfdata: out=458.405063291139;2250000;2700000;0;3000000 \
#
# in=2958.91139240506;2250000;2700000;0;3000000
#
# -------------------------------------------------------------------------
-- #
/perfdata:out=(\d+\.\d+);(\d+);(\d+);(\d+);(\d+) in=(\d+\.\d+)/
and push @s, [ 'bandwidth',
[ 'out', GAUGE, $1 ],
[ 'in', GAUGE, $6 ],
[ 'sum', GAUGE, $1+$6 ],
[ 'warn', GAUGE, $2 ],
[ 'crit', GAUGE, $3 ],
[ 'max', GAUGE, $5 ], ];

# 21 ----------------------------------------------------------------------
-- #
# Data to graph: Check NTP Clock
#
# Service type: check_ntp_clock
#
# Nagios plugin: check_ntp_time
#
# Nagios output: NTP OK: Offset -0.003089785576 secs
#
# Use perfdata: offset=-0.003090s;5.000000;10.000000; (offset, warn and
crit)#
# -------------------------------------------------------------------------
-- #
/output:NTP.*Offset ([-.0-9]+) secs/
and push @s, [ 'ntp', [ 'offset', GAUGE, $1 ] ];

# 22 ----------------------------------------------------------------------
-- #
# Data to graph: Check SMTP Mail service
#
# Service type: check-mail-gw
#
# Nagios plugin: check_smtp
#
# Nagios output: ||SMTP OK - 5.279 sec. response time
#
# Use perfdata: ||time=5.278750s;;;0.000000
#
# -------------------------------------------------------------------------
-- #
/output:SMTP.*?(\d+\.\d+) sec/
and push @s, [ 'smtp', [ 'response', GAUGE, $1 ] ];

# 25 ----------------------------------------------------------------------
-- #
# Data to graph: check_hp_enclosure power usage in Watt
#
# Nagios plugin: check_hp_bladechassis
#
# Nagios output: ||OK - System: BladeSystem c7000 Enclosure G2, SN:
#
# SGH018X9ES, Firmware: 3.00, hardware working fine, 4 blades, 2 i/o
modules||#
# Use perfdata: total_watt=1266W;0;0
#
# -------------------------------------------------------------------------
-- #
/perfdata:total_watt=(\d+)W/
and push @s, [ 'power', [ 'Watt', GAUGE, $1 ] ];

# 26 ----------------------------------------------------------------------
---#
# Data de NSCA (window$)
#
# Nagios output : OK: physical memory: Total: 1.47G - Used: 357M (23%) -
Free: 1.12G (77%), virtual memory: Total: 2G - Used: 252M (12%) - Free:
1.75G (88%), page file: Total: 3.32G - Used: 205M (6%) - Free: 3.12G (94%)
# multiplier $1 par 1024 ne fonctionne pas (?)
#--------------------------------------------------------------------------
---#
# /output:.*Total: ([.\d+]+)G - Used: (\d+)M/
/output:.*physical memory: Total: ([.0-9]+)\w. - Used: ([.0-9]+)\w \(([0-
9]+)\%/
and push @s, [ 'ms-MEM', [ 'USE', GAUGE, $3 ] ];
Pourquoi est-ce compliqu ?
Le fichier map prend en compte les donnes pour faire les divers graphiques via une
expression rgulire en Perl. Comme pour beaucoup de Linuxiens, Perl est un langage connu,
c'est aussi mon prfr; donc je pars avec un peu de bonus, nanmoins j'ai galr. Voici
comment faire en prendre en compte un service par nagiosgraph, en se basant sur le fait que
vous n'avez pas trouv une dfinition adquate.
Chaque plugin nagios utilise 2 parties similaires, l'une sappelle output et l'autre perfdata,
voici ce que cela donne concrtement, via mon test check_mem.sh :
/usr/local/nagios/libexec/./check_mem1.sh -w90 -c95
OK - Utilis 51% Libre=1987MB Total=3895MB | 51% total=3895MB free=1987MB
La partie output est la premire, elle se termine par le caractre |, elle est suivie par
perfdata. La partie output est utilise par Nagios pour afficher un descriptif sur l'tat du
service. Et bien videmment j'ai travaill rcuprer des donnes via la partie perfdata sans
comprendre pourquoi mes tests ne fonctionnaient pas. Pour moi, cette partie reprsente dans
Nagios les donnes complmentaires pour un traitement externe comme par nagiosgraph. En
ralit non dans mon cas ! mais il existe des exemples qui prennent en compte cette partie,
l'heure actuelle je ne peux pas expliquer pourquoi. Donc il suffit parfois de basculer d'un cot
l'autre pour enfin avoir des donnes.

Note
Donc en fonction des paramtres de sorties, il faut bien faire attention de placer soit le
mot output ou perfdata; et le tout est suivi de votre rgles de slection. Dans le mme
style, une rgle qui ne compte pas un mot, une lettre particulire (pertinente !) est
susceptible de provoquer des troubles vis--vis des autres tests. Donc une rgle dans le
style : /output:.*:([.0-9]+)/ n'est correcte !.

Note
Pour la mise au point des rgles d'extraction des donnes, il est possible d'utiliser le
programme testentry.py, qui est inclus avec Nagiosgraph. Il est ncessaire de l'diter et
de placer les donnes (output et perfdata) lintrieur, puis de tester. Ce programme fait
gagner du temps pour une situation difficile, si j'avais su plutt...
Il existe une autre solution: c'est de faire en sorte que Nagiosgraph soit en mode debug.
Cette procdure est relativement efficace nanmoins dans mon cas, elle n'explique pas
forcment o est le problme. Il s'agit d'diter le fichier nagiosgraph.conf puis d'activer les
multiples paramtres debug prsents; ils ne manquent pas. A vous de rgler au mieux les
divers paramtres. Je conseille mme de placer le nom du service concern, afin de ne pas
polluer les donnes. Ensuite il faut scruter le fichier /var/nagiosgraph/log/nagiosgraph-
cgi.log pour essayer de comprendre.

Warning
Notez bien que Nagios mmorise tout en mmoire ds son lancement, donc le
changement d'un paramtre doit faire l'objet d'une relance de ce service. Et comme
Nagiosgraph fait partie de Nagios, c'est pareil. A la moindre modification il faut tout
relancer puis attendre. Si vous changez un paramtre qui touche une base (RRD) de
Rrdtool il est ncessaire de supprimer le fichier concern, il sera cr par la suite avec les
donnes adquates.
Au final vous devriez avoir un Nagios similaire cette image, certes avec un peu de temps
pass le configurer. Mais c'est un effort bien rcompens !

Chapter 11. Supervision Netasq
Table of Contents
check_vpn_netasq.pl
Son paramtrage
check_eth_netasq.pl
check_vpn_netasq.pl
C'est aprs de trs nombreuses recherches et d'essais que j'ai enfin russi superviser ce que
je voulais; ou presque. Il s'agit de superviser l'tat d'un ou plusieurs VPN. Les outils qui vont
me servir sont Openssh, snmpwatch, le plugin nagios::plugin, puis Perl pour finir. Le produit
snmpwalk ne sert uniquement que pour comprendre, voir mme pour essayer comprendre. A
ce titre Netasq fournit plein de fichiers MIB dont les fichiers : NETASQ-VPNSA-MIB: Table
of negotiated IPSEC SA et NETASQ-IPSEC-STATS-MIB: Table of IPSEC statistics,
sauf que je n'ai pas russi extraire des donnes intressantes avec ces 2 dfinitions. Ne pas
hsiter me dire comment les utiliser sinon; je lance un appel, j'aimerais comprendre. Donc il
m'a fallu trouver une autre solution. Les produits Netasq de la srie U comme un U70 offrent
certaines commandes shell qui peuvent tre trs utiles. Il s'agit de : showSAD et de showPID.
La premire commande est celle que je vais utilise, elle permet de faire ressortir des donnes
pertinentes. De l mon script filtre uniquement la ligne contenant le mot mature. Le reste est
facile faire il suffit de compter les lignes pour chacun des VPN. A savoir qu'un VPN,
comme on le conoit, pour le script c'est 2 lignes(!), c'est important sinon vous serez dans le
rouge par la suite.
Ce plugin est encore en test actuellement, il est disponible ici Exchange.nagios.
Son paramtrage
Les paramtres ncessaires sont simples. Je regrette nanmoins de ne pas avoir russi me
loguer sur un U70 via SSH au travers des certificats. C'est pas faute d'avoir essayer, donc il va
falloir hlas utiliser un login et un mot de passe, puis les laisser en clair dans Nagios. C'est
mon avis le seul point critique.
Voici comment l'intgrer dans Nagios, sa comprhension est simple, il faut noter que l'option
warning est quivalente critical. C'est normal, car le plugin nagios::plugin impose les
deux, mais dans ma situation un VPN est actif ou mort. Donc il prend les tats OK ou
CRITICAL.
define command{
command_name check_vpn
command_line sudo $USER1$/check_vpn_netasq.pl -H 192.168.1.254 -u user -p
mot_de_passe -w 2 -c 2
}

Note
Pour un bon fonctionnement je ne peux que vous conseiller de placer l'instruction sudo,
sinon vous risquez de rencontrer un problme de droit pour enregistrer des donnes SSH.
Voici ce que cela donne : ERROR: ctl_dir /usr/local/nagios/.libnet-openssh-perl/ is not
secure.
check_eth_netasq.pl
Maintenant que la formule est prte avec le script prcdent, rien de plus simple pour en faire
un autre. C'est le cas avec ce script, sa mission est de rcuprer le nombre d'octets transmis
sur une interface. Aprs maintes recherches, rien ne dit que c'est que c'est l'interface ETH0 qui
est concern. Mais en prenant un Netasq avec uniquement cette interface d'active, seuls ces
paramtres remontent, donc j'en conclu que c'est pour cette ci, ou pour la globalit des
interfaces. Les donnes sont envoyes au Netasq, il doit tre configur pour rpondre aux
requtes SNMP. Cette tape est simple ralis sur cette machine. Ensuite il ne reste plus qu'
tester le script. Si le script fonctionne bien il doit renvoyer ce type de donnes :
ETH_NETASQ OK - in11455669c out15579283c
Donc et conformment aux directives MIB/SNMP il s'agit du nombre d'octets envoys et
reus depuis une interface. La lettre c est une indication pour Nagios, elle indique qu'il faut
traiter ce chiffre en mode COUNTER. Ce type de test est important mes yeux, au mme
titre que celui des VPN, car il confirme que le Netasq fonctionne bien, ou pas.
Pour aller encore un peu plus loin avec, il est possible d'utiliser Nagiosgraph pour raliser
des graphes propos de cet interface. Pour y arriver il suffit de faire tout :
Il faut ajouter une rgle d'extraction dans le fichier MAP, bien prendre l'option COUNTER (!) :
# 27 ----------------------------------------------------------------------
---#
# Data ETH pour Netasq
# Nagios output: ETH_NETASQ OK - IN 135536 OUT 85816 Octets
#--------------------------------------------------------------------------
---#
/output:.*IN ([0-9]+) OUT ([0-9]+) Octets/
and push @s, [ 'eth0', [ 'In', COUNTER, $1 ] ,
[ 'Out', COUNTER, $2 ] ];
Il ne reste plus qu' ajouter la ligne qui va bien au niveau des services Nagios, et d'attendre
l'apparition des graphes. Voir ici sinon : ajout-graph.
Chapter 12. La notification avec Gmail
Table of Contents
Via un plugin :
Via un plugin :
Mme si Gmail est parfois critiqu, elle n'en reste pas moins pour moi une excellente solution
gratuite de messagerie. Donc maintenant; il faut que notre Nagios" soit en mesure de nous
envoyer des mls dans une boite ddie. Aprs plusieurs recherches, les projets ne manquent,
bien qu'ils ne soient tout de mme pas trs nombreux. La solution d'activer Postfix reste une
solution viable, nanmoins je cherche limiter l'installation de composants au maximum.

Note
Le choix de prendre un service distant peut faire en sorte que le service de notifications
est dpendant de la liaison entre Nagios et le serveur. C'est un risque prendre, sinon il
reste la solution d'installer Postfix qui lui transmettra les notifications une fois que la
liaison est revenue.
La solution retenue vient de ce projet Nagios Alerts via gmail and python. Aprs plusieurs
tests et des modifications, celui ci est simple installer et configurer, voici comment faire :
Dans les sources su programme, il faut ajouter les paramtres de votre compte Gmail ddi,
en remplaant les valeurs YOUR_ADDRESS_HERE@gmail.com, et le paramtre
YOUR_PASSWORD_HERE par les bonnes valeurs.
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1) #0 for quiet or 1 for verbosity
server.ehlo('YOUR_ADDRESS_HERE@gmail.com')
server.starttls()
server.ehlo('YOUR_ADDRESS_HERE@gmail.com') # say hello again
server.login('YOUR_ADDRESS_HERE@gmail.com', 'YOUR_PASSWORD_HERE')

server.sendmail('YOUR_ADDRESS_HERE@gmail.com', Addresses, "Subject: " +
subject + '\nTo:' + address + '\n\n' + body)
Ensuite, il ne reste plus qu' attendre un ml, puis modifier ventuellement les paramtres
suivants pour une meilleure prsentation.
#notify host via gmail using python script. \\nnn will insert return, use
for body of mssg
define command{
command_name notify-host-by-email
command_line /usr/local/nagios/libexec/send_gmail.py -a
$CONTACTEMAIL$ -s "[NAGIOS-HOST] $NOTIFICATIONTYPE$"
-b "Alerte pour hote:\\ttt $HOSTNAME$ dans l'etat:\\ttt
$HOSTSTATE$\\nnnType de Notification :\\ttt$NOTIFICATIONTYPE$\\nnn
Hote
est:\\ttt$HOSTNAME$\\nnnEtat:\\ttt$HOSTSTATE$\\nnnInfos:\\ttt$HOSTOUTPUT$\\
nnnDate/Time:\\ttt$TIME$ $DATE$\\nnn -- FIN --"
}

#notify service via gmail using python script. \\nnn will insert return,
use for body of mssg
define command{
command_name notify-service-by-email
command_line /usr/local/nagios/libexec/send_gmail.py -a
$CONTACTEMAIL$ -s "[NAGIO-SVC] $SERVICESTATE$"
-b "Type de notification:\\ttt$NOTIFICATIONTYPE$\\nnnPour le
service:\\ttt\\ttt $SERVICEDESC$\\nnn
Hte est:\\ttt\\ttt($HOSTALIAS$)\\ttt\\nnnEn
mode:\\ttt$SERVICESTATE$ depuis le: $TIME$ $DATE$\\nnn\\nnn
Informations complementaire :\\ttt$SERVICEOUTPUT$
($NOTIFICATIONTYPE$)\\nnn
Alerte pour:\\ttt ($HOSTALIAS$) $SERVICEDESC$ est dans l'etat :
$SERVICESTATE$\\nnn -- FIN --"
}

Note
Dans le script seul le retour de chariot est pris en compte, pour utiliser les tabulations il
suffit de rajouter cette ligne cot de l'autre : body = '\t'.join(body.split('\\ttt'))
Une fois toutes les modifications faites, voici ce que cela peut donner :
Type de notification: PROBLEM
Pour le service: PING
Hte est: (RT-1-Gab.T)
En mode: CRITICAL depuis : 10:59:57 05-10-2013

Informations complementaire :
- PING CRITICAL - Paquets perdus = 0%, RTA = 915.30 ms (PROBLEM)
- Alerte pour: (RT-1-Gab.T) le service PING est dans l'tat : CRITICAL
-- FIN --
Chapter 13. PNP4Nagios
Table of Contents
Installation
Les dpendances
Les problmes rencontrs.
Les templates
Installation
Sans critiquer Nagiosgraph toutefois, ce produit ne m'a pas apport exactement ce que je
voulais. De plus, il faut modifier le fichier map au moindre changement. J'ai choisi d'essayer
PNP4Nagios dans sa dernire version ce jour (pnp4nagios-0.6.21 [ 03-24-2013 ]). La
documentation sur le site de PNPNagios est trs complte, seule la compilation mrite d'tre
note, voici ce que j'ai fait :
./configure Options --prefix=/usr/local/pnp4nagios --exec-
prefix=/usr/local/pnp4nagios --bindir=/usr/loccal/pnp4nagios \
--sysconfdir=/etc/pnp4nagios --localstatedir=/var/pnp4nagios --
with-layout=debian --with-nagios-user=nagios \
--with-nagios-group=nagios --with-perfdata-logfile=perfdata.log --
with-perfdata-dir=/var/pnp4nagios \
--with-perfdata-spool-dir=/var/pnp4nagios --with-debug --with-
httpd-conf=/etc/apache2/conf.d \
--with-init-dir=/etc/init.d
Donc rien d'extraordinaire, toutefois j'ai du intervenir pour ajuster presque tous les fichiers de
configurations. Il faut ajouter cela les modifications imposes vis--vis en particulier de
Nagios. Il existe 3 modes de fonctionnement pour pnp4nagios qui va du plus classique au plus
performant; en ralit il en existe 5. Ces 3 modes sont une fois de plus clairement expliqu, ils
dpendent en particulier de votre architecture, du nombre de htes/services tester. J'ai choisi
le mode bulk, et celui ci me donne entire satisfaction.
Il est important de lancer un script pour tester votre configuration avant de lancer
PNP4Nagios, voici la commande qui est modifie par rapport la documentation officielle :
/usr/local/pnp4nagios/libexec/verify_pnp_config_v2.pl -c
/etc/nagios/nagios.cfg -p /etc/pnp4nagios/ -m bulk
Il existe une autre solution pour superviser et graphiquement le tout. Une fois dans l'interface
graphique, il suffit de cliquer sur l'image correspondant au sigle information. Plusieurs
graphes apparaissent en vous donnant un tat du systme dtaill.
Les dpendances
Ceci n'est pas forcment notifier dans la documentation disponible sur le site PNP4Nagios,
mais il faut installer ceci :
apt-get install libcrypt-rijndael-perl
En thorie ceci ne doit pas tre forcment install, mais dans mon rle de testeur...dsormais il
est indispensable. Il s'agit des 2 scripts suivants : npcd et pnp_gearman_worker. Ces 2
scripts ont fait l'objet d'adaptations par rapport mes besoins et ma configuration gnrale.
Au final il est ncessaire d'avoir des historiques similaires ceci :
2013-10-29 18:27:05 [26360] [0] process_perfdata.pl-0.6.21 Gearman Worker
Daemon
2013-10-29 18:27:05 [26361] [0] Pidfile
(/var/log/pnp4nagios/pnp_gearman_worker.pid) created
2013-10-29 18:27:05 [26362] [0] connecting to gearmand 'localhost:4730'
Voil qui est clair, nanmoins je ne connais avec certitude son rle exacte entre lui et npcd...si
jamais une personne connait, ne pas hsiter.
Les problmes rencontrs.
Certains plugins refusaient d'tre pris en compte, pour une raison trs simple. Il est clairement
expliqu sur le site de PNP4nagios que cette application respecte les normes des plugins
Nagios. Il est donc important que chaque plugin adopte cette mthode. J'ai adapt 2 plugins en
me rfrant cette mthode et d'un seul coup les graphiques sont apparus. Pour aider mieux
comprendre pourquoi un blocage peut arriver, il est possible de visualiser sous Nagios les
donnes reues. Pour cela il suffit de cliquer sur l'hte ou le service, et non sur le plugin (!), et
vous devriez apercevoir ce type de donnes :
Status Information: TEMP OK - temp= 40 C
Performance Data: temp=40;65;75
La 2eme ligne est la plus importante elle doit tre base sur ce modle :
'label'=value[UOM];[warn];[crit];[min];[max], les valeurs min et max ne sont pas
obligatoires.
Les templates
Une fois de plus c'est trs bien expliqu, il existe des exemples plus ou moins compliqus de
modles(template) pour PNP4nagios. C'est l'un des avantages de PNP4nagios, pouvoir
modifier souhait une srie de graphiques en se servant d'un modle. Nanmoins avant de se
lancer, il est ncessaire que PNP4Nagios prenne en compte votre plugin, et surtout vous
gnre un fichier XML. Ce fichier sera pour votre votre template la rfrence.
Et au final vous devez avoir des graphes aussi beau que celui l :

Chapter 14. Conclusion.
Table of Contents
J'espre que la lecture de document vous a permis d'installer Nagios sans problme, vous
permettant d'tre en mesure de superviser beaucoup d'quipements en tout genre. Il reste
encore beaucoup de points traiter, comme la redondance via un autre serveur Nagios en
mode esclave via NRPE. Ce mme plugin mrite galement de s'y arrter, il fera peut-tre
l'objet d'un ajout dans ce document ultrieurement.
Installer Nagios n'est pas forcment une chose facile et rapide, mais il existe une tape qui
mrite un soin particulier. C'est organiser la structure de Nagios avant de commencer la
supervision, en se posant certaines questions comme : qui doit tre superviser; quel service
prendre en compte, y compris pour Nagiosgraph, quelles sont les dpendances, comment je
vais organiser mes fichiers de conf, quelles sont les plugins utiliser(et tester !), les
contacts...etc.
Si jamais Nagios vous fait peur, il existe sur le NET de nombreuses entreprises en mesure de
faire le travail votre place. Il existe galement des formations. Nagios reste mes yeux une
formidable application; il existe galement le projet Centron. Au final, vous aurez une
solution libre, performante et souple, et mme plus performante qu'une application payante
parfois.
Appendix A. Les liens utiles.
Nagios : Le site de rfrence : http://www.nagios.org/
Exchange Nagios : Vmware : C'est le site de rfrence pour les plugins Vmware :
http://exchange.nagios.org/directory/Plugins/Operating-Systems/*-Virtual-
Environments/VMWare
Nagios Plugins : http://nagiosplugins.org/
Vmware ESX & VM host : Vmware ESX VM host
Nagiosgraph - C'est mon prfr : http://nagiosgraph.sourceforge.net/
check_esxi_hardware.py : Sur ce site il est possible de rcuprer le script et de la
documentation. Ce script est maintenue ce jour rgulirement; hlas je regrette des
tests plus prcis sur les processeurs, la mmoire...DRAFT Secure Domain Name
System (DNS) Deployment Guide
OP5 : le site op5.com Cette mme socit propose galement une interface de
supervision un peu comme Nagios, trs beau travail !
FAN pour Fully Automated Nagios, il s'agit d'une distribution (Centos) prte
l'emploi.http://www.fullyautomatednagios.org/wordpress/
Un projet toujours dactualis apparemment, encoder Nagios en PHP :
http://sourceforge.net/projects/nagios-php/
La FAQ Nagios : http://support.nagios.com/knowledgebase/faqs/
Formations Nagios chez Linagora http://formation.linagora.com/formation-nagios-
supervision-et-gestion-performance"
RRDTOOL : Le site de Rrdtool
Ce site comporte beaucoup de choses, uniquement pour les plugins !
https://www.nagios-plugins.org/download.html
Il s'agit d'une dmo de Nagios par un particulier apparemment. Il faut cliquer sur
l'icone Nagiosgraph pour aller vers la page o il est possible de rcuprer des
dfinitions pour le fichier map, il faut utiliser le menu Nagios-graphs pour y
accder.http://nagios.frank4dd.com/nagios/
La documentation en ligne est trs complte pour Nagios (GB) :
http://nagios.sourceforge.net/docs/3_0/toc.html
Voici un lien vers l'ensemble des variables utilises par Nagios: celles ci peuvent
servir pour vos macros. macrolist.html
Glossary
Github
GitHub est un service web d'hbergement et de gestion de dveloppement de logiciels,
utilisant le programme Git. Ce logiciel permet de tlcharger les dernires sources
d'une application facilement.
Nagios XI
Le projet Nagios est compos de 2 parties en ce qui concerne le cur de Nagios. Le
plus connu Nagios qui est un projet Open-source, et Nagios XI qui est un projet
commercial.
Licence FDL
Licence GNU de documentation libre est disponible ici :
http://www.gnu.org/licenses/fdl.html
VPN
Dans les rseaux informatiques et les tlcommunications, le rseau priv virtuel
(Virtual Private Network en anglais, abrg en VPN) est vu comme une extension des
rseaux locaux et prserve la scurit logique que l'on peut avoir l'intrieur d'un
rseau local. Il correspond en fait une interconnexion de rseaux locaux via une
technique de tunnel . On parle de VPN lorsqu'un organisme interconnecte ses sites
via une infrastructure partage avec d'autres organismes. (source wikipedia)