GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Garder une trace de l'état du service en continu ?

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
    nagios

    et un restart fichier qui provoque un redémarrage automatique inconditionnel :

    #!/bin/sh
    exec true

    Juste 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 ?

Linux
  1. Service du système d'exploitation Linux "dhcpd"

  2. Service d'exploitation Linux "anacron"

  3. Service d'exploitation Linux "iptables"

  4. Service de système d'exploitation Linux "réseau"

  5. Service d'exploitation Linux "portmap"

Service du système d'exploitation Linux "nfs"

Service du système d'exploitation Linux 'microcode_ctl'

Service d'exploitation Linux "hplip"

Service d'exploitation Linux "irqbalance"

Service de système d'exploitation Linux "rpcgssd"

Service d'exploitation Linux "yum-updatesd"