Kb. 7 éve elkezdtem írni egy hálózat monitorozó rendszert.
Anno, egy kis IT cégnél dolgoztam, és felhívtak egy főiskolából, hogy szeretnék korszerűsíteni a hálózatukat, és kérnek tőlünk ajánlatot. Nem igazán vettem komolyan a dolgot, mert majd pont tőlünk fognak egy ekkora projektet megrendelni, de azért lett belőle ajánlat, és csodák csodája megrendelés is. Aztán úgy alakult, hogy olcsóbban sikerült a kivitelezés (kiderült, hogy mindenhol megfelelően működik az olcsóbb GBIC) és a fennmaradó pénzből lett egy karbantartási megállapodás. Én meg, ennek keretében összelapátoltam egy monitorozó rendszer szerűséget. Akkor ez még nem volt más mint néhány Linux program: MRTG, arpwatch, meg pár Perl script, meg egy igen puritán weblap.
Aztán tartós lett a kapcsolat, és mivel kedvet kaptam a dologhoz az egészet átírtam egy összefogottabb valamivé LAMP alapon. Eddig gyakorlatilag hobbiból készült az egész, de kiderült, hogy a főnököm szempontjából is van egy hasznos funkciója: képes érzékelni a hálózati eszközök jelenlétét, vagyis ha elvisznek/eltulajdonítanak egy hálózati eszközt akkor jelezhet.
Vagyis erre az ekkor már általam LanView-nek nevezett rendszerre ráépült egy riasztó rendszer (IndAlarm) ami nem az én művem volt, és üzleti alapon készült.
Mivel ez a LanView életem első PHP-s próbálkozása, szinte nulla adatbázis gyakorlattal, voltak hiányosságai. Mint szabad programot közzé akartam tenni, de sosem készült el olyan szinten, hogy más is tudja használni, meg a jogállása is bizonytalan volt (egy részét azért munkaidőben írtam), ezért ebből sosem lett semmi.
Időközbe munkahelyet változtattam, és a fentebb említett főiskolán (ill. most már csak Főiskolai Karon, mert az összevonások során kaptunk egy „gyámot”) vagyok rendszergazda.
Munkám során határozottan hasznosnak tűnt a LanView, de a hiányosságai is egyre bosszantóbbak voltak. Ezért elhatároztam, hogy az egészet újraírom. Hozzá is láttam, és készült is mint a Luca széke, vagy ha pontos akarok lenni sehogy. Próbáltam támogatást szerezni a főnökségtől, mert ha az egész főiskolán és nem csak a karon használnák a programot, akkor talán a fejlesztés is nagyobb lendületet kaphatna, de az okosok látatlanul is tudták, hogy ez egy használhatatlan szar, és nem voltak rá kíváncsiak. Ez persze alaposan „fellelkesített”, és egy jó ideig pihentettem a projektet.
Így évekig a LanView2 projekt nem igazán fejlődött, volt egy jó pár kukázott próbálkozás, meg egy keretrendszer, vagy API szerűség Qt-ben megírva, és halvány elképzelések az adatbázis szerkezetére. Majd jelentkezett valaki (egy HUP-ra feltett kérdés alapján), hogy beszállna a fejlesztésbe, és Ő a felhasználói felületet csinálná Djangó-ba. Az Ő őtlete volt, hogy legyen az adatbázis kezelő Postgresql, és milyen jó, hogy van abban öröklődés. Az ürge persze jó hamar eltűnt, de lett egy többé kevésbé kitalált adatbázis, öröklődéssel, amit valójában egyáltalán nem támogat a Postgresql, csak úgy benne van, de most már bementem a csőbe.
Újabb lendületet adott, az IndAlarm továbbfejlesztése, amit nem akartam a régi rendszerre ráépíteni. Így nyár óta írom mint a mérgezett egér a rendszert. De egyre nyilvánvalóbbá válik, hogy én ezt egyedül nem tudom megcsinálni.
Jelenleg mi készült el:
Van egy adatbázis, ami úgy tűnik szinte minden információt (amire én eddig gondoltam) képes tárolni egy hálózat topológiájáról, és a benne lévő, ill. a kiszolgált eszközökről.
Többé kevésbé le van programozva az adatbázis logika (persze a mérgezett egér stílusú programozás miatt bizonyára tele hibával).
Van egy API szerűség a Qt-ben (C++) megírva. A programrendszernek van zárt része, mégpedig amik IndAlarm-al kapcsolatosak (HW fejlesztés, érzékelők, nem hálózati eszközök pl. monitor védelmére, egy Web-es kezelő felület django-ban).
Van egy nem interaktív import program, ami alapján feltölthető az adatbázis (ez SNMP eszközöknek a konfigurációját le tudja kérdezni).
Van néhány lekérdező daemon:
Egy „fő” daemon, ami a lekérdező daemonokat futtatja (nagyon félkész, minimális funkcionalitással, de működik)
SNMP-n keresztüli port állapot lekérdezések (egyenlőre csak a státuszok lekérdezése).
Az import is képes daemon módban futni, ha például távolról szeretnénk megadni feldolgozandó scriptet az adatbázison keresztül.
Elkezdtem írni egy GUI-s karbantartó programot Qt-ben, de ez igencsak kezdetleges állapotban van. Bár nem nagy kihívás Qt-ben GUI-t írni, de ha meg kel tervezni sok tucat dialógus ablakot, és megírni több száz függvényt, akkor hiába egyszerű, ha sok van, az nagyon sokáig eltart. (A django-s rész is tartalmaz karbantartó részt, de ez nem az én művem, és jócskán hiányos is.)
Szóval most itt tartok. Jó lenne valami GPL szerű licenc alatt közzétenni, de ahhoz el kéne jutni valami alap verzióig, amire egyedül nem sok esélyt látok.