Patch multi packet pour NRPE 2.13
Malgré le faible intérêt de la sortie de nrpe 2.13, je vais tout de même le déployer pour la simple et bonne raison que nous allons bientôt migrer notre infrastructure nagios de Solaris à Linux. C'est donc dans ce cadre que j'ai voulu changer de version et surtout réappliquer le patch que j'utilise depuis pas mal de temps permettant de gérer des sorties longues.
Problème, le patch de tonvoon (dont je parle ici) n'est plus utilisable en l'état. Comme de toute façon le code source a très peu été retouché (juste l'ajout d'une fonction dans le démon nrpe), nous allons voir comment faire pour récupérer ce patch et forcer son application.
Tout d'abord, il nous faut récupérer une copie de notre patch sur notre machine :
wget https://dev.icinga.org/attachments/download/113/nrpe_multiline.patch
Passons maintenant à la transformation de notre patch au format Windows (eurk !) :
unix2dos ./nrpe_multiline.patch
Il ne nous reste plus qu'à passer le patch en indiquant la ligne de commande patch --binary -l -p1. Si tout se passe bien, la sortie devrait ressembler à ce qui suit :
nous@roulette:~/nagios/nrpe-2.13$ patch --binary -l -p1 h
patching file include/common.h
patching file src/check_nrpe.c
patching file src/nrpe.c
Hunk #1 succeeded at 972 (offset -57 lines).
Hunk #2 succeeded at 1190 (offset -57 lines).
Hunk #3 succeeded at 1206 (offset -57 lines).
Hunk #4 succeeded at 1235 (offset -57 lines).
Lançons maintenant la configuration et la compilation. Tout devrait bien se passer.
Nous allons maintenant nous assurer qu'il n'y a pas eu de régression. Tout d'abord créons un fichier nrpe.cfg avec le contenu suivant :
log_facility=daemon
pid_file=./nrpe.pid
server_port=5666
server_address=127.0.0.1
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=127.0.0.1
dont_blame_nrpe=0
debug=0
command_timeout=60
connection_timeout=300
command[short_output]=echo coucou
command[long_output]=/bin/cat /etc/wgetrc
La première commande affiche un simple coucou et la seconde affiche le contenu du fichier /etc/wgetrc.
Mais trêve de bavardage et lançons séance tenante notre démon :
nous@roulette:~/nagios/nrpe-2.13$ ./src/nrpe -c ./nrpe.cfg -d
nous@roulette:~/nagios/nrpe-2.13$ ps -ef | grep nrpe
nous 9374 1 0 17:04 ? 00:00:00 ./src/nrpe -c ./nrpe.cfg -d
nous 9376 5769 0 17:04 pts/0 00:00:00 grep --color=auto nrpe
Tout semble parfait. Lançons un test de notre première commande :
./src/check_nrpe -H localhost -c short_output
coucou
Ça semble plutôt pas mal. Regardons maintenant la taille de la sortie de notre commande longue et comparons cela au fichier d'origine :
nous@roulette:~/nagios/nrpe-2.13$ ./src/check_nrpe -H localhost -c long_output | wc
126 797 4496
nous@roulette:~/nagios/nrpe-2.13$ wc /etc/wgetrc
126 797 4496 /etc/wgetrc
C'est parfait ! Notre NRPE en version 2.13 avec patch sortie longue est prêt à fonctionner !