Windows - IIS naplózás közvetlenül adatbázisba

forráskód letöltése
Az Internet Information Services (IIS) szolgáltatás igen kiterjedt eseménynaplózásra képes. Általában a naplóbejegyzéseket szövegfájlokba végzi. Ezeknek azonban az áttekinthetősége nem a legjobb, arról nem is beszélve, hogy konverzió nélkül nem lehet felhasználni a benne található adatokat egy adatbázis kezelő rendszerben. Cikkünkben ismertetünk egy módszert, amellyel megvalósítható, hogy az IIS közvetlenül egy adatbázisba dolgozzon. Legyen az Access, SQL vagy bármi más.
Cikkünkhöz mellékelve megtalálható a példaként szereplő Access adatbázis "iis.mdb" néven. Az alábbiakban ismertetésre kerülő lépések elvégzésével lehetővé válik, hogy az IIS ebbe mentse a naplóbejegyzéseket. Ettől kezdve az Access-el vagy egyéb adatbázis kezelő alkalmazásokkal feldolgozható a naplóállomány.
A nyitott adatbázis kapcsolat (Open Database Connectivity = ODBC) technológia lényege, hogy a rendszerbe telepített adatbázis meghajtók segítségével számos adatbázis elérhető különböző alkalmazásokból. Az adatbázis meghajtók kapcsolatot teremtenek az alkalmazások és a fizikai adatbázis között. Ezzel kialakul egy egységes, homogén felület. Nem kell minden programhoz külön adatbázis motort mellékelni, egyszerűen csak használni kell a rendszerben rendelkezésre álló lehetőségeket. Az Internet Information Services (IIS) el van látva azzal a képességgel, hogy a naplóbejegyzéseket ne egy nehezen kezelhető és sokszor áttekinthetetlen szövegfájlba mentse, hanem egy ODBC adatbázisba. Így megnyílik - a rendszerbe telepített meghajtóktól függően - hogy Access, SQL, DBase vagy egyéb adatbázisokkal végezzük a naplózást.
Milyen adatbázisokat használhatunk?
Nyissuk meg a Felügyeleti eszközök > Adatforrások (ODBC) (Administrative Tools > Data Sources (ODBC) ablakot. Lépjünk az "Illesztőprogramok" ("Drivers") oldalra. A megjelenő listában látható, hogy a rendszerben milyen ODBC illesztőprogramok vannak telepítve az adatbázisok eléréséhez. Ezeket biztosan használhatjuk, de fennáll a lehetőség, hogy továbbiakat telepítsünk. Például a Linuxos körökben nagy népszerűségnek örvendő, de Windows alatt is használható MySQL adatbázis kezelő rendszernek is van ODBC meghajtója.
Az adatbázisba történő naplózás megvalósításának első lépése, hogy hozzuk létre a megfelelő szerkezetű adatbázist és egy adattáblát. Példánkban egy Microsoft Access (*.mdb) adatbázis fogunk használni. Ennek az ODBC meghajtója rendelkezésre áll a Windows-ban. Indítsuk el az Access-t és hozzunk létre egy új, üres adatbázist. Mentsük el "IISLOG.mdb" néven (nem kötelező ezt a nevet választani).
Hozzunk létre egy új adattáblát ("Tábla létrehozása Tervező nézetben"). A tábla szerkezete az alábbi felsorolás szerint kell, hogy felépüljön. Elől a mezőnév mögötte az adattípus és adathossz található a magyar Access szerinti megnevezésben, ezt követi az adattípus univerzális elnevezése, végül egy rövid magyarázó szöveget mellékeltünk a szerepéről. Mi ugyan az Access-t hoztuk fel példánkban, de ugyanezt a szerkezetet kell másik adatbázis kezelőkben használni. Fontos, hogy következetesen adjuk meg a mezőket, mert különben az IIS nem találja meg őket és nem fog működni a naplózás.
  • ClientHost-Szöveg(255)-VarChar(255)-A kérést intéző gép IP címe.
  • Username-Szöveg(255)-VarChar(255)-A kérést intéző felhasználó neve. Ha a Weboldal nem jelszóval védett itt mindig a "-" karaktert kapjuk.
  • LogTime-Dátum/Idő-Datetime-A kérés megérkezésének dátuma és ideje.
  • Service--Szöveg(255)-VarChar(255)-Szolgáltatás neve (Pl.: WWW, FTP, stb.).
  • Machine-Szöveg(255)-VarChar(255)-Kiszolgáló neve.
  • ServerIP-Szöveg(255)-VarChar(255)-Kiszolgáló IP címe.
  • ProcessingTime-Szám-Int-A kérés kiszolgálásához szükséges időtartam milliszekundumban megadva.
  • BytesRecvd-Szám-Int-Fogadott bájtok száma.
  • BytesSent-Szám-Int-Küldött bájtok száma.
  • ServiceStatus-Szám-Int-Szolgáltatás státuszkódja.
  • Win32Status-Szám-Int-Windows státuszkód (pl.: 0=kérés kiszolgálva).
  • Operation-Szöveg(255)-VarChar(255)-A kérés http metódusa.
  • Target-Szöveg(255)-VarChar(255)-A kért fájl neve.
  • Parameters-Szöveg(255)-VarChar(255)-A kérésben elküldött paraméterek (általában CGI és ISAPI szkriptek használják).
Ha elkészültünk mentsük el a táblát "InternetLog" néven és lépjünk ki az Access-ből. Következik a Windows ODBC beállítása. Nyissuk meg a Felügyeleti eszközök > Adatforrások (ODBC) (Administrative Tools > Data Sources (ODBC) alkalmazást. Lépjünk a" Rendszer-DSN" ("System DSN") oldalra. Kattintsunk a "Hozzáadás" ("Add") nyomógombra. Válasszuk ki a "Driver do Microsoft Access (*.mdb)" illesztőprogramot és kattintsunk a "Befejezés" ("Finish") gombra. Az "Adatforrás neve" ("Data Source Name") legyen: IIS. Lépjünk a "Speciális" ("Advanced") gombra. Adjuk meg a rendszergazdai felhasználói nevünket és jelszavunkat. Végül kattintsunk a "Kiválasztás" ("Select") gombra és nyissuk meg az Access-el elkészített "iis.mdb" adatbázist. Ezzel a Windows ODBC beállításaival végeztünk is, minden mást hagyjunk alapértelmezett értéken. Az "OK" gombokkal lépjünk ki a beállító ablakokból.
Utolsó lépés az IIS konfigurálása. Nyissuk meg a Felügyeleti eszközök > Internetes szolgáltatáskezelő (Administrative Tools > Internet Services Manager) MMC konzolt. Kattintsunk a jobb oldali egérgombbal azon a szolgáltatáson, amelyiknek a naplózását kezelni akarjuk. Lépjünk a Tulajdonságok > Webhely (Properties > Web Site) oldalra. Ha még nem lenne bekapcsolva a "Naplózás engedélyezése" ("Enable Logging") jelölőnégyzet, tegyük meg. Válasszuk ki a legördülő menüben az "ODBC naplózás" ("ODBC Logging") naplótípust. Kattintsunk a "Tulajdonságok" ("Properties") gombra. Töltsük ki az itt található mezőket: "ODBC adatforrásnév (DSN)" ("ODBC Data Source Name (DNS)") = "IIS", "Tábla" ("Table")="InternetLog". A felhasználói név és jelszó mezőkbe adjuk meg az előbbi rendszergazdai adatokat. Zárjuk be az ablakokat az "OK" gombbal. Következik a teszt:
Használjuk a szolgáltatást, intézzünk kéréseket felé, hogy keletkezzenek naplóbejegyzések. Ha Web-ről vagy FTP-ről van szó, akkor legegyszerűbb, ha rákattintunk a jobb oldali egérgombbal a nevére és a menü a "Tallózás" ("Browse") sorra. Ezután nyissuk meg az Intézőben (Explorer) az IIS.MDB-t és az "InternetLog" táblát. Ha mindent jól csináltunk, megtaláljuk benne az előző ténykedéseinket.
Ha nem, akkor nézzük meg a Felügyeleti eszközök > Eseménynapló > Rendszernapló (Administrative Tools > Event Viewer > System Log) és IISLOG forrással keressünk bejegyzéseket. Abban az esetben, ha találunk nem sikerült az IIS-nek írni az adatbázisba. Ennek a legvalószínűbb oka, hogy a megadott felhasználói név és jelszó nem rendelkezett megfelelő jogosultsággal vagy elrontottuk az adatbázis szerkezetet a létrehozásánál. Ha nem találunk bejegyzéseket, nézzük meg az IIS konfigurációját a fentiek szerint, ellenőrizzük, hogy valóban ODBC naplózás van beállítva és a tulajdonság oldalon jó adatokat adtunk meg.