Potřebuji sledovat stav nagios
(Protože kdykoli provedu jakékoli změny v konfiguraci a použiji novou konfiguraci, najdu nagios
služba zastavena).
Pokud je nalezena ve stavu „zastaveno“, měla by se spustit automaticky.
Zkusil jsem napsat malý shell skript a přidat ho do cron
, ale zjistil, že skript se spustí pokaždé, i když je služba spuštěna. Skript je:
#!/bin/bash
service nagios status | grep running
if [ $? -ne 0 ]
then
service nagios start
fi
Kdykoli je služba ve stavu „zastaveno“, zobrazí se výstup service nagios status
zobrazuje No lock file found in /usr/local/nagios/var/nagios.lock
. Mám sledovat /usr/local/nagios/var/nagios.lock
pomocí inotify-tools
nebo existuje nějaká lepší alternativa?
Přijatá odpověď:
existuje nějaká lepší alternativa?
Ano. Použijte správný správce služeb a nevyžádané položky, které /etc/init.d/nagios
skript. V nejlepším případě používáte System 5 rc
skript v režimu kompatibility pod něčím jako upstart nebo systemd, v takovém případě nezískáte některé z užitečných mechanismů správy služeb, které nejsou dostupné v režimu kompatibility, jako to nezískal tento člověk z AskFedory. V nejhorším případě provozujete věci pod System 5 rc
a ve skutečnosti nemáte naději, že s tímto skriptem uděláte napůl slušnou správu služeb.
K dispozici je spousta systémů pro správu služeb. Nebudu zacházet do podrobností o jejich instalaci, protože to je daleko nad rámec této odpovědi. Místo toho se zaměřím pouze na to, jak v nich zprovoznit nagios démona.
daemontools
rodina
daemontools
rodina sad nástrojů pro správu služeb zahrnuje:
- Daemontools Dana Bernsteina
- Propuštěnec Adama Sampsona
- Přídavek daemontools Bruce Guenter
- Laurent Bercot s6
- Můj nos
- Runit Gerrita Papea
- Pachatel Wayna Marshalla
Hlavní věc, kterou zde potřebujete, je program, který se stane démonem. Pro nagios je to 2- nebo 3-liner. Je možné kombinovat sady nástrojů. Zde jsou některé vhodné 2-linky využívající několik různých sad nástrojů:
run
soubor se sadou nástrojů nosh:#!/bin/nosh
setuidgid nagios
nagiosa
restart
soubor, který způsobí bezpodmínečný automatický restart:#!/bin/sh
exec trueJen pro zajímavost jsem přidal předpřipravený balíček služeb pro nagios do nosh, který bude k dispozici ve verzi 1.13, což je v podstatě toto s několika standardními doplňky, jako jsou informace o závislostech.
run
soubor se sadou nástrojů runit:#!/bin/sh -e
exec chpst -u nagios nagiosrun
soubor se sadou nástrojů s6:#!/command/execlineb -P
s6-setuidgid nagios
nagiosrun
soubor se sadami nástrojů daemontools, daemontools-encore nebo freedt:#!/bin/sh -e
exec setuidgid nagios nagiosrc.main
soubor se sadou nástrojů perp:#!/bin/sh -e
exec 2>&1
start() { exec runuid nagios nagios; }
reset() { exit 0; }
eval "$1" "[email protected]"
Jediným specifickým rysem této služby je tento program pro spouštění jednotlivých služeb. Zbytek se služba od služby neliší. Jeden se dotazuje na stav služby stejným způsobem ve všech službách pomocí příkazu jako svstat
. Povolení a zakázání automatického spouštění při bootstrapu je záležitostí symbolických odkazů. Ruční spuštění a zastavení služby je záležitostí svc -u
a svc -d
. A tak dále.
nosh má několik shimů, pokud je někdo potřebuje, jako je systemctl status
a initctl status
. Důležité je, že má service
shim, takže pokud opravdu jako service nagios status
můžete ho používat dál. ☺ Ale zapomeňte na ten ošklivý pohled na obchod se zámkovými soubory a na celý pojem ad-hoc monitorování. S řádným servisním manažerem nic takového neřešíte. Správce služeb provádí monitorování a řádně sleduje proces démona.
systemd
V krabici není soubor systémové servisní jednotky pro nagios. Ale hodně lidí už napsalo své vlastní:
nagios.service
Davida Kowise pro Source Mage Linuxnagios.service
přidáno do balíčku nagios Arch Linuxu v roce 2012
systemd se nedodává se service
shim příkaz, ale některé distribuce Linuxu mají jeden z jiného zdroje.
Další čtení
- Jak nastavit správné monitorování mých služeb automatizovaným způsobem? Takže když dojde k jedné havárii, automaticky se restartuje?