2章. 作成したシステム

本システムはPerlで作成した。 本研究で作成したプログラムは大きく分けて次の3つの部分に分けられる。

  1. ログ情報の解析
  2. 統計処理
  3. 予測値の計算

2-1.ログ情報の解析

ログ情報はテキストファイルなので、Perlの正規表現により情報を取り出す。 今回、解析の対象としたWWWサーバーapacheのアクセスログのパターンは次のようになっている。

   
remotehost rfc931 authuser [date] "request" status bytes
remotehost
相手先ホストのホスト名。ホスト名がDNSで有効でない場合IPアドレスが代わりに残る。
rfc931
アクセスしたユーザの相手先ホストにおけるログイン名。ログイン名が得られなかった場合、ハイフン(-)が表示される。
authuser
パスワードによるアクセス制限がかかっていて、ユーザ認証が行われた場合、ハイフン(-)が表示される。
[date]
アクセスされた日付と時刻を表す。最後の+0900はこの時刻がUT(世界時)に9時間加算した時刻(すなわち日本標準時を表す)。
"request"
相手先ホストから送られてきた命令。通常のファイルの取得の場合にはGET URL HTTP1.0(1.1の場合も)となる。GETの部分はPOSTの場合やHEADの場合もある。
status
ブラウザに返された HTTP status code 。通常"200"が返される。
200
送信が成功した時に返される。
302
別のURLにリダイレクトされた時に返される。
401
アクセスが制限されているURLに対して、送られてきたユーザネーム、パスワードでは認証されなかったときに返される。
403
アクセスが拒否された時に返す値。
404
Document Not Found. ユーザがアクセスしようとするリソース・アクセスが存在しない場合に返される。
500
Server Error. サーバ関連のエラーが発生した時に返される。
bytes
転送されたファイルの大きさ (単位:Byte)。

ここから、日付ごとに発生した「404」の回数をカウントする。

2-2. 統計処理.

まず最小2乗法を用い、直線的なトレンドを除去した。 具体的には、日付をx座標、「404」の発生件数をy座標のグラフにプロットした時、y=ax+bという直線で近似できるよう、最小2乗法によりabを求めた。 最小2乗法については、4章に改めて、手法を説明する。

又、日付をx軸にとる際プログラム作成上の利便性から、2002年1月1日0時0分0秒を0とした秒数で計算している。

2-3. 予測値の計算

予測値の計算は、求めた直線式を用い各データからトレンドを取り除いた値y,i-axi-bが独立であると仮定する。そして95%信頼区間(p,q)を求める。詳しい求め方は5章にまとめる。 そして、日付xにおける「404」発生の正常な範囲を(axbpaxbq)とする。もし、「404」の発生件数がこの範囲外ならば異常値として検出する。