Obsah:
- Krok 1: Použití metod poskytovaných Systemd
- Krok 2: Konfigurace a používání skriptů služby Checker
- Krok 3: Závěrečné myšlenky
Video: Service Monitor Script pro servery Linux: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
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:
Instalace subsystému Windows pro Linux (WSL): 3 kroky
Instalace Windows Subsystému pro Linux (WSL): Tato sada pokynů má pomoci uživatelům nainstalovat Windows Subsystem pro Linux na jejich počítač s Windows 10. Konkrétní distribuce Linuxu, kterou bude tato sada instrukcí používat, se nazývá Ubuntu. Zde najdete přehled různých Linux
Jak vytvořit 2D znak pomocí ovladače znaků v Unreal Engine 4 pomocí Visual Script pro PC: 11 kroků
Jak vytvořit 2d znak pomocí ovladače znaků v Unreal Engine 4 pomocí Visual Script pro PC: Jak vytvořit 2d znak pomocí ovladače znaků v Unreal Engine 4 pomocí vizuálního skriptu pro PC Ahoj, jsem Jordan Steltz. Video hry vyvíjím od svých 15 let. Tento tutoriál vás naučí, jak vytvořit základní postavu pomocí
Základy terminálu pro Linux: 3 kroky
Základy terminálu Linux: Když jsem poprvé zavedl Linux, prohlížel jsem si aplikace a narazil jsem na terminál. Terminál bude hlavním zaměřením tohoto pokynu. Zatímco terminál lze použít k velkým věcem, tyto skvělé věci mohou být dobré i špatné. F
Změňte své servery DNS na OpenDNS: 6 kroků
Změňte své servery DNS na OpenDNS: Servery AOL byly v poslední době trochu nekvalitní a nefungovaly správně, což znamenalo, že některé nešťastné duše, jako jsem já, neměly přístup na určité webové stránky (hlavně wiggle.co.uk). Způsob, jak to opravit, je změnit DNS
Soukromé servery WoW: 3 kroky
Soukromé servery WoW: To vám ukáže, jak hrát World of Warcraft bez placení !!! Existují servery, které vám okamžitě poskytnou úroveň 80, položky zdarma atd. Existují také jen běžné servery, pokud chcete hrát opravdově. Poznámka: možná budete muset zaplatit za skutečnou hru