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.
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.
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'
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
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.
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
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
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 : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2024
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 au total. |
Vous pouvez
laissez un commentaire
sur cette page.