ページ番号  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でログを統合的に扱い運用保守に役立てる(基本編)


アクセス数の推移をまとめてみた。[2009/04/01~2010/04/06]

Google Analytics を使用してアクセスログを取っています。
前年度のアクセス数をグラフにしてみました。
平成21年度アクセス数のグラフ
平成20年度、平成21年度アクセス数の比較グラフ
傾向として、最初からずっと右肩上がりでアクセス数が増えています。12月頃までは比較的緩やかですが、1月頃からアクセス数の伸びが上がりました。

「過去の比較」で12月以前のログと並べて見ると、
 ・「フォトムービーを作成するソフトを比較」
 ・「[MHF]メレティ弓装備」
 ・「【フリーソフト】動画の手ブレ補正を考える」
というタイトルがアクセス数を稼いでいました。
直近では、
 ・「[MHP2G]火竜の天鱗を集める方法」
 ・「ドコモの「Xperia」を買うと月いくらかかるの?」
というタイトルが検索でアクセス数を増やしています。

流石にプライマリキーとなるキーワードは範囲が広いので、記事の検索ランクは高くなりません。しかしGooleの検索結果には「他のキーワード」として、関連するキーワードが候補として並べられています。詳しく調べたい人はそのキーワードで再度検索することが多いはずです。そのキーワードに一致するなら候補となるページは少ないので比較的ランクが上がりやすいのかと思います。
これに該当するのが「フォトムービー ソフト 比較」です。

アクセス数には内容が充実していることも重要ですが、
やはりタイトルが最重要ですね。
タイトルが悪いと検索されませんから。
内容も要約をできるだけ先頭に置いて短くまとめること。ある程度はGoogleがまとめてくれるけど、キーワードの周辺しか表示されません。

google analytics


ブラウザ別訪問者数

ブラウザ別訪問者数
訪問者の使用ブラウザを集計するとこのような結果になりました。

1位:IE、2位:Firefox、3位:Opera

Operaの大半は私がホームページを見た回数かと思われます。
アクセス数ではなく、重複するアクセスをまとめて訪問者としてカウントしています。
あとJavaScriptの実行を許可しない設定の人は集計が取れないので含まれていません。

2009年9月のブラウザ使用率は
1. IE (65.71%)
2. Firefox (23.75%)
3. Safari (4.24%)
4. Chrome (3.17%)
5. Opera (2.19%)
だそうです。
かなり似たような数値になっています。…それはそれで面白くないかも。

2009年9月ブラウザシェア - IE6、IE7、IE8、Firefox 3.5


同じURLで2度、3度アクセスがある件について

アクセスログを見てみると、最近同じURLで続けてアクセスされるみたいです。
同じURLをクリックしただけなら当然同じURLで記録されるわけですが、
同一IPからの連続アクセスは記録しない設定だし、Google検索からの複雑なURLの場合でも、
同様に複数回アクセスされている感じです。

2度目のアクセスについて、ログには「FROM(どこから来た)」は記録されているけど
「PAGE(どのページを見た)」が記録されていない感じ。

いくつかのIPアドレスが記録されました。いくつかあるようです。
「216.104.15.138」
「216.104.15.142」
「150.70.84.173」
「150.70.84.171」
「150.70.84.151」
「74.125.74.194」←これは別件かな…?

IPアドレスをぐぐってみると、
IPアドレス216.104.15.xx またトレンドマイクロの嫌がらせが・・・ - 暇人STRのブログ
という記事が見つかったりしました。トレンドマイクロのウイルス対策ソフト?
Web見ているときにリンク先にウイルス、ボット等が埋め込まれていないか調べているの?

「216.104.15.138」「216.104.15.142」については「TREND MICRO INCORPORATED」で登録されているものでした。
「74.125.74.194」はGoogleみたい…。
「150.70.84.173」「150.70.84.171」「150.70.84.151」は「Japan Network Information Center」で登録されています。「社団法人日本ネットワークインフォメーションセンター」だそうです。ドメイン名の管理とかしている団体だったような気がします。

アクセスの順番は、普通のアクセスが最初、次にトレンドマイクロ、3番目にJPNICとなっています。

IPひろば


文章を解析してマルコフ連鎖で文章を自動生成するJavaScript

URL:http://ablog.seesaa.net/article/20987336.html
マルコフ連鎖というとGoogleのページランクの仕組みでも使われているらしい。
Wikipediaを見てみると理論的なことが書かれていてさっぱり分かりません。

他の記事を探してみると文章で簡単に説明しているところがありました。
文章を、複数語からなるプレフィクス(接頭語句)と、プレフィクスに続く1語のサフィックス(接尾語)に分割します。そしてオリジナルのテキストの統計に基づいてプレフィクスの後ろにくるサフィックスをランダムに選び、文章を出力するというもの
マルコフ連鎖による文章生成
…引用の引用ですが…。

段階として「文章を語句単位で分割する」「接頭語と接尾語に分ける」「語句の繋がりをてきとうに選ぶ」という感じでいいのかな?「終わりよければ全てよし」みたいなことでしょうか。

人工無能を作ろう~マルコフ連鎖(2接頭語と1接尾語の場合)
マルコフ連鎖にもいろいろ種類があるらしい。
接頭語が2語になっている形式のマルコフ連鎖について説明がありました。
本当に文章をバラバラにするようですね。
機械的にざっくりという感じです。
形態素解析によって「酢鶏は好きですが、鶏は嫌いかも。」という文章は
「酢/鶏/は/好き/です/が/、/鶏/は/嫌い/かも/。/EOS」という語句に分解されるそうです。

最初に接頭語を初期設定
 ⇒接頭語につながる接尾語を選択
  ⇒接尾語から接頭語を選択
   ⇒接尾語を…
    ⇒EOFまで続ける。
という流れだそうです。

大体分かってきたかも…。
繋がりを見ているので文法は残る。長い説明文などは分岐として定義されるわけです。
接尾語から次の接頭語を探す段階で、終了に近づく語句が選択されれば『要約』となり、逆に終わりに近づかない語句を選択していけば、他のところで記述された文が出現してきて『カオス』な文章が生成されるわけです。

マルコフ連鎖で文章生成(JavaScript)
マルコフ連鎖ジェネレーター
マルコフ連鎖 - Wikipedia


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