LogParser

Webサーバーのログ解析に便利なツールは無いもんかと、Webをうろうろ探していたら、何気に見つけた、LogParserというツール。
やばい、これ、便利すぎる。


このツール、IIS 6.0 Resource Kit Toolsの中にVersion2.1が入っています。
Version2.0なら単体でMicrosoftから落とせます。
IISに同梱されているので、Web関連のログ解析専用ツールかと思いきや、めちゃめちゃ汎用性が高くって、めちゃめちゃ便利です。
簡単に言ってしまえば、「いろんなフォーマットに対して、SQL文を使ってクエリーをかけるつーる」です。
まずは、もちろんIISのログファイルに対して。。。

LogParser.exe “SELECT TOP 10 * FROM ex*.log”

一番簡単なクエリー。
ファイル名の指定には、%Systemroot%System32LogfilesW3SVC1ex*.log なんて構文も使えます。

LogParser.exe “SELECT TOP 10 c-ip, COUNT(*) FROM ex*.log GROUP BY c-ip ORDER BY COUNT(*) DESC”

これで、c-ipを集計して上位10個を列挙してくれます。
IPアドレスに対して、逆引きをかけたい場合は、c-ipをREVERSEDNS( c-ip)とすればOK。

LogParser.exe “SELECT TOP 10 URLUNESCAPE(cs(Referer)), Count(*) FROM ex*.log GROUP BY cs(Referer) ORDER BY Count(*) DESC”

てなことをすれば、Refererの上位10個を列挙。ついでに、Refererの内容でURLEncodeされているものをデコードしてくれる。
めちゃめちゃ便利。あとは、おらの少ないSQLの知識を総動員していくらでも解析できちゃう。
さて、もちろん、IISのログ解析に便利なこのLogParserですが、別に食えるのはIISのログだけじゃない。一般的なCSVも食えるのだ。
一般的なCSVが食えるってことは、もうほとんどどんな形式のログだって、解析できちゃう。
もちろん、イベントビューアで使われている.EVTみたいな形式は元からサポートされているけど、それ以外の、例えば、僕が自作したアプリケーションが出力するログファイルだって、解析できちゃう。すげぇー。
このLogParser.exe単体で動かせるだけじゃなくて、COMオブジェクトとして、スクリプトから起動できちゃうってのも、痒いところに手が届く優れもの。
あるログファイルを解析して、CSVを出力しておいて、その出力に対して再び別の解析をかけるなんてことができるようになっちゃう。
うーん。よーできたツールだこと。

コメントを残す