Nagios, Icinga SLA kimutatás
Korábban bemutattam, hogy lehet telepíteni az Icinga infrastruktúra monitorozó alkalmazást chroot-olt környezetbe. Ott leírtam az ido2db modul telepítésének lépéseit. Ezt Nagioshoz már csomagkezelőből is lehet telepíteni a frissebb rendszereknél. A csomag neve: ndoutils-common, ndoutils-nagios3-mysql. Ezzel nagioshoz az ndo2db modul bírható működésre.
A Nagiosnak (Icinga is) van beépített SLA riport generátora, ami a logokat feldolgozva információt ad az adott host vagy service rendelkezésreállásáról. ennek használata egyszerű, de egy kicsit körülményes.
Az adatbázisban tárolt alertekből magunk is készíthetőnk jobban kézreálló riport generátort. Készítettem egyet, ezt mutatom be.
Adatforrás
Az adatokat természetesen az ido2db vagy ndo2db adatbázisából szerzem, így aktuális adatokkal dolgozhatunk. Az alábbi SQL utasítással a megfelelő adatokból View táblát készítettem a további lépések leegyszerűsítéséhez. A táblanevet ellenőrizve alkalmazható az alábbi utasítás:
CREATE VIEW notifications as SELECT
UNIX_TIMESTAMP(entry_time) as date,
REPLACE(SUBSTRING_INDEX(logentry_data, ';', 1),'SERVICE ALERT: ','')as host,
SUBSTRING_INDEX(SUBSTRING_INDEX(logentry_data, ';', 2), ';', -1) as service,
SUBSTRING_INDEX(SUBSTRING_INDEX(logentry_data, ';', 3), ';', -1) as state,
SUBSTRING_INDEX(SUBSTRING_INDEX(logentry_data, ';', 4), ';', -1) as state_type,
SUBSTRING_INDEX(SUBSTRING_INDEX(logentry_data, ';', 5), ';', -1) as state_type_num,
SUBSTRING_INDEX(SUBSTRING_INDEX(logentry_data, ';', 6), ';', -1) as notification
from icinga_logentries
where logentry_data like 'SERVICE ALERT%'
Látható, hogy az egyébként nem Unixtimestamp- ként tárolt időpontból Unixtimestamp-ot készítek. Így egyszerűbb lesz az időpontok között eltelt időt kiszámítani.
Adat feldolgozás
Az előzőleg előkészített adatokat célszerűen web-es felülettel dolgozom fel, így az egész rendszer a Nagios (Icinga) mellett tárolható.
A felület nem túl összetett, a host vagy service kiválasztásán kívül a kezdeti és vég dátum kiválasztására van lehetőség. Persze az összegyűjtött adatok sokkal részletesebben feldolgozhatók.
A kiesést a CRITICAL állapot első megjelenése és a következő OK állapot között számoltam. Ez azt jelenti, hogy a CRITICAL állapot beálltakor a SOFT (state) és 1 (attempt) a kezdeti időpont és az OK állapot beállta a kiesés kezdő és záró időpontja. Az állapotokról és attempt értékekről A Nagios lehetőségei írásomban részletesebb leírást találsz.
A kieséseket összesítem és SLA-t számolok az adott időszakra. Az események megjelenítése perc bontásban jelennek meg, de a kiesés másodperc pontosan van számolva, így a megjelenített és számolt adatok között minimális eltérés látszik - a könnyebb olvashatóság érdekében.
A megjelenítő alkalmazást átadom, a részleteket megbeszéljük.