アクセスログの解析方法

アクセスログの読み方

アクセスログを収集したら、必要に応じてそこから何らかの情報を読み出すことになります。

この資料では収集するアクセスログファイル形式を W3C 形式 でログを収集することを想定します。 これが一番使われており、情報もリッチなので特に問題がない限り、W3C 形式をおすすめします。

さて、ログファイルを開くと次のようにログが記録されていることが分かると思います。

#Software: Microsoft Internet Information Services 7.0
#Version: 1.0
#Date: 2009-03-04 18:21:39
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query ...
2009-03-04 18:21:39 ::1 GET /wp-admin/install.php - 8080 - ::1  ...
2009-03-04 18:21:39 ::1 GET /wp-admin/css/install.css - 8080 - ::1 ...
2009-03-04 18:21:48 ::1 GET /wp-admin/install.php - 8080 - ::1 ...
...

# で始まっている行はヘッダー行です。IIS がログを開始した時に挿入する行です。

ちなみに、このヘッダー行はひとつのログファイルに複数記録される場合がありますが、不具合ではありません。 ヘッダー行はワーカープロセス w3wp.exe が起動して、ログを記録する最初に挿入しますので、ワーカープロセスの起動記録として使えます。

さて、ヘッダー行の始めの2行は IIS のバージョン情報です。 つぎは日付。UTC で記録されます。最後の行はヘッダ情報です。

左から date time s-ip cs-method ... と続いていますが、 それぞれ、日付、時間、サーバーの IP、メソッド名、... という意味です。

カラムそれぞれの意味は MSDN のサイト等をご覧ください。

Log Parser (ログパーサー) の利用

ログファイルを Excel などに読み込み情報を読み出すのもいいと思いますが、 マイクロソフトからツールが提供されていますので、紹介します。

Log Parser というツールです。

メニューから Log Parser を選択すると、次のようなコマンドプロンプトが現れます。

ヘルプ情報が表示されていますので、見てみましょう


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

Usage:   LogParser [-i:<input_format>] [-o:<output_format>] <SQL query> |
                   file:<query_filename>[?param1=value1+...]
                   [<input_format_options>] [<output_format_options>]
                   [-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
                   [-stats[:ON|OFF]] [-saveDefaults] [-queryInfo]

         LogParser -c -i:<input_format> -o:<output_format> <from_entity>
                   <into_entity> [<where_clause>] [<input_format_options>]
                   [<output_format_options>] [-multiSite[:ON|OFF]]
                   [-q[:ON|OFF]] [-e:<max_errors>] [-iw[:ON|OFF]]
                   [-stats[:ON|OFF]] [-queryInfo]

 -i:<input_format>   :  one of IISW3C, NCSA, IIS, IISODBC, BIN, IISMSID,
                        HTTPERR, URLSCAN, CSV, TSV, W3C, XML, EVT, ETW,
                        NETMON, REG, ADS, TEXTLINE, TEXTWORD, FS, COM (if
                        omitted, will guess from the FROM clause)
 -o:<output_format>  :  one of CSV, TSV, XML, DATAGRID, CHART, SYSLOG,
                        NEUROVIEW, NAT, W3C, IIS, SQL, TPL, NULL (if omitted,
                        will guess from the INTO clause)
 -q[:ON|OFF]         :  quiet mode; default is OFF
 -e:<max_errors>     :  max # of parse errors before aborting; default is -1
                        (ignore all)
 -iw[:ON|OFF]        :  ignore warnings; default is OFF
 -stats[:ON|OFF]     :  display statistics after executing query; default is
                        ON
 -c                  :  use built-in conversion query
 -multiSite[:ON|OFF] :  send BIN conversion output to multiple files
                        depending on the SiteID value; default is OFF
 -saveDefaults       :  save specified options as default values
 -restoreDefaults    :  restore factory defaults
 -queryInfo          :  display query processing information (does not
                        execute the query)


Examples:
 LogParser "SELECT date, REVERSEDNS(c-ip) AS Client, COUNT(*) FROM file.log
            WHERE sc-status<>200 GROUP BY date, Client" -e:10
 LogParser file:myQuery.sql?myInput=C:\temp\ex*.log+myOutput=results.csv
 LogParser -c -i:BIN -o:W3C file1.log file2.log "ComputerName IS NOT NULL"

Help:
 -h GRAMMAR                  : SQL Language Grammar
 -h FUNCTIONS [ <function> ] : Functions Syntax
 -h EXAMPLES                 : Example queries and commands
 -h -i:<input_format>        : Help on <input_format>
 -h -o:<output_format>       : Help on <output_format>
 -h -c                       : Conversion help

ご覧の通り非常にたくさんのオプションがあります。 これらを用いて、様々な情報を引き出すことが出来ます。

アクセスの多い上位 10 個の URL の抽出

C:\Program Files\Log Parser 2.2>LogParser -i:iisw3c "SELECT TOP 10 cs-uri-stem,
COUNT(*) AS HitCount FROM C:\inetpub\logs\LogFiles\W3SVC1\u_ex090304.log GROUP B
Y cs-uri-stem ORDER BY HitCOUNT DESC"
cs-uri-stem                                          HitCount
---------------------------------------------------- --------
/                                                    129
/wp-content/themes/my1/images/ghjbgwide.jpg          58
/wp-content/themes/my1/images/ghjfooter.jpg          58
/wp-content/themes/my1/style.css                     58
/wp-content/themes/my1/images/ghjbgcolor.jpg         56
/wp-content/themes/my1/images/ghjheader.jpg          56
/wp-admin/admin-ajax.php                             53
/wp-admin/css/colors-fresh.css                       28
/wp-admin/images/icons32.png                         27
/wp-admin/images/menu-bits.gif                       27

Statistics:
-----------
Elements processed: 1867
Elements output:    10
Execution time:     0.04 seconds


C:\Program Files\Log Parser 2.2>

実行時間の長いリクエスト

C:\Program Files\Log Parser 2.2>LogParser -i:iisw3c "SELECT TOP 10 date, time, s
c-status, cs-uri-stem, time-taken FROM C:\inetpub\logs\LogFiles\W3SVC1\u_ex09030
4.log ORDER BY time-taken DESC"
date       time     sc-status cs-uri-stem               time-taken
---------- -------- --------- ------------------------- ----------
2009-03-04 18:22:49 200       /wp-admin/install.php     17499
2009-03-04 18:23:57 200       /wp-cron.php              5257
2009-03-04 18:21:39 500       /wp-admin/install.php     4093
2009-03-04 21:06:11 200       /wp-admin/index-extra.php 3456
2009-03-04 21:10:15 200       /wp-admin/index-extra.php 3354
2009-03-04 18:25:38 200       /wp-admin/index-extra.php 2897
2009-03-04 18:25:37 200       /wp-admin/index-extra.php 2618
2009-03-04 18:25:34 200       /wp-admin/index-extra.php 2499
2009-03-04 18:23:53 200       /wp-login.php             2298
2009-03-04 21:10:14 200       /wp-admin/index-extra.php 1950

Statistics:
-----------
Elements processed: 1867
Elements output:    10
Execution time:     0.05 seconds


C:\Program Files\Log Parser 2.2>

ホスティングでのログ解析

IX Web Hosting

IX Web Hosting では Webalizer によるアクセスログ解析が可能です。これにより日次統計情報、時間毎の統計、URL 別統計等が簡単に取得できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説