Obsah:

Skript Service Monitor pre servery Linux: 4 kroky
Skript Service Monitor pre servery Linux: 4 kroky

Video: Skript Service Monitor pre servery Linux: 4 kroky

Video: Skript Service Monitor pre servery Linux: 4 kroky
Video: How to run a Python script On Ubuntu 22.04 LTS Linux 2024, November
Anonim
Skript Service Monitor pre servery Linux
Skript Service Monitor pre servery Linux

Mať stabilný, vždy spustený systém, aj keď používate Linux, môže byť náročná úloha.

Vzhľadom na zložitosť moderných softvérových balíkov a zlé kódovanie môžu niektoré procesy z času na čas nevyhnutne zlyhať. Ak máte server a niektorí ľudia sa na tieto služby spoliehajú, môže to byť zlá vec.

Krok 1: Použitie metód poskytovaných spoločnosťou Systemd

Ako už možno viete, väčšina moderných operačných systémov Linux používa systemd.

Ak nie ste oboznámení so systémom, je to podľa wikipédie:

„… inicializačný systém používaný v distribúciách Linuxu na zavedenie užívateľského priestoru a následnú správu všetkých procesov namiesto inicializačných systémov UNIX System V alebo Berkeley Software Distribution (BSD).…“

Mnoho ľudí stále argumentuje, prečo bolo potrebné nahradiť starý dobrý systém init týmto komplikovanejším systémom riadenia procesov, ale na nasledujúcom odkaze možno nájdete dobré vysvetlenie:

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

Najdôležitejším vylepšením by bolo, že dokáže načítať systém rýchlejšie ako init, kvôli súbežnému a paralelnému spracovaniu pri zavádzaní namiesto sekvenčného prístupu init

Bez toho, aby ste sa dostali do hĺbky systemd, aby ste do systému mohli pridať proces, musíte vytvoriť súbor služby. Syntax takého súboru môže byť veľmi jednoduchá až úplne komplikovaná a nebudeme zachádzať do podrobností. Na to, aby ste mali základný súbor.service, stačí použiť nasledujúce 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 [Inštalovať] WantedBy = multi-user.target

Umiestnite ich do súboru application.service v priečinku/lib/systemd/system.

Čo robí každá z týchto možností, je vysvetlené v nasledujúcom odkaze:

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

Pred spustením aplikácie zadajte nasledujúci príkaz:

sudo systemctl spustiť application.service

Poznámka: príponu.service je možné vynechať.

Zastavenie aplikácie:

sudo systemctl stop application.service

Ak bol konfiguračný súbor zmenený a chcete znova načítať nastavenia:

sudo systemctl znova načítať application.service

Reštartovanie aplikácie:

sudo systemctl reštartujte aplikáciu.služba

Ak chcete povoliť automatické spustenie pri zavádzaní:

sudo systemctl povoliť application.service

Ak je to povolené, správca systému systemd sa pokúsi spustiť aplikáciu na základe nastavení, ktoré poskytol systémový súbor.

Ak ho chcete zakázať, použite rovnaký príkaz ako vyššie, ale s parametrom „zakázať“.

Ak do servisného súboru umiestnite Restart = vždy, potom systemd bude proces monitorovať a ak ho nenájde v zozname procesov, pokúsi sa ho automaticky reštartovať.

Ak sa umiestnite

RestartSec = 30

po direktíve reštartu bude 30 sekúnd čakať, kým sa pokúsite reštartovať proces. To môže byť užitočné, pretože nepretržitý pokus o reštart chybnej služby/aplikácie môže viesť k vysokému dopytu po systéme (zapisovanie protokolov chýb atď.)

Ako vidíte, systemd už poskytuje určité prostriedky na monitorovanie procesov. V niektorých prípadoch to však nemusí stačiť. Čo keď sa proces neukončí (stále bude v zozname procesov), ale prestane reagovať. V takom prípade budete potrebovať ďalšie kontroly, aby ste sa uistili, že je proces skutočne spustený.

Tu sa vám budú hodiť skripty z tohto návodu.

Krok 2: Konfigurácia a používanie skriptov služby Checker

Ak potrebujete väčšiu kontrolu nad spustenými procesmi/službami, tieto skripty vám určite pomôžu.

Pretože je kód trochu veľký, nahrá sa do githubu a nájdete ho v nasledujúcom úložisku:

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

Srdcom celého balíka je

checkService.sh

Pred použitím musíte nahradiť úplnú cestu k priečinku služby. To nájdete na začiatku scenára.

Skript môže monitorovať niekoľko procesov a vykonávať ďalšie úlohy, ako je popísané nižšie:

Prechádza každým súborom z podpriečinka /services s príponami.serv alebo.check a skontroluje, či existuje aktívny proces s názvom 'aplikácia'.

Ak pre aplikáciu neexistuje súbor „.check“, iba súbor application.serv:

Ak je proces aktívny, bude ho považovať za aktívny

Ak je proces neaktívny, reštartuje službu zadaním nasledujúceho príkazu:

reštartovať aplikáciu systemctl

ak je súbor.serv prázdny!

Ak súbor.serv nie je prázdny a má spustiteľné práva, pokúsi sa ho spustiť ako obyčajný skript BASH.

Je to užitočné, ak je potrebné okrem reštartovania služby urobiť aj niečo navyše.

Napríklad v súbore spamd.serv z vyššie uvedeného úložiska platí, že v prípade, že je služba spamd mŕtva, je potrebné namiesto toho reštartovať službu spamassassin, ktorá taktiež reštartuje spam. Reštartovanie iba spamu by nestačilo.

Obsah takého servisného súboru je možné upravovať podľa potrieb.

Ďalším príkladom je súbor pcscd.serv. V tomto prípade bolo tiež reštartovaných/zabitých niekoľko ďalších procesov.

Ak existuje kontrolný súbor, po kontrole, či je proces spustený, spustí aj tento súbor skriptu, aby vykonal ďalšie kontroly.

Napríklad pre službu oscam sme vytvorili kontrolný súbor, ktorý sa pokúša pripojiť k jeho webovému rozhraniu a zistiť, či je úspešný. Ak nie, potom napriek tomu, že je proces aktívny, služba nereaguje a je potrebné ju reštartovať. Reštartovanie služby musí vykonať/vyvolať samotný súbor.check.

Ďalším príkladom by bola služba DLNA Mediatomb.

Jedná sa o malý server, ktorý poskytuje video/audio obsah klientom DLNA a vysiela sa sám v sieti. Služba niekedy prestane fungovať a už ju nemožno nájsť, ale proces bude stále aktívny. Na kontrolu, či je služba zistiteľná, bol použitý nástroj CLI s názvom gssdp-find. Celý kód, ktorý kontroluje server DLNA, bol umiestnený do skriptu mediatomb.check.

Toto je len niekoľko príkladov toho, ako môžete použiť súbory.serv a.check.

Aby ste mohli monitorovať novú službu, musíte vytvoriť.serv a v prípade potreby aj kontrolný súbor a napísať do nich príslušný skript.

Ak iba kontrolujete prítomnosť procesu, ak je to dostatočné, bude stačiť prázdny súbor.serv. Ak je potrebné vykonať dodatočné kontroly, je potrebné vytvoriť súbor.check a napísať malý skript, ktorý úlohu vykoná.

Samozrejme, skript.sh sa musí spúšťať pravidelne, preto preň treba vytvoriť aj úlohu cron:

#check spustené služby každých 5 minút */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

Krok 3: Záverečné myšlienky

Dúfam, že vám bude tento balík užitočný, pretože môže do značnej miery jednoducho monitorovať procesy Linuxu a dúfajme, že minimalizuje prestoje vašich služieb.

Ak vytvoríte nové, môžete na github nahrať ďalšie skripty. Dajte mi vedieť a ja vás pridám ako prispievateľa.

Odporúča: