Log yönetimi çözümünüz yoksa ve elinizde incelemeniz gereken
bir log dosyanız varsa Logparser çok işinize yarayacaktır.
Log dosyalarini, dizin yapisini
veya text dosyalarini hizli taramanin yollari Microsoft'un Log Parser
araciyla, artik SQL dil yapisi ile log dosyalarini rahatlikla
sorgulayabilirsiniz.
Yukarıdaki adresten Logparser 2.2 kurulum
dosyasını indirebilirsiniz. Windows 2000, Windows Server 2003, Windows XP
Professional Edition sistemlerine kurulum desteklenmektedir.
Logparser uygulaması sadece SELECT ifadesini destekliyor,
yani INSERT, UPDATE veya DELETE yapamiyorsunuz. Zaten amaci da bu degil. SQL
standardi olarak herhangi bir standart derdi yok. Yani ANSI, ODBC, Microsoft
SQL Server uyumlulugu düsünülmemis. JOIN yapamiyorsunuz (gerek yok),
matematiksel operasyonlar ADD, SUBTRACT gibi fonksiyonlar kullanilarak
yapilabiliyor . Buna karsilik ek olarak pek çok eklenti fonksiyonu var, bunlari
uygulamayla gelen Word dosyasindan okuyabilirsiniz. GROUP BY, ORDER BY, HAVING
ifadeleri kullanilabiliyor. Aggregate (Sum, Count, Avg) fonksiyonlari
kullanabiliyorsunuz. FROM ifadesi biraz degisik çalisiyor, Burada dosya adi
verebiliyorsunuz (Örn: ex040412.log), dosya adlarinda maskeleme
kullanabilirsiniz. Yani (ex*.log) yazdiginizda o dizindeki bütün "ex"
ile baslayan, tipi "log" olan dosyalar incelenebilir.
"<n>" ifadesi IIS'in "n"inci applikasyonunun o anki
aktif loglarini inceler. Dosya adlarinda bosluk kullanmaniz gerekirse, bosluk
yerine \u0020 yazin. Bu UNICODE'da bosluk demektir. Örnek vermek gerekirse
"C:\Program Files\a.log" yerine "C:\Program\u0020Files\xxx.log",
C#'ta ise söyle yazilmali @"C:\Program\u0020Files\a.log" veya
"C:\\Program\\u0020Files\\a.log".
Uygulamanin
okuyabildigi formatlar;
1. Dizin yapisi: Bir
dizindeki folderlari bu uygulama sayesinde sorgulayabilirsiniz. Yani dosya adlarini,
tarihlerini, boyutlarini sorgulayabilirsiniz.
2. Text dosyalari: Bir
dizinde içinde belirli text geçen dosyalari sorgulayabilirsiniz.
3. Loglar: Makinanizdaki
loglari sorgulayabilirsiniz. Desteklenen formatlar:
IIS W3C uyumlu loglar,
IIS NCSA uyumlu loglar,
IIS IIS uyumlu loglar,
IIS ODBC uyumlu loglar,
IIS BIN uyumlu loglar
URLScan Log formati
System Event Loglari
CSV dosyalari (Virgülle ayrilmis dosyalar)
IIS W3C uyumlu loglar,
IIS NCSA uyumlu loglar,
IIS IIS uyumlu loglar,
IIS ODBC uyumlu loglar,
IIS BIN uyumlu loglar
URLScan Log formati
System Event Loglari
CSV dosyalari (Virgülle ayrilmis dosyalar)
Ayrica
SELECT ifadesinde FROM ifadesinden sonra TO komutu da eklenmistir. Bu komutla
çiktinin nereye yapilacagi belirlenir:
1. Ekran
2. IIS logu (Bir logdan
sorgulama yaparak (FROM ile), baska bir log dosyasina çikti üretebilirisiniz)
3. W3C logu (amaci 2. madde
ile aynidir sadece dosya alan adlari farklidir)
4. SQL çiktisi. Bu çok hos
bir özellik. Sonuçlari bu özellik sayesinde bir veritabanina yazdirabilirsiniz.
5. CSV formatinda çikti,
6. XML dosyasina
7. Template ile belirlenen
sekilde. Bu özellik sayesinde template dosyalari olusturup belirlenen formata
uygun dosyalar üretebilirsiniz.
Uygulamayla
beraber, detayli bir Word dokümani ve hem Scriptler için, hem de SQL
ifadelerini açiklayan pek çok örnek dosya geliyor. Mesela IIS saldirilarini
listeleyen script kodu var.
Kullanirken
her makinaya tüm uygulamayi koymaniza gerek yok. Bir web farm'da çalisiyorsaniz
sadece exe versiyonu kurabilir veya sadece dll versiyonu register
edebilirsiniz. İki uygulama birbirinden bagimsiz çalismaktadir.
Log parser çalışma prensibi yukarıdaki ekran görüntüsünde
aktarılmaktadır. Logparser programı kurulduğunda Help dosyası birlikte gelmektedir.
Bütün bileşenlerini çeşitli örneklerle öğrenebileceğiniz en iyi dökümandır.
Logparser kullanacak olan kişinin bu dökümanı iyice okuması gerekmektedir.
Logparser
Query Syntax
Select
Çıktı sonucunda görülmesini istediğimiz alanları
belirlememizi sağlamaktadır.
SELECT
TimeGenerated, SourceName
FROM
System
Yukarıdaki select cümleciğinde System loglarından
TimeGenerated ve SourceName in çıktıda görülmesini sağlayacaktır.
Using
Çıktı sonucunda gözükecek alanların yeniden
adlandırılması ve fonksiyonlar kullanalarak alanlar için özelleştirme yapmayı
sağlamaktadır.
SELECT Username
USING TO_LOWERCASE( RESOLVE_SID(Sid) ) AS FQAccount,
EXTRACT_TOKEN( FQAccount, 1, '\\') AS Username
FROM Security
Yukarıdaki sorguda normalde Security loglarında Username
diye bir bilgi bulunmamaktadır. Ancak USING kullanarak Security loglarındaki
Sid bilgisinden Username bilgisine ulaşılıp çıktıda bu bilginin verilmesi
sağlanabilmektedir. USING syntaxı effektif biçimde kullanılmaktadır.
INTO
Çıktı olarak nereye verinin ve ne tür şekilde
oluşturulacağının belirlendiği kısım olarak kullanılmaktadır.
SELECT *
INTO MyOutput.csv
FROM System
Yukarıdaki örnekten görüleceği üzere System loglarındaki
herşey (*) MyOutput.csv dosyasına yazdırılacaktır. Bu dosya sorgu hangi dizinde
çalıştırılıyorsa orada oluşturulacaktır.
FROM
Logparser a girdi olarak verilecek olan log dosyamızı
FROM ile gösterebilmekteyiz.
SELECT *
FROM System, Security
SELECT *
FROM \HKLM\SOFTWARE
WHERE
Where ile log dosyasında aradığımız alanlar için spesifik
bir veriyi arayıp bize sonuç olarak dönmesini sağlayabilmekteyiz.
WHERE EventID = 501
WHERE EXTRACT_TOKEN(Strings, 1, '|') LIKE '%logon&' AND
( TimeGenerated > SUB( TO_LOCALTIME(SYSTEM_TIMESTAMP()), TIMESTAMP( '10', 'mm' ) ) OR
SID IS NOT NULL
)
GROUP
BY
GROUP BY ile oluşacak sonuçların gruplanması
sağlanmaktadır.
SELECT date, cs-uri-stem, COUNT(*)
FROM LogFiles\ex040528.log
GROUP BY date, cs-uri-stem
Örnek Sonuç;
date cs-uri-stem COUNT(ALL *)
---------- ------------------- ------------
2003-11-18 /Default.htm 1
2003-11-18 /style.css 1
2003-11-18 /images/address.gif 1
2003-11-18 /cgi-bin/counts.exe 1
2003-11-18 /data/rulesinfo.nsf 2
2003-11-19 /data/rulesinfo.nsf 6
2003-11-20 /data/rulesinfo.nsf 5
2003-11-20 /maindefault.htm 1
2003-11-20 /top2.htm 1
2003-11-20 /homelog.swf 1
HAVING
HAVING ile bir sorguda belirli bir değeri barındıran
sonuçların oluşturulması sağlanabilmektedir.
SELECT SourceName
FROM System
GROUP BY SourceName
HAVING COUNT(*) > 10
Yukarıdaki sorguda SourceName gruplanmakta ve count
değeri 10 dan büyük olanlar çıktı olarak gösterilmektedir.
ORDER
BY
ORDER BY ile belirlediğimiz bir sonucu göre çıktıların
sıralanması sağlanmaktadır.
SELECT date, cs-uri-stem, cs-uri-query, sc-bytes
FROM LogFiles\ex040528.log
ORDER BY sc-bytes DESC
EXPRESSION
ALL
Verilen alan ifadeleriyle değerlerin hepsinin
karşılaştırılmasını sağlamaktadır.
Year > ALL (1999; 2000; 2001)
(Year, Age) < ALL (1999, 30; 2001, 40; 2002, 10)
ANY
Year > ANY (1999; 2000; 2001)
(Year, Age) < ANY (1999, 30; 2001, 40; 2002, 10)
BETWEEN
Verilen değerler arasındaki durumlar için sorgu
çalıştırılır.
Year BETWEEN 1999 AND 2004
SELECT
Path
FROM
C:\MyDir\*.*
WHERE
TO_UTCTIME(CreationTime) BETWEEN SUB(SYSTEM_TIMESTAMP(), TIMESTAMP('4', 'h'))
AND SUB(SYSTEM_TIMESTAMP(), TIMESTAMP('1', 'h'))
IN
Verilen değerler için sorgu çalıştırılmaktadır.
Age IN (20; 30; 45; 60)
(FirstName, State) IN ('Johnson', 'OR'; 'Smith', 'WA')
LIKE
Verilen değere benzeyen bilgiler için sorgu çalıştırılıp
sonuç elde edilir.
WHERE cs-uri-stem LIKE '%.htm'
WHERE Message NOT LIKE '%error%'
Hiç yorum yok:
Yorum Gönderme