補足1:LogParser.exeのパラメータ
補足として、「LogParser.exe」で利用できるオプションについてまとめます。
パラメータ | 説明 | 例 |
-i: | 入力リソースの指定 | -i:EVT |
-o: | 出力先の指定 | -o:NAT |
-h: | ヘルプの表示 | -h -o:NAT |
file: | クエリファイルの指定 | file:Query.txt |
-QueryInfo | 解析・解釈した診断情報の表示 | -queryInfo |
「-i:」「-o:」「-h:」については、これまで説明してきましたので、詳細は本編を参照ください。
fileパラメータ
「file:」パラメータを利用すると、クエリを外部のファイルとして保存できます。コマンドラインでクエリを書く場合は改行できないので、見やすいクエリを書きたい場合や、繰り返し実行する場合には外部ファイルでクエリを管理すると良いでしょう。
queryInfoパラメータ
「-queryInfo」を実行するとクエリを実行せずに、そのクエリをチェックし、情報を表示します。
LogParser -i:EVT -o:CSV "SELECT TOP 10 TimeGenerated,EventID INTO eventlog.txt FROM SYSTEM WHERE EventID IN (6005;6006) ORDER BY TimeGenerated DESC" -queryInfo
上のクエリを実行すると、次のような結果が表示されます。
クエリ: SELECT TOP 10 [TimeGenerated], [EventID] INTO eventlog.txt FROM SYSTEM WHERE [EventID] IN ANY (6005; 6006) ORDER BY [TimeGenerated] DESC 選択されたフォーマット: 入力フォーマット: EVT (Windows イベントログ) 出力フォーマット: CSV (CSV 形式) Query fields: TimeGenerated (T) EventID (I)
整形されたクエリ文字列と、入力、出力形式の確認、列の名前と型が確認できます。
補足2:Log Parserの関数一覧
補足として、Log Parserで利用できる関数を一覧にまとめます。なお、関数の引数における[ ]は省略可能を意味します。
関数名 | 説明 |
ADD(値1,値2) |
2つの値(数値/文字/日時)の合計を計算 |
BIT_AND(数値1,数値2) |
2つの値のビットごとのANDを計算 |
BIT_NOT(数値) |
値のビットごとのNOTを計算 |
BIT_OR(数値1,数値2) |
2つの値のビットごとのORを計算 |
BIT_SHL(数値,ビット数) |
指定されたビット数分だけ値を左にシフト |
BIT_SHR(数値,ビット数) |
指定されたビット数分だけ値を右にシフト |
BIT_XOR(数値1,数値2) |
2つの値のビットごとのXORを計算 |
DIV(数値1,数値2) |
2つの値の商を計算 |
EXP(指数) |
e(自然対数の底)の指定された引数のべき乗 |
EXP10(指数) |
10のべき乗を計算 |
FLOOR(数値) |
引数の整数部分 |
LOG(数値) |
自然対数を計算 |
LOG10(数値) |
10を底とする対数を計算 |
MOD(数値,除数) |
2つの数値を除算した余りを計算 |
MUL(数値1,数値2) |
2つの値の積を計算 |
QNTFLOOR_TO_DIGIT(数値,有効桁数) |
数値を有効桁数で切り捨て |
QNTROUND_TO_DIGIT(数値,有効桁数) |
数値を有効桁数で丸め |
QUANTIZE(数値1,数値2) |
第2引数の倍数で第1引数に最も近い値(数値1>数値2で切り捨て) |
ROUND(数値) |
引数に最も近い整数を計算 |
SQR(数値) |
2乗値の計算 |
SQRROOT(数値) |
平方根を計算 |
SUB(値1,値2) |
2つの値(数値/文字/日時)の差を計算 |
関数名 | 説明 |
HEX_TO_INT(文字列) |
16進数を整数自体に変換 |
INT_TO_IPV4(数値) |
32ビット整数をIPV4アドレスに変換 |
IPV4_TO_INT(文字列) |
IPV4アドレスを32ビット整数に変換 |
TO_DATE(日時) |
日時を日付のみに変換 |
TO_HEX(値) |
文字/数値を16進数に変換 |
TO_INT(値) |
文字/日時/実数を整数に変換 |
TO_LOCALTIME(日時) |
世界協定時刻(UTC)から現地時刻に変換 |
TO_REAL(値) |
文字/日時/整数を実数に変換 |
TO_STRING(数値) |
数値を文字列に変換 |
TO_TIME(日時) |
日時を時刻のみに変換 |
TO_TIMESTAMP(文字列,書式) |
文字列を書式日時に変換 |
TO_UTCTIME(日時) |
現地時刻から世界協定時刻(UTC)に変換 |
関数名 | 説明 |
EXTRACT_EXTENSION(ファイルパス) |
ファイルパスのファイル拡張子部分 |
EXTRACT_FILENAME(ファイルパス) |
ファイルパスのファイル名部分 |
EXTRACT_PATH(ファイルパス) |
ファイルパスのディレクトリパス部分 |
EXTRACT_PREFIX(文字列,番号,区切文字) |
文字列を区切文字で分割し、最初から指定番号の文字列 |
EXTRACT_SUFFIX(文字列,番号,区切文字) |
文字列を区切文字で分割し、指定番号から最後までの文字列 |
EXTRACT_TOKEN(文字列,番号,区切文字) |
文字列を区切文字で分割し、指定番号の部分文字列 |
EXTRACT_VALUE(文字列,キー文字,[区切文字]) |
文字列内の指定されたキー値の文字列 |
HEX_TO_ASC(文字列) |
16進数をASCII文字列に変換 |
HEX_TO_HEX16(文字列) |
16進数を16ビットWORDに変換 |
HEX_TO_HEX32(文字列) |
16進数を32ビットWORDに変換 |
HEX_TO_HEX8(文字列) |
16進数を8ビットWORDに変換 |
HEX_TO_PRINT(文字列) |
16進数を印刷可能なASCII文字列に変換 |
INDEX_OF(文字列,検索文字列) |
最初に検索文字列が出現する位置番号 |
LAST_INDEX_OF(文字列,検索文字列) |
最後に検索文字列が出現する位置番号 |
LTRIM(文字列) |
文字列の左側の空白を削除 |
REPLACE_CHR(文字列,検索文字,置換文字列) |
検索文字が文字列に一致すれば置換 |
REPLACE_STR(文字列,検索文字列,置換文字列) |
検索文字列が文字列に一致すれば置換 |
ROT13(文字列) |
ROT13アルゴリズムで文字列をエンコード/デコード |
RTRIM(文字列) |
文字列の右側の空白を削除 |
STRCAT(文字列1,文字列2) |
文字列1に文字列2を付加 |
STRCNT(文字列,検索文字列) |
文字列中の検索文字列の出現回数 |
STRLEN(文字列) |
文字列の長さ |
STRREPEAT(文字列,回数) |
文字列の回数分繰り返し |
STRREV(文字列) |
文字列の前後反転 |
SUBSTR(文字列,開始位置,文字数) |
指定位置から長さ分の部分文字列を抽出 |
TO_LOWERCASE(文字列) |
アルファベットを小文字に変換 |
TO_UPPERCASE |
アルファベットを大文字に変換 |
TRIM |
文字列の前後の空白を削除 |
URLESCAPE(文字列,[コードページ]) |
文字列をURLエンコード |
URLUNESCAPE(文字列,[コードページ]) |
URLエンコードされた文字列をデコード |
関数名 | 説明 |
COMPUTER_NAME() |
ローカルコンピュータのNetBIOS名 |
RESOLVE_SID(SID) |
SIDの完全なアカウント名 |
REVERSEDNS(IPアドレス) |
IPアドレスに対応するホスト名 |
SYSTEM_DATE() |
世界協定時刻(UTC)のシステム日付 |
SYSTEM_TIME() |
世界協定時刻(UTC)のシステム時刻 |
SYSTEM_TIMESTAMP() |
世界協定時刻(UTC)のシステム日時 |
SYSTEM_UTCOFFSET() |
現地時刻と世界協定時刻(UTC)との差 |
関数名 | 説明 |
CASE条件値WHENテスト値1戻り値1...~END |
条件値がテスト値と一致すれば戻り値を戻す |
COALESCE(値1,値2,値3...) |
NULL以外の値で最初に合致したもの |
HASHMD5_FILE(ファイルパス) |
ファイルの内容のMD5ハッシュを計算した16進数 |
HASHSEQ(文字列) |
文字列の値が一意になる整数 |
IN_ROW_NUMBER() |
入力レコードの行番号 |
OUT_ROW_NUMBER() |
出力レコードの行番号 |
REPLACE_IF_NOT_NULL(値1,値2) |
値1がNULLの場合、値2を戻す |
SEQUENCE(開始番号) |
開始番号から始まる入力レコードの連番 |
WIN32_ERROR_DESCRIPTION(エラーコード) |
Windowsエラーコードに関連付けられたテキストメッセージ |
まとめ
以上、Log Parserを利用した実用的なログのチェック方法について解説しました。最後に本稿についてまとめます。
- Log ParserはMicrosoftが提供するフリーのツールでログ情報を簡単に抽出できます。
- テキストファイルのログから見栄えのよいグラフやHTMLを生成することができます。
- 手動ではなく自動監視することによって、確実にエラーを検知することができます。
- Log Parserはコマンドラインからでも、WSHのスクリプトからでも実行できます。
運用・監視と言うと、Tivoli、JP1、ITIL製品のようなソフトウェアを思い浮かべるかもしれませんが、規模の小さいシステムでは、このような高価なソフトウェアが導入されることは滅多にありません。その点、Log Parserは手軽に導入できますので、効率的な監視に興味がある方は、管理しているシステムに有用なクエリを作成して、サービスの向上に役立ててみてはいかがでしょうか。
参考資料
- Microsoft TechNet スクリプトセンター Log Parser
- Microsoft ダウンロードセンター Log Parser
- Microsoft TechNet コラム Log Parser 2.2 の動作方法
- Microsoft TechNet スクリプトセンター ログこそすべて (Log Parserについて)
- eXperts Connection LogParserフォーラム
- The Unofficial Log Parser Support Site(英語)
- @IT 『Windows標準機能とWSHを使ってメールを送信する』 海津智宏 著、2004年5月
- @IT 『運用 Windows管理者のためのWindows Script Host入門』 デジタルアドバンテージ 著、2003年12月
- @IT 『タスク・スケジューラとWSHで定例処理を実現する』 山田祥寛 著、2003年9月
- @IT 『イベントログの自動監視とコマンドの自動実行』 たかはしもとのぶ 著、2004年4月
- VBScript/JScriptプログラミング&Tips for WSH 『cafe de VBS』
- 『サーバー管理者のためのイベントログ運用の基本』 養老利紀 著、毎日コミュニケーションズ、2005年8月
- CodeZine 『スクリプトとタスクによるサーバ監視の自動化』 中 博俊 著、2006年9月
- japan.internet.com『Office Web Componentsを利用してASP.NETでグラフを作成する』 Olav Lerflaten 著、2005年10月