2章. 作成したシステム
本システムはPerlで作成した。
本研究で作成したプログラムは大きく分けて次の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乗法によりaとbを求めた。
最小2乗法については、4章に改めて、手法を説明する。
又、日付をx軸にとる際プログラム作成上の利便性から、2002年1月1日0時0分0秒を0とした秒数で計算している。
2-3. 予測値の計算
予測値の計算は、求めた直線式を用い各データからトレンドを取り除いた値y,i-axi-bが独立であると仮定する。そして95%信頼区間(p,q)を求める。詳しい求め方は5章にまとめる。
そして、日付xにおける「404」発生の正常な範囲を(ax+b+p,ax+b+q)とする。もし、「404」の発生件数がこの範囲外ならば異常値として検出する。