Blogot - 旅とF1と車と男の嗜み

旅とF1と車と男の嗜みをテーマとした後藤康成のブログ。

訪れたユーザーの足跡を解析する(2)

現在 japan.internet.com の Webテクノロジー コラムに連載中のコラムです。

前回はブラウザ(ユーザーエージェント)から送信される HTTP のリクエストの情報について説明しましたがいかがでしたでしょうか? 今回はブラウザ(ユーザーエージェント)から送信されたリクエストは Web サーバーでどのように保存されるかを見ていきましょう。

■Web サーバーのログ

Web サーバーソフトウェアの種類は数多くありますが、ここでは世界的に最も多く利用されているオープンソース ソフトウェアの Web サーバーである Apache *1 を例にとって見ていきましょう。

Apache ではさまざまなログ形式がサポートされます。デフォルトでは共通ログ形式(Common Log Format)でデータは書き込まれますが、LogFormat 指示子により形式をカスタマイズすることも可能です。

・デフォルトの LogFormat 指示子

  【%h】-- ホスト名:訪問者のIPアドレスまたはドメイン

  【%l】--識別情報:クライアントについての識別情報

  【%u】--認証ユーザー:基本HTTP認証が必要な場合の認証済みユーザー名

  【%t】--日時:リクエストの日時

  【%r】--リクエスト:送信してきたリクエストの内容。この部分は、"と"で囲まれる。

  【%s】--ステータス:クライアントに送信されたHTTPステータスコード

       (*ステータスの区分)

        100番台:情報

        200番台:成功

        300番台:転送

        400番台:エラー(アクセスする側の問題)

  【%b】--バイト数:クライアントに送信されたファイルやオブジェクトのサイズ

・カスタムログ形式として利用される LogFormat 指示子

  【%f】--リクエストされたファイル名

  【%{variable}e】--環境変数variableの内容

  【%a】--リクエストを送信してきたコンピュータのリモートIPアドレス

  【%{IncomingHeader}i】--サーバーに送信されてきたリクエストのヘッダー行

  【%{variable}n】--別のモジュールの注釈valiableの内容

  【%{OutgoingHeader}o】--応答のヘッダー行

  【%p】--リクエストに応えるサーバーのポート

  【%P】--リクエストに応えた子プロセスID

  【%{format}t format】--書式に従って表現された時間

  【%T】--リクエストに応えるために要した時間(秒)

  【%U】--リクエストされたURLパス

  【%v】--リクエストの送信先となったサーバーの名前

  【%V】-- UseCanonicalNameの設定に応じて、リクエストの送信先となったサーバーの名前を示す

これらの指示子を組み合わせ、ダブルクオーテーションで囲んで指定すれば、望みどおりの書式でログを記録できます。ありがたいことに、必要そうな書式はあらかじめ Apache の開発者側で httpd.conf 設定ファイルにあらかじめ用意されています。

■共通ログ形式

共通ログ形式(common)では7つのトークン(データフィールド)が空白により区切られ、以下の形式で情報を表示します。

・表示順

ホスト名 識別情報 認証ユーザー 日時 リクエスト ステータス バイト数

・指定方法

LogFormat "%h %l %u %t "%r" %s %b"

・ログ出力の例

192.168.100.xxx - - [01/Nov/2003:18:26:23 +0900] "GET http://www.melpod.com/index.html HTTP/1.0" 200 18167

■combined 形式

サイトを訪れたユーザーの詳細な足跡を追うためには、カスタムログ形式を設定して参照元ページである Referer と User Agent を取得する combined 形式を指定する場合が多いようです。

・表示順

ホスト名 識別情報 認証ユーザー 日時 リクエスト ステータス バイト数 リファラー ユーザーエージェント

・指定方法

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

・ログ出力の例

210.197.104.30 - - [24/Nov/2003:22:27:06 +0900] "GET /index.html HTTP/1.0" 200 17319 "http://www.netage.co.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; T312461)"


combined 形式のログ出力の例をみてわかるように、ブラウザ(ユーザーエージェント)からの1リクエストに対して1行のログが出力されます。それではこの combined 形式のログを例にとってユーザーの足跡を実際に辿ってみましょう。

「このユーザーは日本時間の2003年11月24日22時27分に 210.197.104.30 から Windows 98Microsoft Internet Explorer で index.html へアクセスしてきており。参照元は www.netage.co.jp です。」

このようにユーザーの残した足跡の詳細は Web サーバーのログファイルとして克明に残されます。あとはこの残したログをどのように解析するかによって、サイトアクセスの状態を知る上であなたの必要な情報を引き出すことができます。

例えば、あなたのサイトのどのページが一番アクセスされているか、あなたのサイトへはどのサイトからのアクセスが一番多いかなど、様々なサイト統計データが得られます。

ログを解析するためのログ解析ツールには様々なソフトウェアが存在します。さて、次回はこのログデータを利用した、サイトのログ解析について説明したいと思います。

*1 Apache Jakarta Project

http://jakarta.apache.org/