連載
» 2006年10月27日 00時00分 公開

無償ながら強力なログ解析ツールLog Parserを活用する:第1回 Log Parserの概要 (3/4)

[小板公一,マイクロソフト株式会社]

Log Parserの入手とインストール

 Log Parser 2.2の情報やインストール・ファイルは以下のサイトから入手できる。

 Log Parserをインストールするには、ダウンロードしたLogParser.msiファイル(Ver.2.2.10で約1.7Mbytes)を実行すればよい。具体的には、LogParser.msiファイルをエクスプローラでダブルクリックするか、右クリックメニューの[インストール]を実行する。

 インストールすると、デフォルト設定では「%ProgramFiles%\Log Parser 2.2\」に以下のフォルダとファイルが作成される。前述したとおり、このうちLogParser.exeはコマンドラインやバッチで利用し、LogParser.dllの方はWSHスクリプトで使う。

ファイル/フォルダ 内容
COMフォルダ カスタムCOM入力形式を開発する際に使用するフォルダ
Samplesフォルダ 各種サンプルが保存されたフォルダ
EULA.rtf 使用許諾契約書
LogParser.chm Log Parserのヘルプ
LogParser.dll Log ParserのCOMコンポーネント
LogParser.exe Log Parserの実行ファイル
インストール後に展開されるファイル、フォルダ

 LogParser.chmはヘルプ・ファイルで、Log Parserの使い方が詳しく解説されている。Log Parserは非常に多機能で、本稿でそのすべてを紹介することはできない。詳細については、ぜひヘルプ・ファイルを参照していただきたい。

 このように、Log Parserのインストールは、ダウンロードしたインストーラを実行するだけだ。しかし運用中のサーバに配置する場合など、場合によってはインストーラを直接ターゲット・コンピュータ上で実行したくないこともあるだろう。このような場合には、一度別のコンピュータ上でインストーラを使用してLog Parserをインストール(展開)し、必要なファイルをターゲット・コンピュータにコピーすればよい。

 Log Parserの実行には、LogParser.exe、またはLogParser.dllのどちらかのファイルが必要である。コマンド・プロンプトやバッチ・ファイルからLog Parserを実行する場合はLogParser.exeを、VBScriptやJScriptなどのWSHスクリプトからLog Parserを利用する場合はLogParser.dllをコピーする。

 そのコンピュータでインストーラを実行したかどうかにかかわらず、WSHスクリプトからLogParser.dllを利用する場合には、このファイルを手作業でレジストリに登録する必要がある。レジストリに登録するには、Log Parserを展開したフォルダでコマンド・ウィンドウを開いて、以下のコマンドを実行する。

regsvr32 LogParser.dll

LogParser.exeの動作チェックと簡単なデモ

 それではまず、インストールしたLog Parserが正常に動作するかどうかをテストしよう。コマンド・プロンプトを開き、LogParser.exeが保存されているフォルダ(デフォルトでは%ProgramFiles%\Log Parser 2.2)に移動し、最初はパラメータなしでLogParser.exeを実行してみる。次のように、LogParser.exeのコマンド・ヘルプが表示されれば、インストールは正しく完了している。

LogParser ……オプションを付けずに起動

Microsoft (R) Log Parser Version 2.2.10
Copyright (C) 2004 Microsoft Corporation. All rights reserved.

使用方法:   LogParser [-i:<input_format>] [-o:<output_format>] <SQL auery?> |
……(後略)……

 それでは次に、少し本格的なログ分析の例として、Log Parserを使って、イベント・ログからログインの失敗(イベントID 529)の記録回数を計数してみよう。これには、次のようにする。

LogParser "Select Count(*) From Security Where EventID = 529" -i:EVT

 最後にある “-i:”パラメータは、Log Parserの入力モードを指定するスイッチで、“EVT”はWindowsのイベント・ログ(およびイベント・ログのバックアップ・ファイル)からイベントを返す指定である。つまり“-i:EVT”によって、イベント・ログのデータをLog Parserで操作できるようになる。

 本稿冒頭で、Log Parserはデータ操作にデータベース問い合わせ言語のSQL文を使えると述べた。第1パラメータに指定している "Select Count(*) From Security Where EventID = 529" がそれだ。クエリ構文の詳細については付属のヘルプを参照していただくとして、このクエリでは、セキュリティ・イベントログから(From Security)、イベントIDが529のものを抽出し(Where EventID = 529)、それらの数を計数している(Count(*))。

 これを実行すると、結果は以下のようになる。

