V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

Icinga

Z Multimediaexpo.cz


Icinga je populární open source systém pro automatizované sledování stavu počítačových sítí a služeb těchto sítí. Jeho nasazení je primárně směřováno na operační systém Linux, avšak funguje na všech UN*X kompatibilních systémech (včetně Solarisu a HP-UX). Je vyvíjen a vydáván pod licencí GNU GPL verze 2. Sleduje síťové uzly a jejich služby, upozorňuje uživatele, když je problém na síti a stejně tak je upozorňuje, když je problém vyřešen.

Obsah

Vznik projektu

Projekt Icinga vzniknul jako fork projektu Nagios, se kterým je konfiguračně kompatibilní. Původní kód Nagiosu je postupně přepisován,tak, aby vyhovoval novým požadavkům, ale zároveň zůstal co nejvíce konfiguračně kompatibilní pro přechod z Nagiosu.

Možnosti kontrol

Ve standardní distribuční balíčku Icinga nenabízí žádné monitorovací pluginy. Tyto pluginy je nutné stáhnout ze stránek projektu Nagios, od kterého kontrolní pluginy přebírá a je s nimi kompatibilní.

  • Monitoring standardních síťových služeb
    • Monitorováno pokusem o spojení se službou a komunikací se službami (SMTP, POP3, IMAP, HTTP, …)
  • Sledování stavu serveru
    • Hardware - Pomocí protokolu SNMP se ptá Icinga na parametry HW, to je dostupné převážně u Enterprise zařízení (teplota komponent, odběr proudu, atd…)
    • Software - Monitoring operačního systému, vytížení paměti, CPU, počet spuštěných procesů, volné místo na disku

Architektura

Icinga je rozdělena do několika modulů. Hlavní modul je Icinga Core, který se stará o provádění jednotlivých kontrol. Výsledky těchto kontrol jsou ukládány přes komponentu IDOMOD do IDO2DB. Prezentovány jsou vrstvou Icinga Web.

Icinga Core

Hlavním motorem celého systému je modul Icinga Core, který provádí jednotlivé kontroly pomocí pluginů. Spouštění kontrol řeší integrovaný plánovač úloh, který řadí jednotlivé kontroly do fronty. Plánovači lze nastavit souběžný počet prováděných kontrol, toto nastavení je důležité v případě, že je kontrolována rozlehlá WAN síť, ve které jsou odezvy v řádu stovek milisekund. Přes webové rozhraní lze také nastavit předbíhání kontrol.

Výsledky kontrol jsou ukládány jednak do cache, ve které je aktuální obraz stavu sítě, tak pomocí IDOMOD do perzistentního úložiště. Z tohoto úložiště umí modul Core generovat reporty a počítat dostupnost služby někdy také nazývané SLA.

Tento modul se také stará o notifikace uživatelů. Notifikace jsou zasílány přes plugin architekturu, takže se Icinga vůbec nestará jakou metodou jsou tyto notifikace odeslány. Administrátor si může zvolit téměř jakoukoliv notifikační metodu, kterou je schopen na serveru zkonfigurovat.

Plugin Architektura

Architektura pluginů je velmi jednoduchá, ale zároveň velmi mocná. Tyto pluginy jsou použity jak pro kontroly strojů, tak pro notifikace uživatele a případné vykonávání automatických oprav. Architektura pluginů je postavena na vykonávání příkazů z příkazové řádky a přebírání výsledků ze standardního výstupu. Díky tomuto přístupu lze napsat plugin v jakémkoliv jazyce, který lze poté vykonat na příkazové řádce. Notifikace o problémech fungují úplně stejně, takže například odeslání notifikace e-mailem je řešeno skriptem, který zavolá příkaz mail s potřebnými parametry.

Icinga Core v sobě také obsahuje webové rozhraní, toto rozhraní je nazýváno Icinga Classic UI. Classic UI vychází z původního webového rozhraní, které používal předchůdce Icinga - Nagios. Tvůrci Icinga rozhraní jemně faceliftovali a adaptovali pro potřeby Icinga.

IDOMOD

Je komponenta, která je zodpovědná za ukládání výsledků kontrol prováděných modulem Icinga Core do perzistentního úložiště. Podporuje celou řadu úložišť od nejjednodušších textových souborů po relační databáze. Do relačních databází zapisuje Icinga pomocí modulu IDO2DB. Module IDO2DB v současné době podporuje databáze MySQL, PostgreSQL, Oracle. Architektura umožňuje mít oddělený stroj s komponentou IDO2DB.

Icinga Web

Je webovým rozhraním pro zobrazení stavu monitorované sítě. Využívá moderní technologie souhrnně nazývané AJAX. Serverová strana Icinga Web je naprogramována jazyce PHP a využívá frameworku Agavi. Klientská strana je téměř kompletně celá realizována javascriptovým frameworkem ExtJS. První načtení rozhraní vyžaduje přenos více než 10 megabajtů dat, což není málo. Po prvním načtením již však vše funguje velmi rychle. Pro přenos živých dat mezi serverem a klientem se používá standardu JSON, autoři to zdůvodňují tím, že to byla přirozená volba, vzhledem k tomu, že celé rozhraní je naprogramováno v javascriptu. Uživatelské prostředí je velmi flexibilní a konfigurovatelné a to hlavně díky využití Widgetů, ty se v Icinga se nazývají Cronky. Autoři si dali velmi záležet na zobrazení mapy sítě, která je nyní celá interaktivní a ani při velkém počtu uzlů navázaných na jeden uzel se mapa nestává nepřehlednou.

Nagios Remote Procedure Execution

Icinga spolupracuje s Nagios Remote Procedure Execution dále jen NRPE. Tento software není součástí distribuce Icinga a je potřeba ho převzít z distribučních balíčku Nagios NRPE.

NRPE umožňuje provádět kontroly lokálně na vzdálených strojích. Tento mechanismus umožňuje kontrolovat velmi zabezpečené stroje. Systému stačí pouze jeden otevřený TCP port. Monitorovací server zašle žádost na kontrolu, v této žádosti je zaslán pouze název kontroly. Obsah této kontroly je zkonfigurován lokálně na serveru, takže nehrozí kompromitace bezpečnosti kontrolovaného stroje. Na straně monitorovacího serveru se kontrola vykonává pluginem check_nrpe s dvěma parametry – IP adresa kontrolovaného stroje a název kontroly na kontrolovaném stroji.

Konfigurační soubory

Konfigurace Icinga je rozdělena do mnoha konfigurační souborů. Hlavním konfiguračním souborem je icinga.cfg, který se zpravidla nachází v adresáři /etc/icinga V tomto konfiguračním souboru je definováno umístění dalších konfigurační souborů pro kontroly sítě a chování webového rozhraní. V hlavním konfiguračním souboru je také definováno chování Icinga Core.

Konfigurace kontroly služby na stroji je definována na dvou místech. Nejprve je definována v souboru checkcommands.cfg. Tam je definován příkaz s parametry. Tento příkaz je při každé kontrole spuštěn a jeho výsledek je vrácen na standardní vstup a přejat Icinga Core k dalšímu vyhodnocení. Následující ukázka konfigurace ukazuje definici příkazu ke zjištění dostupnosti IMAP protokolu na serveru s adresou, která je předána pomocí proměnné $HOSTADDRESS$

# 'check_imap' command definition
define command{
	command_name    check_imap
	command_line    $USER1$/check_imap -H $HOSTADDRESS$
}

Nejdůležitější konfigurační částí je definice síťových uzlů a jejich služeb. U malých sítí se tato konfigurace nejčastěji zapisuje do jednotlivých souborů s příponou .cfg, přičemž každý soubor reprezentuje jeden uzel.

define host{
	use			server            ; Name of host template to use
	host_name		jennifer
	alias			Server Jennifer
	address		192.168.1.1
	check_command	check-host-alive
}

define service{
	use 			server-service  ; Name of service template to use
	host_name		jennifer
	service_description	IMAP server
	servicegroups	mail-services
	check_command	check_imap
}

Výše uvedenou konfigurací jsme zkonfigurovali uzel s názvem jennifer, který má IP adresu 192.168.1.1 a jeho dostupnost hlídáme kontrolou s názvem check-host-alive. Na tomto serveru také kontrolujeme, jestli je dostupný IMAP server pomocí kontroly s názvem check_imap.

Externí odkazy