アクセスログ分析

アクセスログ分析サイトマップホーム

Apache Webサーバのアクセスログを分析してURLごとのアクセス数、アクセスエラーの情報、エージェント情報、クライアント数を集計します。
ここでは、エックスサーバー株式会社のレンタルサーバーApacheの実例を紹介いたします。他のサーバー用にカスタマイズ可能です。

アクセスログフォーマット

項番 フォーマットの意味 備考
 1 ホスト名 xxxx.com
 2 クライアントIP xx.xxx.xxx.xxx 
 3 未使用
 4 未使用  
 5 アクセスされた日時 [02/Jun/2022:03:13:19 +0900]
 6 アクセス要求 "GET /xxxx/xxxx.html?zzz HTTP/2.0"
・アクション = GET/POSTなど
・ファイル名 = /xxx/xxx.html
・HTTP = プロトコル
・リソース = 1.0
 7 ステータスコード 200(正常終了の場合) 詳細は下記の補足を参照ください。
 8 リソースに対する転送量 1234 バイト数
 9 アクセス元のURL "https://google.com" 経由サイトURL、直接アクセスしたURL
10 エージェント "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko" OS、ブラウザ情報

補足

【アクション】
  • GET:指定したターゲットをサーバから取り出す
  • HEAD:指定したターゲットに関連するヘッダー情報を取り出す
  • POST:指定したターゲット(プログラム)にデータを送る
  • PUT:サーバ内のファイルを書き込む
  • DELETE:サーバ内のファイルを削除する 。
  • CONNECT:プロキシサーバ経由で通信を行う
【主たるステータスコード】
  • ・200 = リクエスト成功
  • ・301 = リクエストしたページが別のぺージに移動している
  • ・302 = 一時的に別のページに移動中
  • ・403 = リクエストしたページを表示する権限なし
  • ・404 = リクエストしたページが存在しない
  • ・500 = サーバ側でエラー発生

ステータスコードの詳細はこちらを参照してください。

ログ分析プログラムの機能

1.アクセス集計(要約)

 正常に終了(ステータスコード200)したGET/POSTのアクションを、
 主たる識別子(.html/.php/.pdf)のアクセス要求をファイルおよびディレクトリごとにアクセス件数を集計します。
 (URLごとのページ参照件数を想定しています。)

2.アクセス集計(詳細)

 正常に終了(ステータスコード200)したすべてのアクセス要求を、
 ファイルおよびディレクトリーごとにアクセス件数を集計します。

3.アクセスエラー集計

 正常終了(ステータスコード200)以外の情報を、エラーコードとアクセス要求を毎に件数を集計します。

4.エージェント集計

 正常に終了(ステータスコード200)したGET/POSTのアクションを、エージェント情報ごとに件数を集計します。
 また、OS(iPad/iPhone/Android/Windows/Macintosh/CrOS/Linux)ごとに分類します。

5.クライアント集計

 正常に終了(ステータスコード200)したGET/POSTのアクションを、クライアント名(IPアドレス)ごとに件数を集計します。
 (アクセスユーザー数を想定しています。)

6.その他

  • 出力様式はcsv形式で出力しておりますので、表計算ソフトに直接取り込み可能です。
  • 実行中の処理状況を表示します。また実行結果の履歴をファイルに出力します。
    処理開始・終了日時、入力ログファイルごとの入力・出力件数など。
  • 大量で複数のログファイルを一括で処理出来ます。

ログ分析プログラムの使い方

事前準備

  • 作業用のディレクトリーを作成して、サーバーにあるアクセスログをダウンロードして、作業用のディレクトリーに設置してください。
    解凍が必要な場合は解凍して、設置してください。
  • 処理プログラムlogedit.vbsをダウンロードして、作業用ディレクトリー以外の場所に設置してください。
  • 作業用ディレクトリーのサブディレクトリーで名前「sum」を作成してください。ここに実行結果が入ります。

プログラムの実行

  • ダウンロードしたプログラムlogedit.vbsをダブルクリックして実行します。
  • ログファイルの設置場所と処理番号を入力します。
  • 実行開始するとInternetExplorerの画面に実行状況を表示します、(処理中のログファイル名、入出力件数など)
  • プログラム終了のダイアログボックスのメッセージが出ます。
  • 実行結果は、作業ディレクトリのsumに出力します。
    実行履歴:msg.txt
    アクセス集計(要約):sum1.csv
    アクセス集計(詳細):sum2.csv
    アクセスエラー集計:sum3.csv
    エージェント集計:sum4.csv
    クライアント集計:sum5.csv
【 構成図 】

処理時間の目安

処理
No
処理 処理
時間 
出力
件数
条件
 1 アクセス集計(要約)  3分  900件 【入力ログ】
入力合計件数:300万件
ファイル数:30ファイル(1ケ月分)
(1ファイル当たり10万件)

【処理PC】
プロセッサ:AMD Ryzen5
(4コア/ 8スレッド/3.6GHz)
メモリー:16GB
ディスク:SSD
 2 アクセス集計(詳細)  7分  6,000件
 3 アクセスエラー集計   3分  10,000件
 4 エージェント集計  8分  20,000件
 5 クライアント集計  10分  300,000件

プログラムのカスタマイズ

このプログラムはVBScriptで作成しております。
VBScript(Microsoft Visual Basic Scripting Edition)は、マイクロソフトによるスクリプト言語でMicrosoft Windows上で動作します。
開発環境を別途作る必要がなく、メモ帳さえあればすぐに始められます。

ダウンロードしたプログラムをメモ帳で開いて、構成図で示した「選択・編集」の処理を下記の内容で変更します。

  • 入力ログデーターは空白文字で項目のセパレートしています。(tmpに設定しております。)
    その項目をログフォーマットに従い、意味づけの変更をします。
  • 必要なログデーターの選択条件を設定します。
  • 集計項目をsKeyに設定します。
    複数項目の場合は,(カンマ)で区切ります。

※実行状態表示はInternet Explorerで表示しています。
内部ソートはADO(ActiveX Database Object)の Stream オブジェクト(ADODB.Stream)を使用しております。

アクセスログ分析サイトマップホーム