LogParser "Select Count(*) From Security Where EventID = 529" -i:EVT

COUNT(ALL *)
------------
10  …… 計数されたイベントID 529の数。

統計情報:
---------
処理された要素: 46634
出力された要素: 1
実行時間:       0.66 秒

 実行の結果、現在セキュリティ・イベントログの中には、イベントID 529が10個含まれていることが分かった。今回は出力形式オプション(-o:)を省略しているため、デフォルトの「?o:NAT」(表形式で出力する)が暗黙に使用される。

 前記の実行結果から分かるように、Log Parserの出力結果の最後には、「処理された要素」「出力された要素」「実行時間」の統計情報が付加される。

 Log Parserの詳細なオプションの説明は後回しにするとして、まずはこのように表示されれば、Log Parserが正常に動作していることを確認できる。

クエリをファイルで指定する

 前出のクエリの例では、Log Parserコマンドのパラメータとしてクエリ文を指定していた。簡単なクエリならこれでもよいが、複雑なクエリには指定しにくい。このような場合には、クエリを記述したテキスト・ファイルを作成しておき、そのファイルをLog Parserのクエリ文として指定できる。

 このファイル形式を使うと、複数の記述を改行で分離することが可能であり、また必要な部分にコメントを記述できるようになる(コメントは、クエリの実行時には単純に無視され、結果には影響を及ぼさない)。SQL Serverでのクエリの記述と同様に、単一行のコメントなら“--”で書き始める。この場合、行末までの文字列がコメントになる。複数行のコメントを記述する場合は、“/*”で書き始め、“*/”でコメントを終了させる。

 例えば、前掲の実行例と同じクエリは、次のようにファイルに記述できる。ここでは、以下のクエリをsample1.txtというファイルで、Log Parserと同じフォルダに保存することにしよう。

-- sample1.txt
Select
         Count(*)
From
         Security
Where
         EventID = 529

 このファイルを指定してクエリを実行するには次のようにする。

LogParser file:sample1.txt ?i:EVT

 このように、SQL形式のクエリが記述されたファイルを指定するには“file”オプションを使い、続けてファイル名を指定する。ただし“file”オプションでは、先頭にハイフンを指定する必要はないので注意すること。当然ながら、実行結果は以前とまったく同一になるので割愛する。

 上記でご紹介した例では、すべてのクエリ記述をファイルに格納した。しかし実際の場面では、基本部分はクエリ・ファイルを使いながら、その一部だけをパラメータで動的に変更したいということもある。例えば前記のクエリでは、「EventID 529」を抽出条件として直接ファイル内に記述していたが、場合によってはIDを変更して同じようなクエリを実行したい場合がある。このときには、クエリ・ファイルは次のようにしておく(ファイル名はsample2.txtとして保存する)。

/* sample2.txt
        パラメータ
        MyEventID
*/
Select
        Count(*)
From
        Security
Where
        EventID = %MyEventID%

 このように、EventIDに指定する値を具体的な数値ではなく、%MyEventID%などとパラメータ化しておく。%で囲まれた文字列がパラメータの名前で、任意の文字列を指定できる。

 そして実行時に、パラメータの値を次のように指定する。

LogParser file:sample2.txt?MyEventID=529 -i:EVT

 このようにパラメータは、ファイル名指定の後に“?”を置き、これに続けて指定する(file:test.txt?MyEventID=529)。この例ではパラメータは1つだけだが、複数のパラメータを指定することもできる。この場合には“&”を区切り文字として使用する。例えば次のような具合だ。

file:test.txt?MyEventID=529&MyEventType=16

 この例では、MyEventIDとMyEventTypeの2つのパラメータを指定している。

 

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。