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
nagiose un
restart
file che provoca il riavvio automatico incondizionato:#!/bin/sh
exec trueTanto 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 Linuxnagios.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?