複数台で運用しているサーバのアクセスログを1つに統合する

Linux

複数台のフロントエンドサーバでapacheが動いている場合を想定します。

その場合、アクセスログが複数のサーバにまたがってしまいます。

こんなかんじ。

  • web-01.access-log.20071130
  • web-02.access-log.20071130
  • web-03.access-log.20071130

webalizerやawstatsといったアクセスログ解析ソフトではこのファイルの状態では解析できない。

なぜなら、webalizerやawstatsのデフォルトでは1つのファイルのみを入力として受け付け、時系列順に記録されていなければならない。

この問題を解決するスクリプトを発見しました。awstatsの中に入っているlogresolvemerge.plというperlスクリプトです。

使い方は超簡単。引数に統合したいファイルを指定して実行すると、標準出力に時系列順にそろったレコードが出力される。

例:

% perl logresolvemerge.pl /path/to/log/*access.log.20071130|more

引数にgz圧縮されたファイルを指定してもちゃんと動きます。至れり尽くせりなスクリプト。

★おまけ情報★
ある日まで、commonフォーマットでアクセスログを取っていて、ある時点からcombinedフォーマットでログを取りだした場合、1つのアクセスログの中に2種類のフォーマットのログが混入してしまう。

そこで見つけたのがこの方法。commonフォーマットをcombinedフォーマットにする方法。
http://www.trisweb.com/archives/2007/02/15/convert-apache-common-logs-to-combined-logs/

3回シェルのコマンドを実行すればできちゃう!CUIはすばらしい。

参照:

AWStats - Open Source Log File Analyzer for advanced statistics (GNU GPL)
AWStats Official Web Site - Compile and generate advanced graphical web, ftp or mail statistics with a logfile analysis ...

コメント