J'ai besoin de surveiller le statut de nagios
service (Parce que, chaque fois que j'apporte des modifications à la configuration et que j'applique la nouvelle configuration, je trouve nagios
service arrêté).
S'il est trouvé à l'état "arrêté", il devrait démarrer automatiquement.
J'ai essayé d'écrire un petit script shell et l'ai ajouté à cron
, mais a constaté que le script s'exécutait à chaque fois même si le service était en cours d'exécution. Le script est :
#!/bin/bash
service nagios status | grep running
if [ $? -ne 0 ]
then
service nagios start
fi
Chaque fois que le service est à l'état « arrêté », la sortie de service nagios status
affiche No lock file found in /usr/local/nagios/var/nagios.lock
. Dois-je surveiller le /usr/local/nagios/var/nagios.lock
fichier en utilisant inotify-tools
ou existe-t-il une meilleure alternative à cela ?
Réponse acceptée :
existe-t-il une meilleure alternative à cela ?
Oui. Utilisez un gestionnaire de service approprié et des fichiers indésirables qui /etc/init.d/nagios
scénario. Au mieux, vous utilisez un System 5 rc
script en mode compatibilité sous quelque chose comme upstart ou systemd, auquel cas vous n'obtiendrez pas certains des mécanismes de gestion de service utiles qui ne sont pas disponibles en mode compatibilité comme cette personne chez AskFedora ne l'a pas fait. Au pire, vous exécutez des choses sous System 5 rc
et vous n'avez pas vraiment l'espoir de faire une gestion de service à moitié décente avec ce script.
Il existe de nombreux systèmes de gestion des services disponibles. Je ne vais pas entrer dans les détails de leur installation, car cela dépasse largement le cadre de cette réponse. Au lieu de cela, je me concentrerai simplement sur la façon de faire fonctionner le dæmon nagios en leur sein.
Les daemontools
famille
Les daemontools
La famille d'outils de gestion des services comprend :
- Daemontools de Dan Bernstein
- La libération d'Adam Sampson
- Daemontools-encore de Bruce Guenter
- La s6 de Laurent Bercot
- Ma bouffe
- Runit de Gerrit Pape
- Le coupable de Wayne Marshall
La principale chose dont vous avez besoin ici est un programme qui devient le dæmon. Pour Nagios, c'est un 2 ou 3 lignes. On peut mélanger et assortir les ensembles d'outils. Voici quelques 2 lignes appropriées, utilisant plusieurs outils différents :
- Une
run
fichier avec le jeu d'outils nosh :#!/bin/nosh
setuidgid nagios
nagioset un
restart
fichier qui provoque un redémarrage automatique inconditionnel :#!/bin/sh
exec trueJuste pour le plaisir, j'ai ajouté un ensemble de services pré-construit pour nagios à nosh, qui sera disponible dans la version 1.13, c'est à peu près cela avec quelques fioritures standard telles que les informations de dépendance.
- Une
run
fichier avec le jeu d'outils runit :#!/bin/sh -e
exec chpst -u nagios nagios - Une
run
fichier avec le jeu d'outils s6 :#!/command/execlineb -P
s6-setuidgid nagios
nagios - Une
run
fichier avec les jeux d'outils daemontools, daemontools-encore ou freedt :#!/bin/sh -e
exec setuidgid nagios nagios - Un
rc.main
fichier avec le jeu d'outils perp :#!/bin/sh -e
exec 2>&1
start() { exec runuid nagios nagios; }
reset() { exit 0; }
eval "$1" "[email protected]"
Ce programme pour exécuter le service individuel est la seule chose particulière à ce service. Le reste ne varie pas d'un service à l'autre. On interroge l'état du service de la même manière sur tous les services, avec une commande telle que svstat
. L'activation et la désactivation du démarrage automatique au démarrage est une question de liens symboliques. Démarrer et arrêter manuellement un service est une question de svc -u
et svc -d
. Et ainsi de suite.
nosh a plusieurs shims si on en a besoin, comme systemctl status
et initctl status
. Surtout, il dispose d'un service
shim, donc si vous vraiment comme service nagios status
vous pouvez continuer à l'utiliser. ☺ Mais oubliez tout ce mauvais regard sur une entreprise de fichiers verrouillés et toute la notion de surveillance ad hoc. Vous ne traitez rien de tel avec un gestionnaire de service approprié en place. Le gestionnaire de service effectue la surveillance et assure le suivi du processus dæmon.
systemed
Il n'y a pas de fichier d'unité de service systemd pour nagios fourni dans la boîte. Mais beaucoup de gens ont déjà écrit le leur :
- Le
nagios.service
de David Kowis pour Source Mage Linux nagios.service
ajouté au package nagios d'Arch Linux en 2012
systemd n'est pas fourni avec un shim service
commande, mais certaines distributions Linux en ont une provenant d'une autre source.
Autres lectures
- Comment mettre en place une surveillance adéquate de mes services de manière automatisée ? Pour que si l'on plante, il redémarre automatiquement à la volée ?