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
runfichier avec le jeu d'outils nosh :#!/bin/nosh
setuidgid nagios
nagioset un
restartfichier 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
runfichier avec le jeu d'outils runit :#!/bin/sh -e
exec chpst -u nagios nagios - Une
runfichier avec le jeu d'outils s6 :#!/command/execlineb -P
s6-setuidgid nagios
nagios - Une
runfichier avec les jeux d'outils daemontools, daemontools-encore ou freedt :#!/bin/sh -e
exec setuidgid nagios nagios - Un
rc.mainfichier 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.servicede David Kowis pour Source Mage Linux nagios.serviceajouté 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 ?