NRPE est un mécanisme qui permet d’éxécuter des commandes locales sur la machine dite “monitorée” et d’envoyer ces résultats à NAGIOS.
Pour cela, il faut installer sur le poste à monitorer le “serveur” NRPE ainsi que les plugins Nagios qui vont s’éxécuter en local puis être transmis via TCP à la machine NAGIOS.
Installation sur la machine à monitorer
Comme j’ai eu pas mal de soucis avec les paquets debian, j’ai décidé de récupérer les sources et de les compiler.
Il faut en fait installer deux composants :
En préalable, il est judicieux de créer un user et groupe nagios.
Installation nagios plugins
Aller sur le site http://www.nagios.org/download/ et récupérer la dernière version de nagios-plugins. La dernière à ce jour est la 1.4.9.
on décompacte la bête via la commande :
$ tar xzf nagios-plugins-1.4.6.tar.gz
$ cd nagios-plugins-1.4.6
$ ./configure
$ make
$ make install
Normalement, si tout se passe bien, les plugins du type check_smtp sont installés…
Ils sont installés dans /usr/lib/nagios/plugins/.
Il faut modifier les autorisations comme sivant :
chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec/
Installation NRPE
On récupère les sources de NRPE (2.8.1).
On décompacte tjs de la même façon :
$ tar xzf nrpe-2.8.1.tar.gz
$cd nrpe-2.8.1
$ ./configure –disable-ssl pour désactiver le support ssl
Ca doit donner un truc comme :
*** Configuration summary for nrpe 2.8.1 05-10-2007 ***:
General Options:
————————-
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios
Ensuite,
$ make all
$ make install-plugin
$ make install-daemon
$ make install-daemon-config
Par defaut, nrpe se marrie bien avec inetd ou xinetd.
Nous allons donc installer Xinetd.
Installation de Xinetd
$ apt-get install xinetd
Configuration de xinetd pour nrpe
Les fichiers de configuration se trouve dans /etc/xinetd.d/.
On va donc y créer un fichier nommé nrpe qui sera comme suivant :
#default: on
# description: NRPE
service nrpe
{
flags = REUSE
socket_type = stream
wait = no
port = <port TCP nrpe>
user = nagios
group = nagios
server = <chemin d’acces à nrpe>
server_args = -c <chemin du fixhier de coinfig nrpe> -n –inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 <ip_nagios_machine>
}
avec par exemple :
- <port TCP nrpe> : par défaut, 5666…Il est de bon ton de prendre un autre numéro de port surtout si on n’a pas active le support ssl
- <chemin d’acces à nrpe> : /usr/local/nagios/bin/nrpe
- <chemin du fixhier de coinfig nrpe>: /etc/nagios/nrpe.cfg
- <ip_nagios_machine> : ip de la machine hebergeant Nagios
On relance Xinetd via :
/etc/init.d/xinetd restart
installation directe dans /etc/init.d/
On peut se passer de Xinetd pour lancer automatiquement au démarrage de la machine le fameux nrpe.
Pour cela, il faut créer un fichier, par exemple nrpe dans le répertoire /etc/init.d/.
Les droits dont du genre 755 avec comme user/groupe : root/root
Ce fichier ressemble à
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: nagios-nrpe-server
# 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: Start/Stop the Nagios remote plugin execution daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nagios/bin/nrpe
NAME=nrpe
DESC=nrpe
CONFIG=/usr/local/nagios/etc/nrpe.cfg
test -x $DAEMON || exit 0
if ! [ -x "/lib/lsb/init-functions" ]; then
. /lib/lsb/init-functions
else
echo “E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed”
exit 1
fi
# Include nagios-nrpe defaults if available
if [ -f /etc/default/nagios-nrpe-server ] ; then
. /etc/default/nagios-nrpe-server
fi
# we also used to include this file, so if it’s there
# we include it as well
if [ -f /etc/default/nagios-nrpe ]; then
. /etc/default/nagios-nrpe
fi
if [ "$NICENESS" ]; then NICENESS=”-n $NICENESS”; fi
set -e
case “$1″ in
start)
log_daemon_msg “Starting $DESC” “$NAME”
start_daemon $NICENESS $DAEMON -n -c $CONFIG -d $DAEMON_OPTS
log_end_msg $?
;;
stop)
log_daemon_msg “Stopping $DESC” “$NAME”
start-stop-daemon –stop –quiet –oknodo –exec $DAEMON
log_end_msg $?
;;
reload|force-reload)
log_daemon_msg “Reloading $DESC configuration files” “$NAME”
start-stop-daemon –stop –signal HUP –quiet –exec $DAEMON
log_end_msg $?
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
log_failure_msg “Usage: $N {start|stop|restart|reload|force-reload}”
exit 1
;;
esac
exit 0
Il suffit ensuite, après avoir testé le script /etc/init.d/nrpe, automatiser son démarrage avec celui de la machine.
update-rc.d nrpe defaults 99
defaults utilise les paramètres par défaut, et 99 sert à indiquer que ce service démarrera après tous les autres……
Test du fonctionnement en local
On doit aussi ajouter le service nrpe/tcp dans le fichier /etc/services.
On edite ce fichier et on y ajoute nrpe
nrpe 5666/tcp
On verifie que le daemon NRPE tourne en regardant le résultat de la commande
$ netstat -at | grep nrpe
Ca doit donner :
tcp 0 0 *:nrpe *:* LISTEN
Ca montre que le daemon est bien en action !!
Puisqu’on a installer le fameux chek_nrpe (issue de la ligne de commande make install-plugin) pour tester la configuration en local, on va lancer :
$ /usr/local/nagios/libexec/check_nrpe -H localhost
qui doit nous retourner du genre
NRPE v2.8.1
Si tout ca est bon, alors, il ne reste plus qu’à autoriser le port tcp/5666 entre les deux machines si présence de firewall : la machine nagios et le machine à monitorée (celle sur laquelle on a installer less éléments précédents).
Configuration de nrpe.local
Il se trouve chez moi dans /etc/nagios/nrpe.cfg
# PID FILE
pid_file=/var/run/nrpe.pid
# PORT NUMBER
server_port=5666
# SERVER ADDRESS
server_address=<ip machin nagios>
# NRPE USER
nrpe_user=nagios
nrpe_group=nagios
# ALLOWED HOST ADDRESSES
allowed_hosts=127.0.0.1,<ip machine nagios>
# Values: 0=do not allow arguments, 1=allow command arguments
dont_blame_nrpe=0
# DEBUGGING OPTION
# Values: 0=debugging off, 1=debugging on
debug=1
command_timeout=60
# COMMAND DEFINITIONS
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_disk1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1
command[check_disk2]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hdb1
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
# local configuration:
# if you’d prefer, you can instead place directives here
include=/etc/nagios/nrpe_local.cfg
C’est dans la zone #COMMAND DEFINITIONS que l’on va pouvoir mettre nos petites fonctions comme ci dessous si l’on veut vérifier par exemple les mises à jour disponibles :
command[check_apt]=/usr/lib/nagios/plugins/check_apt
Configuration de la machine Nagios
Sur la machine Nagios, comme on suppose que celui-ci est deja installé, il ne nous reste qu’à installer le fameux check_nrpe qui se trouve dans les sources de nrpe comme décrit plus haut.
$ tar xzf nrpe-2.8.1.tar.gz
$ cd nrpe-2.8.1
$ ./configure
$ make all
$ make install-plugin
On teste l’installation en local via la commande :
$ /usr/local/nagios/libexec/check_nrpe -H localhost
Maintenant, on teste la connexion avec la machine à monitorer :
$ /usr/lib/nagios/plugins/check_nrpe -H -n -p
-c
-t 100
__Remarque :__
* le “-n” correspond à la non activation des supports SSL.
* le ‘t 100′ est le temps de temporisation (par defaut, 10).
Si tout marche alors, il ne reste plus qu’à créer les commandes spécifiques pour que la machine à monitorer par Nagios.
Les fichiers de configuration pour Nagios 2 sur ma bécane sont dans /etc/nagios2/
Le fichier nagios.cfg contient notamment une entrée pour cfg_dir qui spécifie le répertoire des fichiers de configuration.
exemple : cfg_dir=/etc/nagios2/maconfamoi.
C’est dans ce répertoire que je vais coller les fichiers spécifiques à ma machine à monitorer.