LogParser: IIS loglarını nasıl inceleyeceğiz?


LogParser, buradan ücretsiz indirebileceğiniz küçük bir komut satırı aracıdır. Ücretsiz ve küçük olması sizi yanıltmasın, inanılmaz güçlü bir araçtır. Ancak çok az bilinir ve kullanılır.


IIS logları, özellikle yoğun kullanılan ortamlarda hergün "gigabyte"lar seviyesinde olabilir. Bunları açmak bile bazen mümkün olmamaktadır. Ancak bazı sorunların araştırılması için bu loglar çok değerli bilgiler içerir. Bir şekilde açabilsek bile, milyonlarca satır veri arasından işimize yarayacak olanları ayıklamak mümkün olmayabiliyor. İşte tam da bu noktada LogParser imdadımıza yetişiyor.


LogParser.exe, parametre olarak SQL benzeri bir dilde yazılan bir “query string” alır. Bu “sorgu cümleciği”ni bizim belirlediğimiz log dosyaları üzerinde çalıştırıp, sonucu istersek bir dosyaya kaydedebilir, veya komut satırında gösterebilir. “Sorgu cümleciği”ne bazı örnekleri aşağıda bulabilirsiniz. Burada şunu belirtmekte fayda var: LogParser sadece IIS loglarını değil, pek çok log türünü tanıyabilmektedir. Örneğin olay günlükleri (event log), Netmon kayıtları (.cap dosyaları), XML dosyaları gibi.


Kullanımı:


LogParser, çok detaylı bir yardım dosyasıyla gelmektedir. Bu nedenle ben kullanımı ile ilgili çok detaya girmeden, sadece fikir sahibi olmanızı sağlamaya çalışacağım. En genel haliyle komut satırından şu şekilde çalıştırabiliriz:


C:\Program Files\IIS Resources\Log Parser 2.2>LogParser.exe SELECT [sütün adları] INTO [kaydedilecek dosya adı] FROM [log dosyası adı] WHERE [kriterler] -i:IISW3C -o:W3C


Buna benzer bir komutu çalıştırdığımızda aşagıdakine benzer bir sonuç alırız:


Statistics:
-----------
Elements processed: 111769
Elements output:    411
Execution time:     0.72 seconds


Yukarıdaki rakamlar gerçek bir işlemden alınmıştır. Yani yaklaşık 112 bin satır veri arasından, benim aradığım kriterlere uyan 411 tanesini ayıklaması 1 saniyeden kısa sürmüştür.


Örnekler:


Aşağıda, hem LogParser'ın neler yapabileceği ile ilgili fikir sahibi olmanızı sağlayacak, hem de işinize yarayabilecek bazı örnekler bulabilirsiniz.


-       Bir log dosyasındaki “500 Internal Server Error” almış tüm isteklerin listesini çekmek:

logparser.exe "SELECT * INTO filtered.log FROM ex080515.log WHERE sc-status=500" -i:IISW3C -o:W3C


-       Bir log dosyasında, saat 14:00 ile 15:00 arasında, durum kodu 400 ve üzerinde yanıt almış (yani bir şekilde hata almış) tüm istekleri çekmek için:

logparser.exe "SELECT * INTO filtered.log FROM ex080515.log WHERE time > '14:00:00' AND time < '15:00:00' AND sc-status >= 400" -i:IISW3C -o:W3C


-       Bir klasördeki tüm log dosyalarında belirli bir IP adresinden gelmiş isteklerin listesini çekip, bunları “time-taken” (işlenme süresi) sütununa göre sıralamak için:

logparser.exe "SELECT * INTO filtered.log FROM *.log WHERE UserIp = '192.168.1.110' ORDER BY time-taken" -i:IISW3C -o:W3C


NOT: En son örnekteki işlem, toplam yaklaşık 500 bin satır kayıt için sadece 2 saniye sürmüştür.


-       Biraz daha karmaşık bir örnek verelim. Web sunucumuza gelen isteklerin ortalama işlenme sürelerini, ve her bir sayfaya gelen toplam istek sayısını çekmek için:

logparser.exe "SELECT AVG(time-taken) As OrtalamaSure, MAX(time-taken) As MaxSure, COUNT(*) As ToplamIstek, TO_LOWERCASE(cs-uri-stem) INTO istatistik.log FROM *.log GROUP BY cs-uri-stem ORDER BY OrtalamaSure DESC" -i:IISW3C -o:W3C


Son olarak da olay günlükleri ile ilgili bir örnek verelim. Aşağıdaki komut, event.evt dosyasından, kaynak ismi W3SVC olan (yani IIS’e ait) logları bir csv dosyasına kaydedecektir:


logparser.exe" "SELECT TimeWritten, SourceName, EventID, Message INTO filtered.csv FROM event.evt WHERE SourceName = 'W3SVC'" -i:EVT -o:CSV


Yardım dosyasından alıntılar:


LogParser’ın desteklediği IIS ile ilgili log türleri (bunların dışında 10’dan fazla log türü daha desteklenmektedir):


·         IISW3C: parses IIS log files in the W3C Extended Log File Format.


·         IIS: parses IIS log files in the Microsoft IIS Log File Format.


·         BIN: parses IIS log files in the Centralized Binary Log File Format.


·         IISODBC: returns database records from the tables logged to by IIS when configured to log in the ODBC Log Format.


·         HTTPERR: parses HTTP error log files generated by Http.sys.


·         URLSCAN: parses log files generated by the URLScan IIS filter.


 IISW3C log türünde desteklenen alan adlarından bazıları:
















































Name


Type


Description


Date


TIMESTAMP


The date on which the request was served (Universal Time Coordinates (UTC) time)


Time


TIMESTAMP


The time at which the request was served (Universal Time Coordinates (UTC) time)


c-ip


STRING


The IP address of the client that made the request


cs-username


STRING


The name of the authenticated user that made the request, or NULL if the request was from an anonymous user


cs-method


STRING


The HTTP request verb or FTP operation


cs-uri-stem


STRING


The HTTP request uri-stem or FTP operation target


cs-uri-query


STRING


The HTTP request uri-query, or NULL if the requested URI did not include a uri-query


sc-status


INTEGER


The response HTTP or FTP status code


sc-substatus


INTEGER


The response HTTP sub-status code (this field is logged by IIS version 6.0 and later only)


time-taken


INTEGER


The number of milliseconds elapsed since the moment the server received the request to the moment the server sent the last response chunk to the client


CENK ISCAN

Comments (1)
  1. nuggez says:

    merhaba hocam , çok meşhur bir sorum olcak

    iis de mümkünmü bilmiyorum ama , araştırdım her yerde mümkn değil denildi.

    1 ipden servera sadece 1 baglantı istiyorum.

    adam aynı ip den servera 2 baglantı yapmasın , 2 dosya cekmesin mantıgı gibi.

    bunu nasıl yaparım teşekkürler

Comments are closed.

Skip to main content