Obsah:

Service Monitor Script pro servery Linux: 4 kroky
Service Monitor Script pro servery Linux: 4 kroky

Video: Service Monitor Script pro servery Linux: 4 kroky

Video: Service Monitor Script pro servery Linux: 4 kroky
Video: Полная настройка почтового сервера на Linux 2024, Listopad
Anonim
Service Monitor Script pro servery Linux
Service Monitor Script pro servery Linux

Mít stabilní, vždy spuštěný systém, i když používáte Linux, může být obtížný úkol.

Kvůli složitosti moderních softwarových balíčků a špatnému kódování mohou některé procesy čas od času nevyhnutelně selhat. To může být špatná věc, pokud používáte server a někteří lidé na tyto služby spoléhají.

Krok 1: Použití metod poskytovaných Systemd

Jak už možná víte, většina moderních operačních systémů Linux používá systemd.

Pokud nejste obeznámeni s systemd, je to podle wikipedie:

„… Inicializační systém používaný v distribucích Linuxu k bootstrapování uživatelského prostoru a následné správě všech procesů, namísto inicializačních systémů UNIX System V nebo Berkeley Software Distribution (BSD).…“

Mnoho lidí stále argumentuje, proč bylo nutné nahradit starý dobrý inicializační systém tímto komplikovanějším systémem řízení procesů, ale na následujícím odkazu lze najít dobré vysvětlení:

www.tecmint.com/systemd-replaces-init-in-l…

Nejdůležitějším zlepšením by bylo, že je schopen vyvolat systém rychleji než init, kvůli souběžnému a paralelnímu zpracování při zavádění namísto sekvenčního přístupu init

Aniž byste šli do hlubin systému, abyste mohli přidat proces do systému, musíte vytvořit soubor služby. Syntaxe takového souboru se může pohybovat od velmi jednoduchých až po naprosto komplikované a nebudeme zacházet do podrobností. Abyste měli základní soubor.service, stačí použít následující položky:

[Unit] Description = Description of applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = vždy [Instalovat] WantedBy = multi-user.target

Umístěte je do souboru application.service ve složce/lib/systemd/system.

Co každá z těchto možností dělá, je vysvětleno v následujícím odkazu:

access.redhat.com/documentation/en-US/Red_…

Před spuštěním aplikace zadejte následující příkaz:

sudo systemctl spustit application.service

Poznámka: příponu.service lze vynechat.

Zastavení aplikace:

sudo systemctl stop application.service

Pokud byl konfigurační soubor změněn a chcete znovu načíst nastavení:

sudo systemctl znovu načíst application.service

Restartování aplikace:

sudo systemctl restart application.service

Chcete -li povolit automatické spouštění při spuštění:

sudo systemctl povolit application.service

Pokud je toto povoleno, správce procesů systemd se pokusí spustit aplikaci na základě nastavení poskytnutých systémovým souborem.

Chcete -li jej deaktivovat, použijte stejný příkaz jako výše, ale s parametrem „zakázat“.

Pokud do servisního souboru umístíte Restart = vždy, pak bude systém sledovat proces a pokud jej nenajdete v seznamu procesů, pokusí se jej automaticky restartovat.

Pokud umístíte

RestartSec = 30

po restartu směrnice počká 30 sekund, než se pokusí restartovat proces. To může být užitečné, protože nepřetržitý pokus o restart selhávající služby/aplikace může vést k vysoké poptávce po systému (zápis chybových protokolů atd.)

Jak vidíte, systemd již poskytuje nějaké prostředky ke sledování procesů. V některých případech to však nemusí stačit. Co když proces neukončí (bude stále v seznamu procesů), ale přestane reagovat. V tomto případě, abyste se ujistili, že je proces skutečně spuštěn, budete možná muset provést další kontroly.

Tady se vám budou hodit skripty z tohoto instruktu.

Krok 2: Konfigurace a používání skriptů služby Checker

Pokud potřebujete větší kontrolu nad spuštěnými procesy/službami, tyto skripty vám určitě pomohou.

Jelikož je kód mírně velký, nahraje se na github a najdete jej v následujícím úložišti:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

Srdcem celého balíčku je

checkService.sh

Před použitím je nutné nahradit úplnou cestu ke složce služby. To lze najít na začátku skriptu.

Skript může sledovat několik procesů a provádět další úkoly, jak je popsáno níže:

Prochází každý soubor z podsložky /services s příponami.serv nebo.check a zkontroluje, zda existuje aktivní proces nazvaný 'aplikace'.

Pokud pro aplikaci neexistuje žádný soubor „.check“, pouze soubor application.serv:

Pokud je proces aktivní, bude jej považovat za aktivní

Pokud je proces neaktivní, restartuje službu zadáním následujícího příkazu:

restartovat aplikaci systemctl

pokud je soubor.serv prázdný!

Pokud soubor.serv není prázdný a má spustitelná práva, pokusí se jej spustit jako prostý skript BASH.

To je užitečné, pokud je třeba kromě restartování služby ještě něco udělat.

Například v souboru spamd.serv z výše uvedeného úložiště v případě, že je služba spamd mrtvá, je třeba místo toho restartovat službu spamassassin, která také restartuje spamd. Restartování pouze spamu by nebylo dostačující.

Obsah takového servového souboru lze upravit podle potřeb.

Dalším příkladem je soubor pcscd.serv. V tomto případě bylo také restartováno/zabito několik dalších procesů.

Pokud existuje kontrolní soubor, po kontrole, zda je proces spuštěn, spustí také tento soubor skriptu a provede další kontroly.

Například pro službu oscam jsme vytvořili kontrolní soubor, který se pokusí připojit k jeho webovému rozhraní, aby zjistil, zda je úspěšný. Pokud ne, služba navzdory aktivnímu procesu nereaguje a je třeba ji restartovat. Restart služby musí provést/vyvolat samotný soubor.check.

Dalším příkladem by byla služba DLNA Mediatomb.

Jedná se o malý server, který poskytuje video/audio obsah klientům DLNA a sám se vysílá v síti. Někdy služba zablokuje a již ji nelze zjistit, ale proces bude stále aktivní. Ke kontrole, zda je služba zjistitelná, byl použit nástroj CLI s názvem gssdp-discovery. Celý kód, který kontroluje server DLNA, byl umístěn do skriptu mediatomb.check.

Toto je jen několik příkladů, jak můžete použít soubory.serv a.check.

Abyste mohli sledovat novou službu, musíte vytvořit.serv a v případě potřeby také kontrolní soubor a napsat do nich odpovídající skript.

Pokud stačí pouze zkontrolovat přítomnost procesu, bude stačit prázdný soubor.serv. Pokud je nutné provést další kontroly, musí být vytvořen soubor.check a pro provedení úlohy musí být napsán malý skript.

Je samozřejmé, že skript.sh je nutné spouštět pravidelně, a proto pro něj musí být také vytvořena úloha cron:

#check běžící služby každých 5 minut */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Krok 3: Závěrečné myšlenky

Doufám, že vám tento balíček bude užitečný, protože může velmi jednoduše monitorovat procesy Linuxu a doufejme, že minimalizuje prostoje vašich služeb.

Neváhejte nahrát další skripty na github, pokud vytvoříte nové. Dejte mi vědět a já si vás přidám jako přispěvatele.

Doporučuje: