- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 03-04/2001

Monitorování dostupnosti služeb - MON

David Häring, 1. dubna 2001

Existuje řada nástrojů určených k nepřetržitému monitorování dostupnosti důležitých (nejen) síťových služeb. Jedním z takových nástrojů je i utilita mon, na kterou se dnes blíže podíváme.

Mon sestává z plánovacího procesu (serveru), který podle konfigurace v určitých intervalech spouští testovací akce. V závislosti na výsledku testů pak v případě potřeby provádí další předem definované akce (např. upozornění prostřednictvím e-mailu) a zapisuje výpadky služeb do logu. Vlastní testy, stejně jako i akce prováděné při výpadku jednotlivých služeb, jsou realizovány samostatnými utilitami (tzv. monitory), které jsou nezávislé na plánovacím procesu monu. Dodejme ještě, že mon je napsán v Perlu a přímo v distribuci monu je řada utilit pro testování běžně používaných služeb. Toto uspořádání je výhodné, protože veškeré pomocné utility lze snadno uzpůsobit "na míru" místním potřebám či přidat nové bez nutnosti zasahovat do vlastního serveru monu.

Distribuce monu kromě vlastního plánovacího serveru obsahuje utility moncmd (utilita pro příkazovou řádku, slouží pro ovládání serveru - server je možno restartovat, zapínat či vypínat monitorování skupin nebo jednotlivých strojů, upravovat konfiguraci za běhu apod.) a monshow (slouží k prohlížení stavu monitorovaných služeb; utilita je buď pro použití z příkazové řádky, anebo ji lze použít přes www jako CGI aplikaci). Mezi monitory obsaženými v distribuci monu jsou například monitory služeb SMTP, FTP, TELNET, HTTP, POP-3, IMAP, DNS, LDAP, SQL.

Instalace

Mon pracuje s řadou perlovských modulů, které zpravidla nejsou k dispozici v obvyklých instalacích Perlu. Seznam modulů, které jsou zapotřebí, je uveden v souboru INSTALL; k dispozici jsou na kterémkoliv zrcadle CPANu Kromě toho je zapotřebí instalovat také klientskou část monu, která je rovněž dostupná jako modul na CPANu anebo na domovské stránce monu.

# Definujeme dvě skupiny strojů (servers a nameservers)
hostgroup servers server1.domena.cz server2.domena.cz server3.domena.cz
hostgroup nameservers 11.22.33.44 11.22.33.45

# Ve skupině servers monitorujeme služby ping, http, ssh, mySQL

watch servers # ping každé dvě minuty, notifikace e-mailem pokud je systém alespoň 2x # nedostupný v intervalu 10 minut service ping interval 2m monitor fping.monitor period wd {Sun-Sat} alert mail.alert admin@domena.cz upalert mail.alert -S "server is alive" admin@domena.cz alertafter 2 10m alertevery 2h upalertafter 4m numalerts 5 # http monitorujeme každé tři minuty, notifikace e-mailem pokud je systém # alespoň 2x nedostupný v intervalu 15 minut service http interval 3m monitor http.monitor depend servers:ping period wd {Sun-Sat} alert mail.alert admin@domena.cz upalert mail.alert -S "http service is back up" admin@domena.cz alertafter 2 15m alertevery 2h numalerts 5 # Službu ssh monitorujeme 1x za hodinu, každý výpadek je hlášen e-mailem. # Monitor se připojí na port SSH a kontroluje service ssh interval 1h monitor ssh.monitor depend servers:ping period wd {Sun-Sat} alert mail.alert admin@domena.cz upalert mail.alert -S "ssh service is back up" admin@domena.cz alertevery 2h numalerts 5 # Dostupnost SQL databáze monitorujeme jednou za 4 minuty, notifikace e-mailem # pokud je systém alespoň 2x nedostupný v intervalu 15 minut. Testování probíhá # tak, že se monitor připojí k databázi a vypíše seznam tabulek service mysql interval 4m monitor mysql.monitor --username=testuser --password=testpswd \ --database=dbtest depend servers:ping period wd {Sun-Sat} alert mail.alert admin@domena.cz upalert mail.alert -S "SQL server is back up" admin@domena.cz alertafter 2 15m alertevery 2h numalerts 5 # Ve skupině nameserver monitorujeme dostupnost DNS tak, že každou hodinu stahujeme # SOA záznam z primárního serveru pro zónu domena.cz (11.22.33.44). Následně je # porovnáno sériové číslo zóny mezi primárním a sekundárními servery (11.22.33.45) watch nameserver service dns interval 1h monitor dns.monitor -zone domena.cz -master 11.22.33.44 11.22.33.45 period wd {Sun-Sat} alert mail.alert admin@domena.cz upalert mail.alert -S "DNS server is back up" admin@domena.cz alertevery 2h numalerts 5

Výpis: Ukázka části konfiguračního souboru mon.cf

Pokud máme všechny požadované moduly instalovány, můžeme přikročit k instalaci serveru. Po rozbalení distribuce v podstatě stačí pouze vytvořit konfigurační soubory /etc/mon.cf a /etc/auth.cf (můžeme vyjít z příkladů konfigurací přiložených v distribuci) a přidat záznam do /etc/services (detaily viz soubor INSTALL v distribuci monu).

Na závěr zbývá volitelně přeložit některé monitory, které jsou napsány v C (týká se např. monitoru RPC služeb), pokud tyto monitory nehodláme používat, můžeme tento krok přeskočit.

     server: localhost
       time: Sun Apr 1 10:56:30 2001
      state: scheduler running
  GROUP           SERVICE      STATUS      LAST       NEXT       ALERTS SUMMARY
R nameservers     ping         -           28 secs    00:01      none
D nameserers      dns          -           00:33 ag   00:26      none
R servers         ping         -           6 secs a   00:01      none
D servers         http         -           00:02 ag   00:01      none
D servers         mysql        -           00:03 ag   58 secs    none
D servers         ssh          -           00:30 ag   00:29      none

Výpis: Ukázka výpisu statusu monu - (příkaz monshow --full)

Konfigurace

Konfigurační soubor hledá mon standardně v /etc/mon.cf. Kromě obecných nastavení cest k souborům, metod autentizace uživatelů apod. se zde nachází definice služeb, které jsou monitorovány. Syntaxe konfiguračního souboru je jednoduchá, proto pro ilustraci uvedeme pouze okomentovaný příklad části konfiguračního souboru (Ukázka části konfiguračního souboru mon.cf).

Autentizace uživatelů

Pokud jde o kontrolu přístupu k monu, mon podporuje tři typy autentizace: přímé použití souboru /etc/passwd, hesla uložená ve zvláštním souboru (formát obdobný jako používá web server apache) a autentizace pomocí PAM. Mon neumí pracovat s hesly ukládanými v souborech /etc/shadow, což ale vzhledem k tomu, že většina distribucí dnes již PAM podporuje nevadí. Seznam akcí, které jsou jednotliví uživatelé oprávněni provádět je uložen odděleně v souboru auth.cf.

Mon neumožňuje omezení přístupu podle jmen strojů či IP adres. Kromě používání autentizace uživatelů je z hlediska zabezpečení určitým řešením zajistit pomocí direktiv serverbind a trapbind, aby se mon navázal pouze na porty rozhraní loopback (127.0.0.1). Flexibilnější a bezpečnější řešení je použití firewallu.

Webové rozhraní

První z možností je použít utilitou monshow, viz Ukázka výpisu statusu monu - (příkaz monshow --full), která je součástí distribuce monu. Monshow může být spouštěn buď z příkazové řádky anebo jako CGI aplikace s tím, že vzhled webového rozhraní lze definovat pomocí tzv. náhledů ("views"). Dvěma alternativními nástroji jsou mon.cgi a Minotaure.

Mon.cgi zpřístupňuje veškerou funkčnost monu včetně administrace. Instalace je jednoduchá - v podstatě pouze rozbalíme skript do příslušného adresáře, upravíme a nakonfigurujeme web server. Mon.cgi při komunikaci používá cookies, ve kterých je uloženo uživatelovo heslo zašifrované algoritmem TripleDES, takže v případě, že nepoužijeme https, heslo putuje v nezašifrované podobě mezi klientem a serverem pouze jednou. Na obrázku vidíme mon.cgi v akci.

Závěrem

Mon je velmi dobře konfigurovatelný nástroj, navíc kromě řady monitorů běžně používaných služeb není problém vytvořit si další monitory podle potřeby. Také existuje diskusní fórum uživatelů monu včetně archívu, kde lze řešit případné problémy. Hledáte-li vhodný nástroj pro monitorování dostupnosti síťových služeb, mon určitě stojí za povšimnutí. *


- předchozí článek - následující článek - obsah - úvodní stránka -