ページ番号  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  10

[LogParser]独自形式のログデータ解析 - FlowServiceのログを集計

URL:http://bit.ly/faNpN2
業務のアプリがログを出力しているが、独自パターンのログデータであり、全体として区切り文字が設定されていない。かつフローの処理毎に情報が出力され、フローからサブフローが次々と呼ばれるタイプである。そのためデータ量が多い。
LogParserでのログ解析を研究中である。

【ログデータ】
 ・種類:テキストファイル
 ・期間:2009-10-01 ~ 2010-12-20 (日別)
 ・ファイル数:429個
 ・合計ファイルサイズ:90MB
【取得項目】
 ・メインフローの開始時刻、及び終了時刻 ⇒ JST
 ・処理件数の取得 ⇒ MSG2

コマンドプロンプトでログフォルダに移動し、下記を実行。(改行を除く)
logparser -i:textline -o:csv -recurse:-1 "
SELECT
EXTRACT_FILENAME(LogFilename),
Index,
EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,0,']'),0,'[') as JST,
TRIM(EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,1,'['),0,']')) as LEVEL,
EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,1,']'),0,'[') as WORKER,
TRIM(EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,2,'['),0,']')) as FLEX,
EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,2,']'),0,'[') as GID,
EXTRACT_TOKEN(EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,3,'['),0,']'),0,':') as MSG0,
EXTRACT_TOKEN(EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,3,'['),0,']'),1,':') as MSG1,
EXTRACT_TOKEN(EXTRACT_SUFFIX(EXTRACT_PREFIX (Text,3,'['),0,']'),2,':') as MSG2
INTO FlowService_out.csv
FROM FlowService.log.*
HAVING (Text LIKE '%FW_F010_DIF_MAIN%'
AND (Text LIKE '%フローの実行を開始します%' OR Text LIKE '%フローの実行が終了しました%'))
OR Text LIKE '%履歴処理件数(F010)%'
"

Log Parser 2.2 日本語版
ASTERIA


[LogParser]EVT形式の入力を扱う場合のパラメータについて。

URL:http://bit.ly/dY4M8x
「Log Parser」でイベントログ(*.evt)を扱う場合のパラメータについて。

「fullText」パラメータは、イベントログのテキスト形式データを取得するかどうかの設定です。規定値ではON。「Message」フィールドにテキスト形式のデータが取得されます。

「resolveSIDs」パラメータは、SID値をアカウント名に解決するかどうかを設定します。規定値ではOFFですが、ONとした場合、イベント内の各SID値でアカウント名を検索し、「SID」フィールドにアカウント名を取得します。

「formatMsg」パラメータはテキストメッセージを1行のデータとして処理するかを設定します。規定値ではONで、メッセージ内の改行や空白を削除したものが「Message」フィールドに取得されます。OFFの場合は元のメッセージが取得されます。

「msgErrorMode」パラメータは、イベントのメッセージやカテゴリー名が解決できない場合の対応を設定します。既定値はMSGで、メッセージのテキストまたはカテゴリ名が見つからなかったことを示す説明メッセージがフィールドに返されます。NULLとした場合は「Message」フィールドまたは「EventCategoryName」フィールドにはNULL値となります。ERRORとした場合は解析エラーが発生します。

「fullEventCode」パラメータは、イベントIDコードを完全な値で表示するかを指定します。規定値ではOFFで、「EventID」フィールドにはイベントビューアと同じ表示が得られます。ONとした場合は32ビット値が表示されます。

「direction」パラメータは、イベントを取得する順序の方向を指定します。規定値ではFWで、古いイベントから取得します。BWとした場合は新しいイベントから取得します。

「stringsSep」パラメータは関連付けられたテキストデータの区切りを指定します。規定値では|で、テキストデータの配列を区切り文字で処理します。

「iCheckpoint」パラメータは、チェックポイントの情報を指定します。前回の処理で記録されたチェックポイントファイルを指定することで、増分解析を行います。

「binaryFormat」パラメータは、「Data」フィールドの表示方法を指定します。「Data」フィールドの値はバイナリ値であることが多いためテキスト形式の表現に適していません。規定値ではHEXで、全てのデータを2桁16進数で表示します。ASCとした場合、ASCII文字の「0x20 ~ 0x7F」範囲のデータは文字として表示され、他の値はピリオド(.)として表示します。PRINTとした場合、印刷可能なASCII文字の部分は表示され、それ以外の値はピリオド(.)として表示されます。

Log Parser 2.2 日本語版
「LogParser」でログの解析・集計!PCのイベントログやIISのアクセスログに対応


[LogParser]CSV形式の入力を扱う場合。

URL:http://bit.ly/gxAUxJ
「LogParser」ではCSV形式のデータにも対応しています。CSV形式を扱う場合、コマンドラインでCSV形式(-i:CSV)を指定し、CSV用のパラメータで扱いを決めます。

クエリのFROMにはCSVファイルを指定する必要がありますが、ワイルドカード(*.csv)で指定したり、ファイルへのパスはカンマ(,)で区切ることで複数指定できます。またURLを指定したり、標準入力(STDIN)を与えることも出来ます。

扱うことの出来るフィールド名はCSVファイルの内容とパラメータによって変わりますが、FilenameとRowNumberは固定です。Filenameは解析中のファイルの完全なパス名が参照できます。RowNumberは解析中のファイルの行数が参照できます。

