アクセスログ集計・解析ソフト 「CKAccessLog」

トップページへ

 はじめに

「栗キントンのソフトウエア・サイト」を公開してからある程度たった時期に、レンタルサーバー会社がアクセスログ提供 のサービスをしていることを知りました。
ここでは希望する項目についてのレポート提供の他に、生ログファイルの提供サービスもあったので、 毎日生ログをダウンロードして、どのページにどういう検索語句でのアクセスがあるかを見て、Excelで集計するようにしました。
サイトの内容が拡充するにつれてアクセス件数も増え、Excelでの集計に時間がかかるようになってきたので、 生ログファイルからの有効アクセスデータ抽出を省力化する必要が出てきました。
またアクセス情報もかなり蓄積されてきたので、それを解析できるようにすることを思い立ち、 自動データ抽出と蓄積データ解析のためのソフトウエアを自作することにしました。
過去数ヶ月の蓄積データをもとに、試行錯誤でソフト作りを進め、所期の目的が達成できるようなソフトウエアになってきたので、 今回このサイトで紹介することにしました。

 アクセスログデータの取得方法

対象とするアクセスログ
本ソフトウエアは、コンバインドログ形式のアクセスログを対象として集計・解析を行います。
コンバインドログ形式のアクセスログの一例を示します。
256.256.256.256 - - [31/Mar/2011:11:27:34 +0900] "GET /ExcelTriangle/Triangle.html HTTP/1.1" 200 2941 "http://www.google.co.jp/search?hl=ja&source=hp &q=%E4%B8%89%E8%A7%92%E5%9B%B3+%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB"  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"

本ソフトウエアが収集する有効ログデータ
アクセスログには、htmlファイル、zipファイル、jpgファイル、gifファイル、favicon.icoなどのファイルが、リクエストされてあがってきます。
本ソフトウエアでは、リクエストファイルがhtmlファイルかzipファイルであるログだけを、有効ログデータ(ページデータ)として 取出して収集することにしました。
このうち、zipファイルのログデータはページデータ兼ダウンロードデータとして取扱います。
同一日に同一のIPアドレスから同一ページに複数回のアクセスがあった場合には、これを複数件のアクセスとはせずに、 1件のアクセスとしてカウントすることにしました。
但しzipファイルのデータは、一般のページデータとは別に1件としてカウントします。

ログデータからの収集項目
本ソフトウエアでは、有効ログデータの全文とともに、全文から下記の項目を取り出して保存します。
  閲覧者のIPアドレス:上例の「256.256.256.256」の部分。(←注:このIPアドレスは実在しません)
  アクセス日時: 上例の「[31/Mar/2011:11:27:34 +0900]」の部分。
  ページデータ: 上例のGETメソッドの「ExcelTriangle」部分。
  ダウンロードデータ: zipファイルがあった場合のzipファイル名。
  検索語句: 閲覧者が検索で使用した語句。
    上例では、URLエンコードされた「%E4%B8〜%83%AB」の部分を取り出した後、デコードをして検索語句として保存します。
    アクセスログのURLエンコードには、UTF-8、Shit-JIS、euc-jpなどのエンコード方式が使用されていますが、
    本ソフトウエアでは、エンコード方式の自動判別機能を組み込んで、デコードをするようにしました。
    エンコード方式の自動判別方法については、ソフト関連TrialのNo.104で紹介しています。

アドレス情報の取得
本ソフトウエアでは、有効ログデータのIPアドレスから、アドレス情報として、ISP、組織(org)、 地域(region)情報を収集して保存します。
これらのアドレス情報は、utraceのサイトから、APIを使って取得します。
utraceからの情報取得は、非商用利用で1日あたり100件以内に制限されているので、 それを越える数のアドレス情報は取得できません。

除外アドレスの設定
アクセスログには、巡回ロボット、セキュリティソフトなどからのアクセスも含まれています。
これらのアクセスは一般の閲覧者のニーズを直接に反映したものとは考えにくいので、 本ソフトウエアではこれらのIPアドレスを除外アドレスとして、区別して取り扱うことにしました

 ソフトウエアの構成

本ソフトウエアは、以下の12の画面から構成されています。
なおこの画面内に例示しているIPアドレスのうち、非除外のものは、第4バイト目を256として、実在しないものに編集して掲載しています。
@ メニュー画面(掲載省略)

A データベース設定画面
本ソフトウエアでは、データベースとしてMicrosoft社の SQL Server を使用します。
この画面では、SQL Serverのインスタンス名、認証方式を設定します。

B [新着ログデータ取得]画面
アクセスログのファイルから所定のログデータを取得する画面です。

C [キーワードマーカー編集]画面
ログデータからURLエンコードされた部分を読み取るときの前後のマーカーとなるものを、登録、編集するための画面です。

D [除外アドレスの表示・編集]画面
除外アドレスを表示、編集するための画面です。

E [取得済みデータ(日別)表示・編集]画面
取得済みデータを取得日単位で読み出して、表示、編集する画面です。
[新着ログデータ取得]画面とほぼ同じ構成です。

F [アクセス日取得]画面(掲載省略)
[取得済みデータ(日別)表示・編集]画面のアクセス日を指定するために呼び出す画面です。

G [アドレス情報の表示・編集]画面
取得済みのIPアドレスを表示して、内容を編集する画面です。
除外アドレスを含む全IPアドレスを表示します。

H [取得済みデータ一覧の表示・エクスポート]画面
指定した期間内の非除外アドレスのデータを表示して、必要であればExcelのファイルにデータをエクスポートするものです。

I [ページ閲覧情報一覧]画面
指定した期間内のダウンロード情報を除いたページ閲覧情報のリスト、月別閲覧情報、複数回来訪者情報を表示するものです。
この画面の表示対象データは、非除外アドレスのデータです。

J [ダウンロード情報一覧]画面
指定した期間内のダウンロードリスト、ダウンロード月別件数、複数回ダウンロード情報を表示するものです。
この画面の表示対象データも、非除外アドレスのデータです。

K [来訪履歴]画面
指定したIPアドレスの来訪履歴を表示します。
この画面は、[新着ログデータ取得]画面、[取得済みデータ(日別)表示・編集]画面、[アドレス情報の表示・編集]画面、 [ページ閲覧情報一覧]画面、[ダウンロード情報一覧]画面から呼び出します。

 ソースコードのダウンロード

ソースコードのダウンロード
Visual C# 2008(.NET Framework 2.0)で作成したプログラムのソースコードを公開します。

 ご質問・ご意見・ご感想

ご質問、ご意見、ご感想、バグ等のご連絡は、 こちらへ

トップページへ