WEBALIZER 日本語化
for Windows
 /  検索語句の文字化け対策  /  IPアドレスの名前解決

WindowsMediaサービスのログを
Webalizerで解析

WindowsServer2003 の WindowsMediaサービスの WindowsMediaサービス形式のログを Webalizer で解析してみます。
市販のWindowsMediaサービスのログ解析ソフトはとても高価なので、手間を惜しまずやってみようと思います。
ログフォーマットを変換するツールが有りますが、イマイチよく解らなかったので、手間を惜しまず。。。
使用するのは、Excel と 秀丸エディタです。

WindowsMediaサービス形式のログには沢山の情報が詰まっていますが、ここで利用できるのは以下の8項目だけです。
c-ip , date , time , cs-url , c-status , sc-bytes , cs(Referer) , cs(User-Agent)

まず、秀丸エディタで生ログファイルから余計なものを削除しておきます。
削除するのは、1行目から9行目、それと、10行目の「 #Fields: 」の文字です。
#StartDate: 2005-07-01 00:00:00
#EndDate: 2005-08-01 00:00:00
#TimeFormat: Local (-540)
#EncodingFormat: UTF-8
#ServerName: streaming-server
#ServerIP: 192.168.0.1
#Software: Windows Media Services
#Version: 9.01.01.3814
#PublishingPoint: [Global]
#Fields:
10行目以外は残しておいても良いのですが、面倒なので削除しちゃいました。
10行目の「 #Fields: 」は、Excel に持っていった時にずれが生じるのを防ぐ為、必ず削除した方が良いでしょう。

ここで一度ファイルを保存します。保存ファイル名は、「 WMS_NCSA.TXT 」とします。

Excel を起動して、「 WMS_NCSA.TXT 」を読み込みます。
読込オプションは、「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」で、区切り文字は「スペース」です。
それ以外はデフォルトのままで構いません。
読み込んだらワークシートを1つ追加します。この追加したワークシートのA列からI列に NCSA形式に並べ替えたログファイルを作ります。

・A 列
ここには、ユーザのIPアドレス情報を持ってきます。[ c-ip ]
書 式 : =WMS_NCSA!A2
表示例 : 202.212.141.134
1列目には、Fieldsの行が有りますので、実際のログが記録されている2列目から引用します。
こちらのワークシート上では1列目からでも構いません。

・B 列 C 列
ここには、何も入りませんので「 - 」を記入します。
通常は「 ident によるリモートユーザ名」と「ユーザ認証によるリモートユーザ名」が入りますが、WindowsMediaサービスでは対応する項目が有りません。
書 式 : -
表示例 : -

・D 列
ここには、日時の情報を持ってきます。[ date ] [ time ]
書 式 : ="["&TEXT(WMS_NCSA!B2,"dd/mmm/yyyy")&" "&TEXT(WMS_NCSA!C2,"HH:MM:SS")&" +0900]"
表示例 : [01/Jul/2005 00:00:00 +0900]

・E 列
ここには、リクエスト情報を持ってきます。[ cs-url ]
書 式 : ="""GET "&(WMS_NCSA!AV2)&""""
表示例 : "GET mms://domain.jp/video/001.wmv"

・F 列
ここには、レスポンスコード情報を持ってきます。[ c-status ]
書 式 : =WMS_NCSA!I2
表示例 : 200

・G 列
ここには、通信量の情報を持ってきます。[ sc-bytes ]
書 式 : =WMS_NCSA!AB2
表示例 : 123456

・H 列
ここには、リンク元情報を持ってきます。[ cs(Referer) ]
書 式 : =""""&(WMS_NCSA!N2)&""""
表示例 : "-"
cs(Referer) は、HTMLに埋め込まれたメディアファイルの場合にのみ有効です。埋め込まれていないメディアファイルをWindowsMediaプレーヤで再生した場合などは、表示例のように "-" になります。

・I 列
ここには、ブラウザ情報を持ってきます。[ cs(User-Agent) ]
書 式 : =""""&(WMS_NCSA!M2)
表示例 : "WMFSDK/10.0.0.3802_WMPlayer/10.0.0.3802
以上で書式の設定が終わりました。
設定したAからIまでのセルを選択して、一気に下に引っ張り連続データを作成します。
ログの行数が多いと大変ですが頑張ってください。。。
完成したら、一応保存しておきましょう。
保存の際は、Excel形式で保存されることをお薦めします。

最後の作業は秀丸エディタで行います。
出来上がったワークシートを全選択 ( Ctrl + A ) して、コピー ( Ctrl + C ) してください。
秀丸エディタに貼り付け ( Ctrl + V ) します。
このままだと、タブ区切りなのでスペース区切りに変換します。変換には置換を使うと便利です。
検索 : \t
置換 :  (見えませんが半角スペースを1つ入れてください)
正規表現にのみチェックを入れ、全置換を押せば出来上がりです。

後は普通に Webalizer で解析するだけですが、リンク元情報に変な URL が表示されることが有ります。
(res://C:\WINDOWS\System32\BROWSEUI.dll/29440 など)
これを防ぐために、Webalizer の configuration file に次の1行を追加します。
IgnoreReferrer res://*
以上で WindowsMediaサービスのログを Webalizer でざっくりと解析出来ます。

出来上がった解析結果を見ると「 レスポンスコードごとのヒット数 」の欄に「 不確定のレスポンス・コード 」が表示されるかもしれません。
これは、通常 Apache で出る事のないレスポンスコードがログファイルに有った場合です。
ログファイルを直接調べてみると、殆どの場合が 210 です。
Windows Media サービスの Help で調べてみると、「切断されたクライアントが再接続されました。」とありましたので、直接 html を編集して仕上げます。
<TR><TH HEIGHT=4></TH></TR>
<TR><TD><FONT SIZE="-1">不確定のレスポンス・コード</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>10</B></FONT></TD></TR>

<TR><TD><FONT SIZE="-1">Code 200 - 正常(OK)</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>1000</B></FONT></TD></TR>
<TR><TD><FONT SIZE="-1">Code 408 - リクエストタイムアウト</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>10</B></FONT></TD></TR>
<TR><TH HEIGHT=4></TH></TR>
<TR><TD><FONT SIZE="-1">Code 200 - 正常(OK)</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>1000</B></FONT></TD></TR>
<TR><TD><FONT SIZE="-1">Code 210 - 切断されたクライアントが再接続されました。</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>10</B></FONT></TD></TR>

<TR><TD><FONT SIZE="-1">Code 408 - リクエストタイムアウト</FONT></TD>
<TD ALIGN=right COLSPAN=2><FONT SIZE="-1"><B>10</B></FONT></TD></TR>
「 不確定のレスポンス・コード 」を「 Code 210 - 切断されたクライアントが再接続されました。」に変換して、その行と次の行を2行を下げ、並び替えてやります。

以上 (2005/09)

このページはリンク自由です。必ずしも TOP へのリンクでなくても結構です。連絡も不要です。
rifugio.net