daemontoolsを使ってfluentをデーモンとして動かす
追記
とりあえず起動したいだけなら--daemonオプションつけて起動すればいいと思います。
$ fluentd -d /var/run/fluentd.pid -c /etc/fluent/fluent.conf
みたいな感じで
仕様
- fluentというユーザでデーモンを動かす
- rvmのruby-1.9.2でfluentというgemsetに必要なgemを入れる
- fluentdに--daemonというオプションがあるが使い方がよく分からないのと汎用性が低いのでdaemontoolsで動かす
ユーザ作成
$ useradd fluent
rvmの準備
$ su - fluent % rvm list # 1.9.2がインストールされてなければ % rvm install 1.9.2 % rvm use 1.9.2 % rvm gemset list # fluentというのが作成されてなければ % rvm gemset create fluent % rvm use 1.9.2@fluent --default
fluentdのインストール
% whoami fluent % rvm current ruby-1.9.2-p290@fluent % rvm install fluentd --no-ri --no-rdoc # デーモンにドキュメントは不要 % which fluentd /home/fluent/.rvm/gems/ruby-1.9.2-p290@fluent/bin/fluentd
fluentの設定ファイルの作成
/etc/fluentに設定ファイルを置くことにする(デフォルトの場所)
$ mkdir -p /etc/fluent $ chown fluent:fluent /etc/fluent
% whoami fluent % fluentd --setup /etc/fluent % ls /etc/fluent fluent.conf plugin
起動確認
% fluentd -vv & % echo '{"hello":"world"}' | fluent-cat debug.test 2012-02-02 13:44:30 +0900 debug.test: {"hello":"world"}
deamontoolsのインストール
本家のサイトから daemontools-***.tar.gz をダウンロード
ここではdaemontools-0.76.tar.gzの場合を書く
$ mkdir /package $ cd /package $ wget http://path/to/daemontools-0.76.tar.gz $ tar xzvf daemontools-0.76.tar.gz $ rm daemontools-0.76.tar.gz $ cd admin/daemontools-0.76
src/error.hを以下のように変更
diff -ur daemontools-0.76.old/src/error.h daemontools-0.76/src/error.h --- daemontools-0.76.old/src/error.h 2001-07-12 11:49:49.000000000 -0500 +++ daemontools-0.76/src/error.h 2003-01-09 21:52:01.000000000 -0600 @@ -3,7 +3,7 @@ #ifndef ERROR_H #define ERROR_H -extern int errno; +#include <errno.h> extern int error_intr; extern int error_nomem;
$ ./package/install
daemontools用の設定ファイルを作成
% whoami fluent % pwd /home/fluent % mkdir -p service/fluentd/log % chmod +t service/fluentd
service/fluentd/runとservice/fluentd/log/runを設置
% chmod +x service/fluentd/run % chmod +x service/fluentd/log/run % cat service/fluentd/run #!/bin/sh exec 2>&1 source /etc/profile.d/rvm.sh exec setuidgid fluent /path/to/fluentd % cat services/fluentd/log/run #!/bin/sh exec setuidgid fluent multilog t ./main '-*' '+* status: *' =status
service/fluentd/runの中の/path/to/fluentdは
% which fluentd
で分かる。
最後に
$ ln -s /home/fluent/service/fluentd /service/fluentd
daemontoolsの確認
$ svstat /service/fluentd /service/fluentd: up (pid ******) 2370 seconds
0secondsと1secondsの間をpidが切り替わりながら繰り返している場合は起動に失敗してる。