分割されたApacheのログをマージする。This program merge divided Apache log.

| コメント(0) | トラックバック(1)

負荷分散された環境で、SYSLOGなどを使わずにApacheやProxyのログが複数サーバにそのままはかれる設定になっている場合、ログを調査する際に複数の巨大なファイルを扱わなくてはならず面倒ですね。

なんとなく既にあって車輪の再発明をしている気がギュンギュンするのですが、ざっとググったところ見つからなかったので書いてみました。

使い方

$ aplogmerge.rb 1.log 2.log 3.log...

色々なケースにおけるテストとか全然やってないのですが何となく動いてそう。 あ、Ruby1.9.2でしか動作確認してません(汗)

Apacheのログはアクセスされた時間をレスポンスした時に出力するため、それぞれのファイル内で前後している行がある可能性があります。 その場合このプログラムでマージすると純粋に正しい出力にはならないかもしれませんが、概ね目的の出力は得られると思います。

日時を数値に変換してるとこはテキトーです。各行の前後関係が分かればよいだけなので、もっと速くていいロジックがありそう。

Cで書かないと実用に耐えないかな?と思いましたが約1GBのログ3つで実行したところ6分くらいで返ってきたので十分かなと。

profileすると現状、遅いのは比較のため日付を数値に変換している処理と、まだ先読みしてないファイルを特定するためArray#rejectしてるとこ。 気が向いたらもう少しチューニングしたいですが、現状十分な速度なのでもういいかなと(笑)



トラックバック(1)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/538

分割されたApacheのログをマージする。This program merge divided Apache log. - IwazerReport 続きを読む

コメントする

このブログ記事について

このページは、iwazerが2011年8月25日 11:45に書いたブログ記事です。

ひとつ前のブログ記事は「mongrelとかじゃなくてthinだね。あとnginx」です。

次のブログ記事は「Snow LeopardでEmacs 24をBuildしてみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。