GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:tenere traccia dello stato del servizio continuamente?

Devo monitorare lo stato di nagios servizio (perché, ogni volta che apporto modifiche alla configurazione e applico la nuova configurazione, troverei nagios servizio interrotto).
Se trovato nello stato "arrestato", dovrebbe essere avviato automaticamente.

Ho provato a scrivere un piccolo script di shell e l'ho aggiunto a cron , ma ha scoperto che lo script verrebbe eseguito ogni volta anche se il servizio è in esecuzione. Lo script è:

#!/bin/bash

service nagios status | grep running

if [ $? -ne 0 ]
then
        service nagios start
fi

Ogni volta che il servizio è in stato "arrestato", l'output di service nagios status mostra No lock file found in /usr/local/nagios/var/nagios.lock . Devo monitorare il /usr/local/nagios/var/nagios.lock file utilizzando inotify-tools o c'è qualche alternativa migliore a questo?

Risposta accettata:

c'è qualche alternativa migliore a questo?

Sì. Usa un gestore di servizi adeguato e posta indesiderata quel /etc/init.d/nagios sceneggiatura. Nella migliore delle ipotesi, stai usando un rc di System 5 script in modalità compatibilità sotto qualcosa come upstart o systemd, nel qual caso non otterrai alcuni degli utili meccanismi di gestione dei servizi che non sono disponibili in modalità compatibilità come questa persona di AskFedora non ha fatto. Nel peggiore dei casi, stai eseguendo le cose in System 5 rc e non hai davvero la speranza di fare una gestione del servizio decente a metà con quello script.

Sono disponibili numerosi sistemi di gestione dei servizi. Non entrerò nei dettagli dell'installazione, perché va ben oltre lo scopo di questa risposta. Invece, mi concentrerò semplicemente su come far funzionare i nagios dæmon al loro interno.

Gli daemontools famiglia

Gli daemontools la famiglia di set di strumenti per la gestione dei servizi include:

  • Daemontools di Dan Bernstein
  • La libertà di Adam Sampson
  • Daemontools-encore di Bruce Guenter
  • Laurent Bercot's s6
  • Il mio spuntino
  • Runit di Gerrit Pape
  • L'assassino di Wayne Marshall

La cosa principale di cui hai bisogno qui è un programma che diventi il ​​daimon. Per i nagios, questo è un 2 o 3 liner. Si possono mescolare e abbinare i set di strumenti. Ecco alcuni 2-liner adatti, utilizzando diversi set di strumenti:

  • Un run file con il set di strumenti nosh:
    #!/bin/nosh
    setuidgid nagios
    nagios

    e un restart file che provoca il riavvio automatico incondizionato:

    #!/bin/sh
    exec true

    Tanto per cominciare, ho aggiunto un pacchetto di servizi pre-costruito per nagios to nosh, che sarà disponibile nella versione 1.13, più o meno questo con un paio di fronzoli standard come le informazioni sulle dipendenze.

  • Un run file con il set di strumenti runit:
    #!/bin/sh -e
    exec chpst -u nagios nagios
  • Un run file con il set di strumenti s6:
    #!/command/execlineb -P
    s6-setuidgid nagios
    nagios
  • Un run file con i set di strumenti daemontools, daemontools-encore o freedt:
    #!/bin/sh -e
    exec setuidgid nagios nagios
  • Un rc.main file con il set di strumenti perp:
    #!/bin/sh -e
    exec 2>&1
    start() { exec runuid nagios nagios; }
    reset() { exit 0; }
    eval "$1" "[email protected]"

Questo programma per eseguire il servizio individuale è l'unica cosa particolare di questo servizio. Il resto non varia da servizio a servizio. Uno interroga lo stato del servizio allo stesso modo in tutti i servizi, con un comando come svstat . L'abilitazione e la disabilitazione dell'avvio automatico al bootstrap è una questione di collegamenti simbolici. Avviare e arrestare manualmente un servizio è una questione di svc -u e svc -d . E così via.

nosh ha diversi shim se ne hanno bisogno, come systemctl status e initctl status . È importante sottolineare che ha un service shim, quindi se davvero come service nagios status puoi continuare a usarlo. ☺ Ma dimentica tutto quel brutto guardare un affare di lockfile e l'intera nozione di monitoraggio ad hoc. Non ti occupi di nulla del genere con un responsabile del servizio adeguato in atto. Il gestore del servizio esegue il monitoraggio e tiene traccia del processo daimon.

sistema di sistema

Non c'è un file dell'unità di servizio systemd per nagios che viene fornito nella confezione. Ma molte persone hanno già scritto il loro:

  • nagios.service di David Kowis per Source Mage Linux
  • nagios.service aggiunto al pacchetto nagios di Arch Linux nel 2012

systemd non viene fornito con uno shim service comando, ma alcune distribuzioni Linux ne hanno uno da un'altra fonte.

Ulteriori letture

  • Come impostare il monitoraggio corretto dei miei servizi in modo automatizzato? In modo che se uno si arresta in modo anomalo si riavvia automaticamente?

Linux
  1. Servizio del sistema operativo Linux 'dhcpd'

  2. Servizio del sistema operativo Linux "anacron"

  3. Servizio del sistema operativo Linux "iptables"

  4. Sistema operativo Linux Servizio "rete"

  5. Servizio del sistema operativo Linux "portmap"

Servizio del sistema operativo Linux "NetFS"

Servizio del sistema operativo Linux 'ldap'

Servizio del sistema operativo Linux 'yppasswdd'

Servizio del sistema operativo Linux "xendomains"

Servizio del sistema operativo Linux 'nscd'

Servizio del sistema operativo Linux "calamaro"