system.runの動向について

初めて投稿させていただきます。
よろしくお願いいたします。

system.runにてシェルスクリプトを実行しその実行結果にて監視を行っているのですが、
正しく監視ができておらず、原因調査を実施しております。

[設定内容]
トリガーの条件式:system.run( a.sh).min(#2)#1
※a.sh は正常であれば「1」を異常であれば「2」を返すシェルスクリプトと想定してください。

ただし今回、シェルスクリプトに不具合があり実行すると、ZBX_NOTSUPPORTEDとなることがわかっています。
※zabbix_getにて実行して確認しております。

この場合の監視について、監視不可のようなアラートがなることが想定されるのですが、
現状、正常と判断しております。(常に1を戻り値として受け取っています。)

wait,nowaitは付加しておりません。

気になること--------------------------------

system.runが戻り値にZBX_NOTSUPPORTEDを受け取った時の
動向についてご存じであれば教えていただきたいです。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

ZBX_NOTSUPPORTEDが返却された場合は、そのアイテムが取得不可の
状態になるだけです。

取得不可になったからといって、通常のトリガーの設定だけではア
クションは実行されません。

アイテムが取得不可になった時点で何らかのアクションを実行され
たいのであれば、Zabbix 2.2以降を利用して、取得不可になった時
に通知を行うように設定されてはいかがでしょうか。

https://www.zabbix.com/documentation/2.2/manual/config/notifications/uns...

ユーザー hatayan の写真

TNKさん、早速のご返信ありがとうございます。

>ZBX_NOTSUPPORTEDが返却された場合は、そのアイテムが取得不可の状態になるだけです。

やっぱりそうですよね。
でも現状はそのようになっていないので困っています。

     シェルスクリプトを手動実行すると、ZBX_NOTSUPPORTEDが返るのに
     実際の監視では正常だと判定(戻り値1)。

素直にアイテム取得不可状態となってくれればよかったのですが、、、。

system.runにバグでもあるのかなと思い投稿させていただきました。
もう少し調べてみます。

ユーザー TNK の写真

minを利用していた場合、「取得できた値の中で」の最小値ですの
で、取得できないものは除外されて、正常に取得できた「1」をそ
のまま「system.run( a.sh).min(#2)」の値として返却しているの
だと思います。

min(#2)は必要ですか?
例えば、正常(1)→異常(2)となった場合も、正常(1)とみなして良
のですか?

ユーザー hatayan の写真

TNKさん、ご返信ありがとうございます。

>例えば、正常(1)→異常(2)となった場合も、正常(1)とみなして良のですか?
良いです。

a.shの詳細内容はログインチェックをするものとなります。
2回実行して一度でもうまくいけばその時の監視は正常だと判断させるためにminを利用しておりました。

minを外せば、正確な判定ができそうな気がします。

でもそうなると、minを利用して2回ともZBX_NOTSUPPORTEDにて失敗した場合の、
system.runの動向が気になりますね。

ユーザー TNK の写真

取得不可になった時、トリガーは発生していないと思います。
トリガーの発生した時刻は確認されていますか?
以前発生したトリガーがそのままであったりしませんか?

取得不可になったタイミングではアクションは実行されていないは
ずです。

あと、取得不可になった場合、次に値取得のリトライが行われるの
は、アイテムに設定された取得間隔ではなく、

 管理 -> 一般設定 -> その他

で設定する、

 取得不可アイテムの更新間隔(秒)

での間隔となりますのでご注意ください。

でもそうなると、minを利用して2回ともZBX_NOTSUPPORTEDにて失敗した場合の、
system.runの動向が気になりますね。

手元で試してみましたが、値が取得できないので式の評価も呼び出
されませんでした。

トリガーの状態が障害のままなら障害のまま、正常の状態なら正常
の状態のままで状態の変化はありません。

ユーザー hatayan の写真

TNKさん、
わざわざ、動作検証までご確認いただきありがとうございます。

こちらで、正常な値を取得していることを確認しているのは、以下の画面からとなります。

   監視データ-最新データ

最新のチェック時刻(=トリガーの発生した時刻)も現在の時間に近い値となっているので、
定期的に動いていると考えます。

>正常の状態なら正常の状態のままで状態の変化はありません。
この状態に陥っていれば、説明は付く気がします。
ただこの場合では、上記最新のチェック時刻は更新されないのでしょうね。

う~ん謎です。
TNKさんが言われているトリガーの発生した時刻はどこで確認できるものでしょうか。

ユーザー TNK の写真

最新データのページで、直近の時刻で値が取得できているのであれ
ば、正常に取得できているのでしょう。

取得できていない場合は、Zabbix 2.2以降ならグレーで表示され、
時刻も過去に取得できた古い時刻になっているはずです。

また、トリガーが発生した時刻は、

 監視データ -> トリガー

 監視データ -> イベント

のどちらかの画面で確認できます。

そこに出てきていないのであれば、取得不可になったからといって
トリガーが発生しているわけではないことはご確認いただけると思
います。

繰り返しになりますが、取得不可になったことを検知されたいので
あれば、別の設定が必要になります。
設定方法は、先にご紹介したリンク先にありますので、ご確認くだ
さい。
# 英語ですが。 (^_^;)

ユーザー hatayan の写真

TNKさん

いろいろとご相談に乗っていただきありがとうございました。

※シェルスクリプト等もう一度見直して再度検証してみます。