Où sommes nous ?

Nagios, configuration sur les hosts distants

Implementation du monitoring

Ressources

Nagios a été installé sur le serveur, les plugins ont été installés sur les machines à surveiller ... reste plus qu'à lancer le monitoring en lui-même.

Ce ticket présente ma propre implémentation, et mes fichiers de configurations sont disponibles dans l'encart ressources.

Configuration

Creation de l'utilisateur de monitoring

Pour des raisons évidentes de sécurité, tous les scripts de surveillances seront lancés par un utilisateur dédié.

adduser -disabled-login -no-create-home -system --ingroup disk monitoring

Comme on le voit, je l'ai ajouté dans le group disk pour que pouvoir faire fonctionner les tests SMART des disques. Éventuellement, d'autres groupes devront être ajouté ... mais ça n'a pas marcher ... alors je l'ai lancé en temps que root. Si un jour j'ai le temps, je chercherai une solution plus ... smart.

.config

Le fichier .config présent dans l'archive des scripts, définie 2 variables qui sont utilisés dans tous les scripts.

Ce qui donne

PLUGINS=/usr/lib/nagios/plugins
NAGIOS_HOST='-H nagios.chez.moi -p 1234'

Les scripts de monitoring

Il faut créer des scripts pour interfacer les greffons de Nagios et send_nsca, principalement car il faut à la fois passer le résultat de la commande lancée, mais aussi le code de retour.
A titre d'exemple, voici ce que ça donne pour un service simple : la vérification de la swap.

#!/bin/bash

. $(dirname $0)/.config

TEST='Swap'
RESULT=$( ${PLUGINS}/check_swap -w 50% -c 10% )
CODE=$?

echo $( hostname )$'t'${TEST}$'t'${CODE}$'t'${RESULT} | send_nsca ${NAGIOS_HOST} -c /etc/send_nsca.cfg

Attention

La variable TEST doit correspondre au champ service_description dans la configuration de Nagios. Dans le cas contraire, send_nsca fonctionnera mais le résultat sera ignoré par Nagios.

SendUpDown : notification du démarrage et de l'arrêt du host

Ce script est un peu spécial : il sera lancé parmi les scripts de démarrage du système pour indiquer que notre machine démarre ou s'arrête. Dans mon cas, ça me permet surtout de savoir si la machine a dû être redémarrée de manière abrupte ... comme par exemple lors d'un plantage.

#!/bin/bash

. /usr/local/monitoring/.config

case "$1" in
start)
CODE=0
RET='Wakeup'
;;
stop)
CODE=1
RET='Going down'
;;
status)
echo "Working"
exit 0
;;
*)
echo "$0 up|down"
exit 1
esac

echo $( hostname )$'t'${CODE}$'t'${RET} | send_nsca ${NAGIOS_HOST} -c /etc/send_nsca.cfg

il faut ensuite créer un lien dans /etc/init.d comme suit

ln -s /usr/local/monitoring/SendUpDown /etc/init.d/

puis mettre à jour les rc.d

update-rc.d SendUpDown defaults

Si ça ne marche pas

Sur les machines qui obtiennent leur adresse réseau par DHCP, il est possible que ça ne fonctionne pas. Le problème est  que cette adresse est obtenue après l'exécution des scripts de démarrage, donc bien trop tard. La solution est d'ajouter l'entrée suivante dans le cron de monitoring.

@reboot ${MONHOME}/SendUpDown start

Les crons

Reste plus qu'à scheduler nos tests. D'abord pour l'utilisateur monitoring :

# monitoring's cron

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MONHOME=/usr/local/monitoring

#m h dom mon dow command
*/5 * * * * ${MONHOME}/CheckLoad && ${MONHOME}/CheckSwap && ${MONHOME}/CheckProcs
0 * * * * ${MONHOME}/CheckDisk

@reboot ${MONHOME}/CheckApt
0 14 * * * ${MONHOME}/CheckApt

ainsi que pour root pour les services demandant ses priviléges

# monitoring's cron as root

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MONHOME=/usr/local/monitoring

#m h dom mon dow command
*/5 * * * * ${MONHOME}/CheckSmart

 

Je les ai fournis dans l'archive, donc il suffit de faire :

crontab -u monitoring crontab
crontab -u root crontab.root

Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2017
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.