昨日からアクセス解析作ってるが、
すでに結構いい感じになったわ。
仕様は、
vhost_combined形式のログ解析に特化。(ポート番号は使わんので「%v:%p」じゃなくて「%v」でもいい)
vhost_combined形式のログファイルは、ubuntuだと「/var/log/apache2/other_vhosts_access.log」ってファイルに記録される。
vhost_combinedってのは、普通のcombinedにサーバー名(:ポート番号)を先頭に追加した形式。
バーチャルホストで複数ドメインを一つのサーバーで運用しているときに、一つのログファイルで全部解析できる。
UIは「
MultiSiteAnalyzer」にだいぶ流用したんで、似た感じ。
MultiSiteAnalyzerと比べると、今回のは詳細ログの抽出表示ができない。
スクリプトログと違い、サーバーログだと桁違いのログ容量になるんで、
クライアントに全部転送してクライアント側で解析する仕様は良くないと考えてそうした。
代わりに今後、事前に条件を設定して、対象の数をカウントできるような機能をつけたい。
条件指定して、異常をカウントしたらgrepな感じで。
あと、今のところ解析対象サーバーをALLにすることはできない。
つけてもよかったけど、めんどいからやめた。
今回の解析スクリプトは、VPSで負荷はそれほど気にしなくていいので、久々にサーバー側解析にした。
差分だけの解析仕様なんで、短期間更新でもそれほど負荷増えないと思う。
解析済みログファイルはJSONぽいJavaScriptで処理できる形式でgzip圧縮。
まだ最大で1日7000アクセス程度しかログがないんだが、
7000で5000byte以下だから、100万とか行けそうな気がする。
VPSだから、解析んときのメモリ消費が問題だね。
認証機能はないので、アクセス制限はサーバーで。
これはいつも通りだな。
今のところ解析できるのは、
メインリストでサーバーのリストと
「アクセス数」「ユニーク」「エラー」「転送量合計」
の一覧を表示。
サーバー名をクリックで解析対象サーバー選択。
サーバー選択後は解析対象サーバーの
ステータスコード別
ファイル別
リンク元
時間別
検索エンジン
検索文字列
検索単語
UserAgent
ホスト別
リストが表示できる。
ここまではできた。
もう一応それなりの解析ツールとして使えると思う。
まだやってないのが、
ログファイルの最大数設定機能。
ログローテート対応。
ま、すぐできると思う。
ログローテートはまだ発動してないから2番目のファイルがないんだよね。
/var/log/apache2にできるんだよね?
あと、
1ページでテーブル表示だから、
1万ホストとか1万ファイルとかなると表示まずいね。容量も増えちゃうし。
リミッター機能つけるべきだね。