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
Publication.
Version 1.2
Ajout des addons pour Netasq
Version 1.2
Ajout de PNP4nagios
30 sept 2013
20 oct 2013
30 nov 2013
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) :
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
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
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 buildessential 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.
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/nagiosplugins-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
--help=short
--help=recursive
packages
-V, --version
-q, --quiet, --silent
--cache-file=FILE
-C, --config-cache
-n, --no-create
--srcdir=DIR
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
--host=HOST
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE
do not include FEATURE (same as --enableFEATURE=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
J'ai choisi une compilation presque par dfaut, ce qui donne ceci pour mes paramtres :
make clean dep ; ./configure --with-nagios-group=nagios --with-commandgroup=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 --enableevent-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
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
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"
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
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|forcereload|status}" >&2
exit 1
;;
esac
exit 0
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
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
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.
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
display_name
address address
; @IP ou FQDN
parents host_names
; dpendance vis--vis d'un autre hte
hostgroups
; remplir
hostgroup_names
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
[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
3d_coords
}
x_coord,y_coord
x_coord,y_coord,z_coord
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
; test via Nagios
[0/1]
passive_checks_enabled [0/1]
; test via NRPE, nsclient...
check_period
timeperiod_name
; priode de test, souvent "24x7"
obsess_over_service
[0/1]
[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
}
email
}
paul@localhost ;
linux-admins
Linux Administrators
jdoe,robert,paul
us-holidays
us-holidays
U.S. Holidays
january 1
monday -1 may
00:00-00:00
00:00-00:00
; New Years
; Memorial Day (last Monday
july 4
00:00-00:00
; Independence Day
in May)
monday 1 september
in September)
thursday 4 november
Thursday in November)
december 25
}
00:00-00:00
00:00-00:00
; Thanksgiving (4th
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
fries.
sunday
monday
tuesday
wednesday
thursday
friday
saturday
us-holidays
00:00-24:00
00:00-24:00
00:00-24:00
00:00-24:00
00:00-24:00
00:00-24:00
00:00-24:00
define command{
command_name
command_line
}
check_local_procs
$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
WEB
Apache HTTP
localhost
Main Web Site
n
w,u,c
service_description
first_notification
last_notification
notification_interval
contact
;contact_groups
;escalation_period
}
Mail problem
4
0
15
postmaster@domain.fr
admins,themanagers (optionnelle)
24x7 (optionnelle)
*******************************************************************
servicegroups.cfg
Pour prise en compte ne pas oublier dans nagios.cfg,
la mise a jour/ajout de cfg_file=/etc/nagios/servicegroups.cfg
*******************************************************************
PING
Tests PING
serveur,dm,nt1,switch1
HTTP
Test serveur WWW
serveur,HTTP,dm,HTTP
MEMOIRE
Mmoire utilis
serveur,MEM
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
this host template
use
generic-host
inherits other values from the generic-host template
check_period
24x7
Linux hosts are checked round the clock
check_interval
5
the host every 5 minutes
retry_interval
1
check retries at 1 minute intervals
max_check_attempts
10
Linux host 10 times (max)
check_command
check-host-alive
command to check Linux hosts
notification_period
24x7
notification_interval
60
notifications / 60 mn
notification_options
d,u,r
notifications for specific host states
; The name of
; This template
; By default,
; Actively check
; Schedule host
; Check each
; Default
;
; Resend
; Only send
contact_groups
admins
get sent to the admins by default
register
0
THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# Define a template for switches that we can reuse
define host{
name
generic-switch
this host template
use
generic-host
values from the generic-host template
check_period
24x7
switches are monitored round the clock
check_interval
5
checked every 5 minutes
retry_interval
1
check retries at 1 minute intervals
max_check_attempts
10
10 times (max)
check_command
check-host-alive
to check if routers are "alive"
notification_period
24x7
notifications at any time
notification_interval
30
notifications every 30 minutes
notification_options
d,r
notifications for specific host states
contact_groups
admins
get sent to the admins by default
register
0
THIS - ITS JUST A TEMPLATE
}
; Notifications
; DONT REGISTER
; The name of
; Inherit default
; By default,
; Switches are
; Schedule host
; Check each host
; Default command
; Send
; Resend
; Only send
; Notifications
; DONT REGISTER
###########################################################################
####
###########################################################################
####
#
# SERVICE TEMPLATES
#
###########################################################################
####
###########################################################################
####
# Generic service definition template - This is NOT a real service, just a
template!
# generic service template definition
define service{
name
generic-service ;
this service template
active_checks_enabled
1
;
Nagios)
passive_checks_enabled
0
;
NRPE/nsclient...)
parallelize_check
1
;
checks should be parallelized (disabling this can lead to
problems)
The 'name' of
Test actif (via
Test passif (via
Active service
major performance
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!
}
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
Ensuite il faut lancer la commande make all && make install plugin && make installdaemon && 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
#
#
#
#
#
#command[check_users]=/usr/lib/nagios/plugins/check_users -w $ARG1$ -c
$ARG2$
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]
Options:
-n
=
config_file =
mode
=
-i
=
-d
=
-d -s
=
-c config_file mode
Do not use SSL
Name of config file to use
One of the following operating modes:
Run as a service under inetd or xinetd
Run as a standalone daemon
Run as a subsystem under AIX
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
host_name
service_description
check_command
contact_groups
}
generic-service
vm-debian
Charge
check_nrpe!check_load
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]
A l'exception de la dernire ligne qui est trop complte, les autres tests ne retournent pas
grand chose de prcis.
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
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 \
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
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"
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
}
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$
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-objectperl. 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
ng_etc_dir
ng_bin_dir
/usr/local/nagiosgraph
/etc/nagiosgraph
/usr/local/nagiosgraph/bin
ng_cgi_dir
ng_doc_dir
ng_examples_dir
ng_www_dir
ng_util_dir
ng_var_dir
ng_rrd_dir
ng_log_dir
ng_log_file
ng_cgilog_file
ng_url
ng_cgi_url
ng_css_url
ng_js_url
nagios_cgi_url
nagios_perfdata_file
nagios_user
www_user
/usr/local/nagiosgraph/cgi
/usr/local/nagiosgraph/doc
/usr/local/nagiosgraph/examples
/usr/local/nagiosgraph/share
/usr/local/nagiosgraph/util
/usr/local/nagiosgraph/var
/usr/local/nagiosgraph/var/rrd
/var/log/nagiosgraph
/var/log/nagiosgraph/nagiosgraph.log
/var/log/nagiosgraph/nagiosgraph-cgi.log
/nagiosgraph
/nagiosgraph/cgi-bin
/nagiosgraph/nagiosgraph.css
/nagiosgraph/nagiosgraph.js
/nagios/cgi-bin
/tmp/perfdata.log
nagios
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
=
=
=
=
=
=
=
=
/var/log/nagiosgraph.log
/var/nagiosgraph/log/nagiosgraph-cgi.log
/var/nagios/perfdata.log
/var/nagiosgraph/rrd
/etc/nagiosgraph/map
/nagios3/cgi-bin
/nagios3/nagiosgraph.js
/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
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/cgibin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$'
onMouseOver='showGraphPopup(this)'
onMouseOut='hideGraphPopup()' rel='/nagiosgraph/cgibin/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/cgibin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$'
onMouseOver='showGraphPopup(this)' onMouseOut='hideGraphPopup()'
rel='/nagiosgraph/cgibin/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.
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||
#
# -------------------------------------------------------------------------- #
#
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
#
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/nagiosgraphcgi.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 !
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
# 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.
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:
Pour le service:
Hte est:
En mode:
PROBLEM
PING
(RT-1-Gab.T)
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 --
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 --execprefix=/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 --withhttpd-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.
TEMP OK - temp= 40 C
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 :
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.
Exchange Nagios : Vmware : C'est le site de rfrence pour les plugins Vmware :
http://exchange.nagios.org/directory/Plugins/Operating-Systems/*-VirtualEnvironments/VMWare
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/
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/
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)