Log Parserでは、出力する形式をテンプレート・ファイルとして記述しておき、テンプレート・ファイル内で指定された変数に対して、出力レコード値をLog Parserで代入することができる。この機能を使えば、例えばHTML形式でWebページ・テンプレートを記述しておき、この内部にLog Parserの出力を展開したり、XML形式のテンプレートを使用してXMLファイルを生成したりできる。実際には、テキスト・ファイルに含まれる変数部分をLog Parserで代入するだけなので、HTML、XMLに限らず、テキスト形式であれば、どのようなものでもテンプレートとして使用できる。
この機能を利用して、セキュリティ・イベントの発生数上位10件のデータをWebページ・データとして出力する例をご紹介しよう。
コンピュータのイベント・ログから、発生数上位10件を取り出すLog Parserスクリプトは次のとおり(SecurityEventLog.txtとして保存)。
--SecurityEventLog.txt
Select
Top 10
Number,
Total,
EventID,
SourceName,
Message
Using
Count(*) As Total,
Sequence() As Number
Into
SecurityEventLog.htm
From
Security
Group by EventID, SourceName, Message
Order by Total
DESC
11行目のSequence()では、HTMLに「詳細」リンクを作成してイベントの詳細表示を開閉可能なテンプレートを作成するため、<div>タグにIDを振る必要があり、Sequence関数で連続番号を作成している。
テンプレート・ファイルには、「ヘッダ」「ボディ(本文)」「フッタ」という3つのセクションを、それぞれLPHEADERタグ、LPBODYタグ、LPFOOTERタグとして用意しておく。このうちヘッダとフッタは、それぞれ最初と最後に1回だけ書き込まれるセクションだ。これに対しボディ・セクションは、Log Parserによる出力レコードごとに出力される。なおヘッダおよびフッタ・セクションは不要ならば省略できる。そしてテンプレート・ファイル内に、Log Parserによるクエリの実行により置き換えられる特殊な変数を記述しておく(以下のテンプレート・ファイルの<LPBODY>中にある%EventID%、%SourceName%など)。Log Parserの出力生成段階で、これらの変数に出力レコード・フィールドの値が代入されて出力される。
今回作成した出力テンプレートは次のとおりである(SecurityEventLog.tplとして保存)。
<LPHEADER>
<html>
<head>
<title> セキュリティ イベント ログ集計上位 10 件</title>
<style type="text/css">
<!--
.header{background-color: #666699;color: white;}
-->
</style>
<script type="text/javascript">
<!--
function roll(id)
{
obj=document.getElementById(id);
if(obj)
{
obj.style.display == 'none'?obj.style.display = '':obj.style.display = 'none';
}
}
//-->
</script>
</head>
<body>
<h1>セキュリティ イベント ログ集計上位 10 件</h1>
<table border="1" width="100%">
<tr class="header">
<td>イベント ID</td><td>イベントの説明の種類</td><td>回数</td>
</tr>
</LPHEADER>
<LPBODY>
<tr class="header">
<td>%EventID%</td><td>%SourceName%</td><td>%Total%</td>
</tr>
<tr>
<td colspan="3">
<a href="javascript:roll('%Number%')">詳細</a>
<div id="%Number%" style="display:none">%Message%</div>
</td>
</tr>
</LPBODY>
<LPFOOTER>
</table>
</body>
</html>
</LPFOOTER>
Log Parserの実行時には、出力形式として「テンプレート」(-o:TPL)を指定し、そのオプション(-tpl:)としてテンプレート・ファイルを指定する。今回のケースなら、次のように指定してLog Parserを実行する。
LogParser file:SecurityEventLog.txt -i:EVT -o:TPL -tpl:SecurityEventLog.tpl
実行結果として生成されるWebページは次のとおり。
2回にわたり、Log Parserの概要と入手方法、インストール方法、いくつかの使用例について説明してきた。Log Parserはマイクロソフトから無償で提供されているツールだが、非常に多機能で、さまざまな種類のログ解析やデータ変換用途に使用できることがお分かりいただけただろう。
Log Parser自体は、汎用のログ解析、データ変換ツールであり、さまざまな用途に応用できるのだが、中でもWebサイトのログ分析において威力を発揮するだろう。Webサイトのアクセス・ログ解析ツールなどは、すでに多種多様なものが提供されている。しかしページビューやユニーク・ユーザー数などといった一般的なログ情報はよいとして、個々のサイトに依存するような細かなアクセス傾向分析では、「帯に短し、たすきに長し」ということが少なくない。このような場合にLog Parserをうまく活用すれば、「かゆいところに手が届く」ような、希望どおりのログ分析が可能になるだろう。
ぜひともLog Parserを使いこなして、ログ生成→取得→解析→出力というサイクルを見直し、これまで見過ごしていた付加価値をログから獲得していただきたい。
【2007/02/15】「イベント・ログから、発生数上位10件を取り出すLog Parserスクリプト」のリスト1行目、コメント行であることを示す指定が「'」(アポストロフィ)になっていましたが、正しくは 「--」でした。また、スクリプトの実行を行うコマンドラインの指定において、「-:EVT」となっていましたが、正しくは「-i:EVT」でした。以上2点、お詫びして訂正させていただきます。
「連載目次」
Copyright© Digital Advantage Corp. All Rights Reserved.