「headerRow」パラメータがONの場合、CSVファイルの最初の1行目がフィールド名として扱われます。

「iHeaderFile」パラメータはヘッダー用のファイルを指定できます。ヘッダーファイルの1行目が解析されフィールド名として扱われます。
抽出されたフィールド名が実際より少ない場合、残りのフィールドには「FieldN」で扱われます。Nはそのフィールドのインデックス番号です。

「fixedFields」パラメータがONの場合、CSVファイルのフィールド数は固定で扱われます。

「nFields」パラメータでフィールド数を指定します。-1を指定するとCSVファイルを解析しフィールド数を決めます。

「dtLines」パラメータは、CSVファイルのフィールド数とフィールドの型を決めるための解析を何行目まで調査するかを指定します。規定値では10です。値が0の場合解析は行われずすべての値はSTRING型となります。

「iDQuotes」パラメータが規定値(Auto)の場合、フィールド値が二重引用符(")で囲まれている場合、次の二重引用符(") までをカンマ(,)を無視してフィールド値とします。二重引用符を処理しない場合は「Ignore」を指定します。

「nSkipLines」パラメータはCSVファイルの先頭から何行スキップするかを指定します。ヘッダーの解析もスキップされた後から行われます。

「comment」パラメータはCSVファイルのコメント行としてみなす開始文字を指定します。指定した文字で始まっている行はスキップされます。

「iCodepage」パラメータは文字コードを指定します。規定値(0)の場合システムの既定コードです。-1の場合UNICODEで扱われます。

「iTsFormat」パラメータは日付または時刻として扱われる形式を指定します。指定した形式に一致したフィールド値はTIMESTAMP型のデータとなります。形式⇒タイムスタンプ書式指定子

「iCheckpoint」パラメータはチェックポイント情報のファイルを指定します。前回の実行時に生成されたチェックポイント情報を与えることで増分のみを処理します。

Log Parser 2.2 日本語版
「LogParser」でログの解析・集計!PCのイベントログやIISのアクセスログに対応


[LogParser]用意されている形式以外に対応させるならDLLを作成しよう。

URL:http://bit.ly/hHGT3b
「LogParser」でログを扱う場合、対応外のログはCOM入力形式のプラグイン(DLL)を用意することで対応できます。

「LogParser」をダウンロード後、「COM」フォルダと「Samples/COM/ProcessesInputFormat」フォルダを参考にしてDLLを作成すれば、対応外のログであってもそのまま「LogParser」で読み込み、値や項目名も作成したもので扱うことが出来ます。


何だかサンプルを「nmake」出来なかったので VisualStudio.NET 2003 でVCプロジェクトを作りビルドしてみた。
コンパイルとリンクに「makefile」の参照先を設定に追加。
・[C/C++]-[全般] 「追加のインクルード ディレクトリ」 ⇒ "%FrameworkSDKDir%\Include";"%VCInstallDir%\include"
・[リンカ]-[全般] 「追加のライブラリ ディレクトリ」 ⇒ "%FrameworkSDKDir%\lib";"%VCInstallDir%\lib"

「ProcessesInputContext.cpp」の「GetValue()」実装で、SysAllocString()にm_processEntry32.szExeFileが入力出来ないというエラーが検出されました。「char」を「OLECHAR *」に入れられないとか。(OLECHAR *)の型変換で大丈夫か!?

Log Parser 2.2 日本語版
「LogParser」でログの解析・集計!PCのイベントログやIISのアクセスログに対応


「LogParser」でログの解析・集計!PCのイベントログやIISのアクセスログに対応

URL:http://technet.microsoft.com/ja-jp/scriptcenter/dd919274.aspx
「LogParser」はMicrosoftが無償で提供しているログ取得ツールです。構造化照会言語 (SQL) に似たクエリを使用して様々な結果を得ることができます。

Microsoftが提供するログ解析ツールなので、IISの出力するW3C拡張ログ、システムのイベントログ、ファイルシステムなどに対応しています。対応しているというのは入力形式を指定すればログの構造が認識され、項目名で扱えるということです。テキストファイルやCSVにも対応していますが、その場合は項目を切り出したりする必要があります。

出力形式も様々です。CSVやテーブル形式のテキスト、XMLやW3C拡張ログに書き戻したりもできます。またユーザー指定の形式を利用すればテンプレートHTMLを用いて結果をブラウザで確認できます。またログデータをチャートに加工して画像として出力もできます。

実行はコマンドラインで指定する方法とDLLをCOM方式で扱う方法があります。

取得に用いるクエリは本当にSQLとよく似ています。「SELECT ~ FROM ~ WHERE ~ ORDER BY ~ 」で取得方法を指定します。クエリをファイルに記述しておいてコマンドラインでそのファイルを指定するとスマートです。

汎用のログを扱う場合、入力形式は「TEXTLINE」を指定し、行全体に対応する「Text」に対して、EXTRACT_PREFIX()やEXTRACT_SUFFIX()を用いて項目を切り出すやり方が必要です。
一度XML形式で出力した後、再度読み込んで集計させると項目が扱いやすいかもしれません。

Log Parser 2.2 日本語版
無償ながら強力なログ解析ツール「Log Parserを活用する」
Log Parserでログを統合的に扱い運用保守に役立てる(基本編)


ページ番号  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  10