td-agentが落ちていた場合の対処としてmonitを用いてプロセスを監視します。
インストール
RPMforgeリポジトリ導入(CentOS6系) ※必要な場合のみ
①yum-prioritiesプラグイン導入
$ sudo yum -y install yum-plugin-priorities
$ sudo yum -y install yum-priorities
/etc/yum.repos.d/CentOS-Base.repo
[base]
・・・
CentOS-5
priority=1 # ここ追加
#released updates
[updates]
・・・
CentOS-5
priority=1 # ここ追加
#additional packages that may be useful
[extras]
・・・
CentOS-5
priority=1 # ここ追加
②RPMforgeリポジトリ導入
$ wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
$ sudo rpm -ivh rpmforge-release-*.rpm
monitの導入
$ sudo yum install monit
/etc/monit.conf
set logfile syslog facility log_daemon # コメントアウトを外す
監視するための設定ファイル作成
/etc/monit.d/td-agent.conf
check process td-agent with pidfile /var/run/td-agent/td-agent.pid
start program = "/etc/init.d/td-agent start"
stop program = "/etc/init.d/td-agent stop"
if 5 restarts within 5 cycles then timeout
解説すると、
check process td-agent with pidfile /var/run/td-agent/td-agent.pid
監視するプロセスの指定。
start program = "/etc/init.d/td-agent start"
stop program = "/etc/init.d/td-agent stop"
起動/停止のスクリプトを指定。
if 5 restarts within 5 cycles then timeout
何らかの不具合で起動できない場合に備え、timeoutの設定。
/etc/monit.confに設定しているdeamonの設定を1cycleとし、5cycleの中で5回再起動したら監視外にするという事。
monitの再起動。
$ sudo /etc/init.d/monit restart
動作確認
実際にmonitを起動し、td-agentを落としてみる。
$ sudo /etc/init.d/monit status
$ monit (pid 3678) を実行中...
monitは動いている。
$ sudo /etc/init.d/td-agent status
td-agent (pid 3610) を実行中...
$ sudo /etc/init.d/td-agent stop
Shutting down td-agent: [ OK ]
td-agent止めた。
logを確認してみる。
Aug 19 14:34:47 localhost monit[3678]: 'td-agent' process is not running
Aug 19 14:34:47 localhost monit[3678]: 'td-agent' trying to restart
Aug 19 14:34:47 localhost monit[3678]: 'td-agent' start: /etc/init.d/td-agent
おお、勝手に再起動かかってるっぽい。
$ sudo /etc/init.d/td-agent status
td-agent (pid 3727) を実行中...
実際にちゃんと動いていた。
monit簡単なのに凄い色々できそう!