複数のアクセスログを統合する
複数のアクセスログをまとめて、複数サイトのアクセス解析をする話の続き。
Webサーバーにあるアクセスログは、ドメイン毎に作られているので、これを統合しないといけない。
しかし1ファイルだけでも、数MBもあったりするので、これを軽量化してから統合したい。
つまり
- 複数サイトのアクセスログの統合
- アクセスログの軽量化
という2つの要件があるわけだ。
アクセスログの軽量化は、必要が無いログを外していくだけだからそれほど難しい話ではないが、複数サイトのアクセスログを統合するのは、なかなか難しい。
というのもアクセスログの中には、そのドメインの情報が書き込まれていないからだ。
例えば次のログを見てみると、データ上は、これがどのサイトなのか判別できない。
最初に【●.●●.tokei.or.jp 】とあるのは、アクセスを要求してきた先方のURLなので、実際に閲覧されたページのURLではないのだ。
このままでアクセスログを統合してしまうと、どのサイトのページなのか全く分からない。
さて、どうしたものか。
アクセスログは、ドメイン毎に作られるため、ログの中にはドメイン名が入っていない。
そのため、ただ統合するだけだと、どのサイトのページなんだかよく分からなくなる。
そのため、アクセスログを統合する前に、どのサイトのページなのかという情報を、ログに書き込む必要がある。
幸い、コアサーバー/バリューサーバーの場合は、ドメイン名がそのままアクセスログのファイル名に使われているため、これをアクセスログに書き込むことにした。
※ defc.comのアクセスログなら、defc.com.logと言うファイル名になっている。
アクセスログにドメイン名を追加するPHPスクリプトの例
アクセスログの[GET /]の後がリクエストされたページのURLになるので、その前にファイル名から取得したドメイン名を差し込んで見た。
つまり、通常は
"GET /MEIGARA/ichirei.html HTTP/1.1"
となっているところを
"GET /(ドメイン名)/MEIGARA/ichirei.html HTTP/1.1"
としたわけだ。
こうしておけば、どのサイトのページなのか、間違えなくてすむ。