přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: Hlídání pomocí Monitu (pokračování)

Správa linuxového serveru: Hlídání pomocí Monitu (pokračování)

debain_notext.png

Minulý díl představil nástroj Monit a jeho základní konfiguraci, tento díl půjde o kus dále a ukáže vám některé další příklady konfigurace Monitu, včetně monitorování služeb běžících na jiných počítačích. Chybět nebude ani představení webového a konzolového rozhraní Monitu.


Další příklady konfigurace hlídání služeb

Hlídání např. webového serveru se nemusí omezit na pouhou kontrolu, zdali server odpovídá na portu 80, popřípadě 443. Je možné si vyžádat a prověřit i konkrétní URL na konkrétní doméně, jak je naznačeno níže:

check process apache with pidfile /var/run/apache2.pid
      start "/etc/init.d/apache2 start"
      stop  "/etc/init.d/apache2 stop"
      if failed host www.domena.tld port 80 protocol http
        and request "/doku.php"
        with timeout 15 seconds
        then restart
      if cpu > 60% for 2 cycles then alert
      if cpu > 80% for 5 cycles then restart
      if totalmem > 600.0 MB for 5 cycles then restart
      if children > 250 then restart
      if 3 restarts within 5 cycles then timeout
      group lamp

Jednotlivé služby je možné seskupovat do celků, se kterými se pak dá zacházet najednou, tzn. provést restart, zastavit služby, vypnout či zapnout jejich hlídání atd. Této vlastnosti využijete především při práci s konzolovým obslužným nástrojem. Službu zařadíte do skupiny pomocí direktivy group. V příkladu výše je hlídaný Apache členem skupiny „lamp“.

Monit umožňuje sledovat i jednotlivé konfigurační soubory, umí je přiřadit ke konkrétní službě a umí dokonce reagovat na jejich změny:

check process apache with pidfile /var/run/apache2.pid
    start "/etc/init.d/apache2 start"
    stop  "/etc/init.d/apache2 stop"
    [...]
    group server
    depends on httpd.conf
    
check file httpd.conf 
    with path /etc/apache/httpd.conf
    if changed checksum 
       then exec "/usr/sbin/apache2ctl graceful"

Zde je na změnu httpd.conf navázán automatický restart Apache. Je to samozřejmě pouze příklad, v praxi bych se asi k něčemu takovému neuchyloval, abych pak náhodou při nějaké rozsáhlejší změně konfiguračních souborů uprostřed práce nezjistil, že mi Monit na pozadí restartoval Apache, který se samozřejmě kvůli chybě v syntaxi konfigurace znovu nespustil.

V tomto příkladu je však patrná ještě jedna direktiva, a sice direktiva závislosti, tedy „depends on“. Tímto způsobem je možné vytvářet mezi jednotlivými hlídanými službami závislostní vazby, které pak Monit při všech operacích bere v úvahu.

Monitorování vzdálených systémů a služeb

Pomocí Monitu lze však hlídat nejenom lokálně běžící služby, ale také vzdálené služby a počítače v síti. Můžete tak z jednoho místa monitorovat stav všech svých serverů. Jednoduchý příklad hlídání vzdáleného serveru následuje:

check host domena.tld with address domena.tld
      if failed icmp type echo count 3 with timeout 15 seconds for 5 cycles then alert
      if failed port 25 proto smtp for 5 cycles then alert
      if failed port 80 proto http for 5 cycles then alert
      if failed port 22 proto ssh for 5 cycles then alert

Základem pro monitorování vzdálených serverů je jejich dostupnost na síti, což lze testovat prostřednictvím protokolu ICMP (viz druhý řádek příkladu). Zde, pokud na ping vzdálený server neodpoví během pěti cyklů Monitu, zašle se o tom upozornění správci. Hlídání je pak nastaveno tak, že se v každém cyklu zasílají celkem tři ICMP pakety a na odpověď se čeká po dobu patnácti sekund.

Hlídání dalších služeb pak následuje (řádky 3-5). V tomto případě se jedná o testování fungování příslušného protokolu, nikoliv tedy o pouhý test TCP spojení. Monit podporuje celou řadu protokolů, viz tato část oficiální dokumentace.

Webové rozhraní Monitu

Stav služeb a jejich správu je možné realizovat nejenom prostřednictvím konzolového nástroje (viz dále), ale také pohodlně pomocí webového rozhraní. V případě Monitu není třeba používat webový server k jeho zobrazení, ten si Monit zajišťuje sám, stačí tedy toto rozhraní pouze nakonfigurovat. Nastavení webového rozhraní může vypadat například takto:

set httpd port 2812 and
     ssl enable
     pemfile /etc/cert/server.pem
     use address localhost
     allow localhost
     allow admin:monit

Toto nastavení využívá SSL s certifikátem umístěným v /etc/cert/server.pem. Webový server bude v tomto případě Monitu naslouchat pouze na localhostu (viz čtvrtý řádek), bude také povolovat spojení pouze z localhostu (pátý řádek) a bude vyžadovat HTTP autentzaci s uživatelským jménem „admin“ a heslem „monit“ (doporučuji změnit na něco složitějšího a ujistit se, že soubor s konfigurací Monitu nepřečte obyčejný uživatel na serveru).

Abyste získali představu, jak toto rozhraní vypadá, podívejte se na následující snímky obrazovek. Předem se omlouvám za nutnou cenzuru některých položek. Základní obrazovka webového rozhraní Monitu vypadá následovně:

