Az ember alapvetően vizuális lény. Kivéve a linux rendszergazdát. Nekik (nekünk) van egy megkülönböztető tulajdonságuk: nem szeretik az egeret. Ez alapvetően nem nagy baj, sőt, az esetek többségében nem csak gyorsítja a munkát, de a kreatív gondolkodást is fejleszti.
Aki szerver oldali környezetben dolgozik, annak nem meglepő, hogy nagyon sok szoftverhez - amik alapvetően grafikus felülettel rendelkeznek -, elérhető egy parancssoros kliens is, ez a CLI (Command Line Interface). Ez nem csak linux/unix esetén igaz, a Windows szervernek is számos hasznos CLI-s eszköze van, és a rajta futó szoftvereknek is.
A logok elemzése ebből a szempontból érdekes kérdés, azt gondolhatnánk, hogy ez alapvetően vizuális folyamat, semmi szükség parancssoros varázslásokra. De használat közben hamar felmerül az igény arra, hogy egy gyorsan összedobott egysorossal (one-liner) kicsit átalakítsuk a kinyert adatokat, további információkat szedjünk ki belőlük.
Vannak egyéb igények, amik megkövetelik a CLI-t:
- a logelemzők nagy adatmennyiségeket kezelnek. Egy webes felület ugyan manapság már nem befolyásolja a keresések sebességét, de a megjelenített adatok mennyiségét korlátozza
- egy GUI kötötté teszi a megjelenítés formátumát, utólagos feldolgozása, átalakítása nehéz
- nagy mennyiségű adat feldolgozása, exportja nehézkes, ráadásul sokkal nehezebben oldható meg GUI-n keresztül, mint parancssorból
- egy GUI-n keresztül a funkciók automatizált/időzített futtatása bonyolult
A termék kiválasztásánál fontos szempont lehet, hogy milyen felületen/interfészen keresztük biztosítja a funkciói elérhetőségét, és van-e különbség az egyes interfészek által biztosított lehetőségek közül.
A LOGalyze logelemző motorja egy szabványos SOAP API-t biztosít, ami lehetővé teszi bárki számára, hogy saját kliens oldali csatolót készítsen. Mivel a LOGalyze Admin GUI is ezen keresztül csatlakozik az Engine-hez, biztosan lehetünk abban, hogy a CLI-vel minden olyan funkció elérhető/megvalósítható, ami a GUI-n keresztül.
A LOGalyze-CLI egy open-source project, ami ingyenesen elérhető minden LOGalyze felhasználó számára. Letölthető a https://sourceforge.net/projects/logalyze-cli/ weboldalról. Perl nyelven íródott, gyakorlatilag platformfüggetlen, gyors, könnyen telepíthető és használható.
Nézzük meg, hogyan!
A LOGalyze SOAP API alapvetően 2 típusú webszolgáltatást nyújt:
- az egyik csoportba olyan függvények tartoznak, amik session-től függetlenül hívhatók egy authentikációs kulcs (authkey) megadásával, amit az engine konfigurációs fájlja tartalmaz. Ide alapvetően monitoring jellegű funkciók tartoznak: belső feldolgozó sor méretének lekérdezése, stb.
- a másik csoportba tartozó függvények futtatása felhasználóhóz kötött, ezek megkövetelik a session létezését, ezért ezeket csak egy sikeres login függvényhívás után lehet elérni.
Példa: Session indítása, login
Egyszerű, mint a pofon:
./logalyze-cli.pl login --username admin --password logalyze
Sikeres azonosítás után az engine létrehozza a a session-t és visszad egy session id-t, amit a kliens lement egy fájlba. Ezután minden híváskor automatikusan hozzáadja ezt a HTTP fejléchez, így működik a LOGalyze API-ja.
Példa: Statisztikai adatok lekérdezése és feldolgozása
./logalyze-cli.pl getStatData --statDefId 7e9080f6-8c60-4610-92d0-28bc63c28cc5 --fromDate 1333309490000 --toDate 1333409490000 --dimension loghostname
Ez egy meglévő statisztika definícióból adja vissza az összegyűjtött adatokat CSV formátumban:
1333364400000,host1,1
1333368000000,host2,46
1333371600000,host2,49
1333375200000,host2,120
1333378800000,host2,101
1333382400000,host1,92
1333386000000,host2,18
Ebből könnyen csinálhatunk egy olyan listát, amiben az egyik mező szerint csoportosítva és összegezve kapjuk meg az adatokat:
./logalyze-cli.pl getStatData --statDefId 7e9080f6-8c60-4610-92d0-28bc63c28cc5 --fromDate 1333309490000 --toDate 1333409490000 --dimension loghostname | grep ',' | awk -F ',' '{SUM[$2]+=$3;} END { for(i in SUM) print i, SUM[i] }'
A kimenet pedig:
host1 93
host2 334
Azt hiszem egyetértünk abban, hogy egy minden szükséges funkciót biztosító CLI elengedhetetlen még egy olyan szoftver mellé is, ami alapvetően vizuális formában jeleníti meg az adatokat.