p_chinのおっぱいブログ

UnityとPerlなど

fluentdをdaemontoolsで起動させる

今回はfluentdをdaemontoolsで自動起動(daemonize?)させるのにハマったのでメモ

はじめに

基本的に$HOME/service/fluentd/logの構成で作ったものを、/service/fluentdにシンボリックリンクを貼るのがキレイなやり方らしいので、まずはホームに移動して/service/fluentd/logのような構成でディレクトリを作る。

mkdir -p  /service/fluentd/log

-pオプションを付けると途中の無いディレクトリも作成してくれる

 

runにshellで起動scriptを書く

fluentdとlogディレクトリ配下に「run」というshellScriptが書かれたファイルを置く(runという名前にしないと動かないらしい)

 

fluentd/runには以下のように書く

\#!/bin/sh
export PATH=$HOME/.rbenv/bin:/usr/local/bin:$PATH
eval "$(rbenv init -)" #もともと"$(rbenv init -zsh)"と書いてあったがzshはいらないらしい
exec 2>&1
exec setuidgid {UserName} fluentd -c fluent.conf #{UserName}ユーザーでfluentdを起動

 

fluentd/log/runには以下のように書く

#!/bin/sh
exec multilog .

シンボリックリンク(windowsのショートカット的なやつ)を貼る

ホームに作成した$HOME/service/fluentdディレクトリのシンボリックリンクをルートの/serviceに貼る作業

 

fluentdだったら

$sudo ln -s /Users/{UserName}/service/fluentd /service/fluentd

のように貼る

ちゃんとdaemonで起動してるか確認

sudo launchctl unload path/to/com.github.mxcl.homebrew.daemontools.plist
sudo launchctl load path/to/com.github.mxcl.homebrew.daemontools.plist


  • プロセスから起動を確認する
ps aux | grep fluentd

して、プロセス一覧に

{UserName}  79207   0.0  0.2  2486892  17464   ??  S     3:08PM   0:03.29 /Users/{UserName}/.rbenv/versions/1.9.3-p392/bin/ruby /Users/{UserName}/.rbenv/versions/1.9.3-p392/bin/fluentd -c /service/fluentd/fluent.conf`

のような表示があれば、とりあえずは起動していると思う。

まとめ

色々曖昧な感じなので追記する必要がありそう...