Základní obrazovka webového rozhraní Monitu Základní obrazovka webového rozhraní Monitu

Pokud byste se podívali na detail některé hlídané služby, vypadalo by to takto:

Detail hlídané služby Detail hlídané služby

Jak je z obrázku patrné, službu je možné ovládat pomocí tlačítek ve spodní části obrazovky. Snadno tak zajistíte vzdálený restart bez nutnosti použít příkazovou řádku. Detail hlídání vzdáleného serveru může vypadat kupříkladu takto:

Detail hlídaného vzdáleného serveru Detail hlídaného vzdáleného serveru

Otázkou zůstává, jak co nejbezpečněji zpřístupnit rozhraní Monitu zvenčí. Jednou z možností je použít SSH tunel, např. takto:

ssh -N -f uzivatel@server -L 3000:127.0.0.1:2812

Tento příkaz naváže SSH spojení se serverem „server“ jako uživatel „uzivatel“ a nabídne vám na místním portu 3000 vašeho počítače vzdálený port Monitu běžící na portu 2812 na IP adrese 127.0.0.1 (tedy na localhostu serveru), tzn. do prohlížeče pak stačí zapsat: https://localhost:3000/ a máte k dispozici webové rozhraní Monitu, se kterým komunikujete bezpečně přes SSH tunel.

Pokud vám na serveru běží webový server s PHP, můžete se podívat do /usr/share/doc/monit/contrib (platí pro Debian a z něj odvozené distribuce), kde se nachází soubor monit.php, který umožňuje zpřístupnit webové rozhraní Monitu prostřednictvím PHP kdekoliv na serveru. Pokud se rozhodnete pro tuto cestu, přístup k tomuto souboru určitě dobře zabezpečte.

Konzolové rozhraní Monitu

Funguje-li Monit jako démon, můžete využít řádkového nástroje monit ke zjišťování stavu služeb a servisním zásahům. Můžete si, kupříkladu, vypsat stav všech hlídaných služeb:

debian:~# monit summary
The Monit daemon 5.1.1 uptime: 19d 4h 31m 

System 'domena.tld'                 running
Process 'apache'                    running
Process 'postgresql'                running
Process 'sshd'                      running
Process 'postfix'                   running
Process 'denyhosts'                 running
Process 'dkim-filter'               not monitored
Remote Host 'domena1.tld'           online with all services
Remote Host 'domena2.tld'           ICMP failed
Remote Host 'domena3.tld'           online with all services

Z výpisu je patrná jedna nemonitorovaná služba a nedostupnost jednoho vzdáleného serveru (domena2.tld). Základních operací s jednotlivými službami je pět, a sice jejich nastartování (start), zastavení (stop), restart (restart), zahájení hlídání (monitor) a přerušení hlídání (unmonitor). Jako parametr kterékoliv z těchto akcí můžete specifikovat jméno konkrétní služby, nebo zvolit všechny služby pomocí parametru „all“. Zastavení Apache by vypadalo takto:

monit stop apache

Zajímavější je možnost využívání skupin (viz výše), tedy možnost provést konkrétní akci pro všechny služby z dané skupiny. Pokud byste měli skupinu „lamp“ a chtěli všechny její služby restartovat, provedli byste to takto:

monit -g lamp restart all

Ostatní volby a možnosti tohoto nástroje si můžete prohlédnout zadáním:

monit -h

Velmi flexibilní nástroj na hlídání systému

Monit je velmi flexibilní nástroj na hlídání systému, služeb i vzdálených počítačů. Nabízí velmi široké možnosti konfigurace, z nichž tu byl ukázán spíše jen nutný základ. Pokud se chcete dozvědět více, určitě nahlédněte do odkazů pod článkem, kde naleznete nejen oficiální dokumentaci, ale také wiki s řadou příkladů konfigurace služeb.

Nahoru

Odkazy

Příspěvky

Správa linuxového serveru: Hlídání pomocí Monitu (pokračování)
asdf 4. 03. 2011, 20:30:20
Odpovědět  Odkaz 
neslo by pouzit misto ssh tunelu stunnel?
Správa linuxového serveru: Hlídání pomocí Monitu (pokračování)
Michal Dočekal 5. 03. 2011, 20:20:43
Odpovědět  Odkaz 
S stunnelem jsem pracoval jen letmo a ještě navíc hodně dávno, nicméně mám dojem, že jeho primární funkcí je "obalit" démony komunikující nešifrovaně SSL vrstvou, a nabídnout tak možnost šifrované komunikace tam, kde to příslušný démon nepodporuje. Monit umí vytvořit SSL vrstvu sám, v článku je to i uvedeno, takže tato funkcionalita stunnelu třeba není.

SSH tunel jsem zmínil jako možnost zabezpečeného vzdáleného přístupu k webovému rozhraní Monitu, které není nakonfigurováno pro naslouchání na síti (a poslouchá tedy jen na localhostu).

Pokud chcete, můžete samozřejmě nechat Monit (se zapnutým SSL a dostatečně silným heslem) naslouchat na síti a neobtěžovat se s SSH tunelem. Můžete také použít jiné tunelování (OpenVPN, atd.).
Správa linuxového serveru: Hlídání pomocí Monitu (pokračování)
Rony 11. 03. 2011, 08:59:52
Odpovědět  Odkaz 
Potřeboval bych, pokud se provede automaticky automatický restart apache, aby se restartovala zaroven mysql. Porad se mi nedari prijit na to, jak toho docilit.
Pomoci depends ani group se mi to nedari. Nevi nekdo jak na to?

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz