system.runによるコマンド実行時の戻り値に対する適切なトリガー設定
いつもお世話になっております。
●検知したい動作
system.runでzookeeperのプロセス確認を行いたいと思っています。
実行コマンドはzookeeper実行サーバで以下コマンドを実行します。imokとだけ返ってくれば正常時で、何も返ってこない場合(リターンコード1,$?=1)はプロセスが落ちている状態です。
echo ruok | nc localhost 2181
imok
●問題と現状
アイテムの作成自体はうまく行き最新の状態としても、zookeeper起動時はimokを取れていて、zookeeper停止時はimokが取れない、ことが確認出来ています。
問題はトリガーの設定で、以上時に"imok"でないと設定を入れているのですが、検知されません。
ログを見るとプロセス停止のタイミングでzabbixサーバログにNot supported by Zabbix Agentと出ておりました。
もしかしたらリターンの値が何もないことが問題でしょうか?その場合リターンコードが0か1というトリガーの作成は可能でしょうか?
トリガー設定としては以下になります。
(({10.**.**.**:system.run["echo ruok | nc localhost 2181"].regexp(imok)})=1)
●zabbixバージョン
zabbixserver:2.0.5
zabbixagent:2.0.5
●zabbixサーバログ
zabbixサーバでのdebuglevelでのzabbix_server.logになります。
8222:20130307:111446.744 In substitute_key_macros() data:'system.run["echo ruok | nc localhost 2181"]'
8222:20130307:111446.744 End of substitute_key_macros():SUCCEED data:'system.run["echo ruok | nc localhost 2181"]'
8222:20130307:111446.744 In get_value() key:'system.run["echo ruok | nc localhost 2181"]'
8222:20130307:111446.744 In get_value_agent() host:'10.**.**.**' addr:'10.**.**.**' key:'system.run["echo ruok | nc localhost 2181"]'
8222:20130307:111446.745 Sending [system.run["echo ruok | nc localhost 2181"]
8222:20130307:111446.750 Item [10.**.**.**:system.run["echo ruok | nc localhost 2181"]] error: Not supported by Zabbix Agent
8261:20130307:111450.765 item [10.**.**.**:system.run["echo ruok | nc localhost 2181"]] became not supported: Not supported by Zabbix Agent
maco - 投稿数: 32
条件式以下で、
{10.**.**.**:system.run["echo ruok | nc localhost 2181"].regexp(imok)}=1
トリガの編集で、条件式ビルダをクリックすると
条件式がパイプのところで分割されていますが、これは問題ない動きでしょうか?
条件式ないでのパイプの扱いの作法があるでしょうか?
ターゲット 条件式 エラー アクション
OR 削除
A {10.**.**.**:system.run["echo ruok 削除
B nc localhost 2181"].str(imok)}#1 削除
TNK - 投稿数: 4769
実行結果には、何らかの文字列か値が必要です。
空だと値が取得できなかったと判断されます。
maco - 投稿数: 32
TNK様
回答ありがとうございます。了解しました。
|grep imok | wc -l を追記することで、戻り値を0or1にして判断させることにしました。