概要
みなさんこんにちはcandleです。今回は、fluentdの自動起動を試したいと思います。
centosかつfluentdかつdaemon toolsって誰に需要があるのか分からない記事ですがよろしくお願いします。
恐らく多くの人が最初はwindowsかmacをOSに使っていたと思います。
この2つのOSは素晴らしく、GUIで自動起動の設定がホイホイできるのですが、CUIともなると、色々設定をする必要があります。
前提
fluentdが既に入っている
damontoolが既にインストールされている
daemontフォルダを作る
始めに、ルートディレクトリのvarフォルダにdaemontというフォルダを作ります。
ちなみに、必ずしもdaemontというフォルダにする必要はありません。私が参考にしたサイトはsvと名づけていました。
chownで権限をrootから今ログインしているユーザーに変更します。
sudo mkdir /var/daemont sudo chown `whoami`. /var/daemont
fluentdの設定ファイルを作る
fluentdは簡単なコマンドで設定ファイルを作れます。
fluentdを起動した時に初期設定で、fluentdが設定ファイルを参照する場所は/etc/fluent/fluent.confです。特に理由がなければ、そこにfluent.confを作りましょう。
fluentフォルダをetcの中に作ります。
sudo mkdir /etc/fluent/
続いて、管理者をrootと今ログインしているユーザにします。
sudo chown root:ユーザー名 /etc/fluent/
私の場合はユーザーはvagrantなので、下のようになります。
sudo chown root:vagrant /etc/fluent/
権限を変更します。
sudo chmod 775 /etc/fluent/
fluentdの設定ファイルを作成します。
fluentd --setup /etc/fluent/
fluentdの設定ファイルが作成されました。
daemon toolsの実行ファイルを作る
daemon toolsの設定をやっていきましょう。daemon toolsの設定方針として、/var/daemontフォルダの中に自動起動させたいサービスのフォルダを作り、そこに自動起動の設定ファイルを作っていく方法を取ります。概念図的には下のようになります。
先ほど作成した/var/daemont/フォルダの中にfluentフォルダを作り、そこに移動します。
mkdir /var/daemont/fluent/ cd /var/daemont/fluent/
daemon toolが参照するrunファイルを作成します。
touch ./run
エディタでrunファイルを開いて、下の内容を書き込みましょう。エディタはemacsでもviでもvimでもなんでもよいです。
書く内容はつまりはシェルスクリプトですね。
#!/bin/bash exec 2>&1 exec /home/vagrant/.rbenv/shims/fluentd -c /etc/fluent/fluent.conf
補足として、一番初めの行のシェルの種類は各自使っているシェルで良いと思います。私は単純にbashを使っているのでbashを宣言しています。
3行目のコマンドですがfluentdコマンドのフルパスを記述しています。
もしも、gemではなくてrvmや自力でfluentdを入れた人はwhich fluentdでfluentdコマンドの絶対パスを調べて、書き換えてください。
保存したら、runファイルの実行権限を変更します。
chmod +x run
最後に、/var/daemont/fluent/と/service/をリンクでつなげます。
sudo ln -s /var/daemont/fluent/ /service/
設定がうまくいった確認する
面倒なのですが、サーバを再起動して、ちゃんとfluentdが稼働するか確認しましょう。
再起動したら、下のコマンドを入力します。
ps aux | grep fluent
もしも、下のようになっていればうまくfluentdが起動しています。
fluentdにデータが送れるか試します。下のコマンドを投げてエラーが出なければ成功です。
echo '{"first":"hello"}' | fluent-cat debug.test
できましたね。fluentdが動いています。
まとめ
どうでしょうか、daemontoolsを使えば自動的にサービスが動くので、万が一サーバがダウンしても気に病むようなことはなくなりました。fluentdの具体的な使い方に関してはまた別の記事でやっていきましょう。