zabbixでリモートコマンドが動作しない
memcachedをウェブサーバの内部キャッシュとして使用しています。こいつあまり安定性がよろしくなくて、時々おちるんです。
そこで、zabbixで動作をチェックして、死んだときには叩き起こすことにしました。
トリガ、アクションを設定して動作しているmemcachedをkillすると、アクションで設定したメール送信は実施されるが、/etc/init.d/memcachedが動作していない。
zabbixエージェントがリモートコマンドを実行できないのかな
zabbix_agent.confでリモートコマンド実施は有効になってる。
EnableRemoteCommands=1
問題なし。
sudoが悪いのかな
アクション中のリモートコマンドは以下の用に設定。
{HOSTNAME}:sudo -u root /etc/init.d/memcached
当該ホストでzabbixで以下を実施。問題ないみたい。
$ sudo -u root /etc/init.d/memcached
標準エラーになにか出てないかな?
アクションを以下に設定。
{HOSTNAME}:sudo -r root /etc/init.d/memcached > /tmp/memcached.log 2>&1
うーん、なにも出てこない。
/etc/init.d/memcachedが悪いのかな
/etc/init.d/memcachedを使わないでmemcachedを起動してみよう。
当該ホストで以下を実施。
$ sudo -r root /usr/local/bin/memcached -u root libevent-1.4.so.2 がないとかなんとか
おう、共有ライブラリが見えないのか。上の標準エラーでなにか出てほしかったなぁ。/etc/init.d/memcachedはperlスクリプトだったのでなにも出てこなかったんでしょうか。
ということで/usr/libへリンクをはって解決。
crontabとかsudoっとかttyを使わないスクリプトはこういうことがよくあるから注意がいります。