Spread Toolkit で分散ログ (3) インストールと設定 mod_log_spread / spreadlogd

mod_log_spread
Apache は 1.3.37 を使用。Apache2 には対応していないので、Apache2 ではパイプ経由で外部プログラムを起動します(後述)。

mod_log_spread.tar.gz をダウンロード、展開して apxs でコンパイルとインストール。

$ tar zxvf mod_log_spread.tar.gz
$ cd mod_log_spread-1.0.4/
$ /usr/local/apache/bin/apxs -c \
      -I/usr/local/include -L/usr/local/lib \
      -lspread -ltspread mod_log_spread.c
# /usr/local/apache/bin/apxs -i mod_log_spread.so

-lspread -ltspread を忘れると、コンパイルは通るのに Apache 起動時に

Cannot load /usr/local/apache/libexec/mod_log_spread.so into server: /usr/local/apache/libexec/mod_log_spread.so: undefined symbol: SP_connect

とかなるので注意。

httpd.conf の設定。

LoadModule log_spread_module libexec/mod_log_spread.so
AddModule mod_log_spread.c
SpreadDaemon 4803
CustomLog $apache combined

mod_log_spread-1.0.4 に含まれる spread.html には "LoadModule spread_log_module libexec/mod_log_spread.so" という記述があるが、これだとこれまた Apache 起動時に

Can't locate API module structure `spread_log_module' in file /usr/local/apache/libexec/mod_log_spread.so: /usr/local/apache/libexec/mod_log_spread.so: undefined symbol: spread_log_module
LoadModule spread_log_module libexec/mod_log_spread.so

となって起動しないので、これも注意。

Apache を起動すると、"[notice] set_spread_daemon(4803) for index 0" のようなメッセージが error_log に出ます。

spreadlogd

spreadlogd.tar.gz (1.4.2)
spreadlogd.tar.gz (2.0.0)
[追記] 2007-2-7
初出時、spreadlogd.tar.gz へのリンクが version-1.4.2 のものになっていました。以下は 2.0.0 での記述です。(fc5 だと 1.4.2 は make でコケル)

make には libevent (1.1以上?) が必要です。

$ ./configure
$ make
# make install

/usr/local/etc/spreadlogd.conf

Spread {
        Port = 4803
        Log {
                RewriteTimestamp = CommonLogFormat
                Group = apache
                File = /var/log/spread_log
        }
}

Group には httpd.conf で CustomLog $xxx とした場合の xxx を指定。

/usr/local/sbin/spreadlogd で起動します。オプション -v で verbose mode、-D で daemon にならずに起動 (デバッグモード) です。