SNMPで値の取得に失敗したらリトライする設定

お世話になっております。

zabbix-1.4.2で
SNMPで値の取得に失敗したらリトライするという設定はできませんでしょうか?

質問の意図としては例えば、ディスク容量(%)をSNMPで取得し、
それが80%以上であればアラートをあげるような以下のTriggerを仕掛けていたとします。

{監視対象名:disk容量(%)を見るitem.last(0)}>80

ここで、80%以上であれば問題なくアラートがあがって(triggerに引っかかって)良いのですが、
何らかの理由で情報の取得に失敗(即ち、取得できた値がない)した場合にもアラートがあがります。

これを『情報の取得に失敗しても数回のリトライのうちに情報が取得できればアラートをあげないようにする』と
したいのです。
# アラートがあがったらメールを送信するようなAction設定をしていて、情報取得に失敗したケースでも
# メールがいちいち飛んできてうるさいんですよね(^-^;)

よろしくお願い致します。

コメント表示オプション

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

こんにちは。

リトライの設定はありませんが、トリガーの条件式を工夫することで可能です。

{監視対象名:disk容量(%)を見るitem.last(0)}>80

上記の条件式ですと、最後に取得した値のみを見て80を超えていたら障害、と判断していますが、例えば5分おきに監視している項目で4回連続で80を超えた場合に障害、と検知するように設定するには以下のようなトリガー条件式で対応できる場合もあると思います。

<code>{監視対象名:disk容量(%)を見るitem.avg(1200)}>80</code>
厳密には、例えば90,90,10,10という値でもアラートが上がらないことになるので、上記の条件式が100%正しいとはいえないのですが、トリガーの関数はその他にも様々なものがありますので、組み合わせてより複雑な条件を設定することも可能です。

ユーザー m-h の写真

kodaiさん、リプライありがとうございます。
大変参考になりました。

結局、2回連続異常だったら障害、と判断するようにし、
以下のとおりとしました。何かおかしかったら突っ込んであげて下さい。

{監視対象名:disk容量(%)を見るitem.last(0)}>80 & {監視対象名:disk容量(%)を見るitem.prev(0)}>80

ユーザー kodai の写真

{監視対象名:disk容量(%)を見るitem.last(0)}>80 & {監視対象名:disk容量(%)を見るitem.prev(0)}>80

上記のトリガーで問題ないと思います。

以下のような方法も使えそうかなぁと思いました。
<code>{監視対象名:disk容量(%)を見るitem.max(600)}>80</code>
5分間隔でアイテムを取得しているとすると、最終2回のチェックで80を超えるものがあった場合に異常となります。遅延の可能性をを考えると、max(800)などとしておくのが良さそうです。

ところで、アイテムが取得できない状況はどの程度発生しているのでしょうか?あまり頻度が高いようであれば、取得できない原因を追究する方が良いかもしれませんよ。

ユーザー m-h の写真

> {監視対象名:disk容量(%)を見るitem.max(600)}>80
なるほど、、、深いですねぇ。

> 遅延の可能性をを考えると、max(800)などとしておくのが良さそうです。
ここらへんもかなり参考になります、ありがとうございます。
「最終2回のチェック」を意識するのであれば

{監視対象名:disk容量(%)を見るitem.max(#2)}>80

でも良いかもしれません。また、未テストではありますが

{監視対象名:disk容量(%)を見るitem.max(#1)}>80

だと取得できなかった時は「最後に取得できた値」を見てくれそうな気もして、『値が取得できなかった時にアラートメールを送信したくない』といった本来の問題点を解決できそうな気もします。

> ところで、アイテムが取得できない状況はどの程度発生しているのでしょうか?
0.0025%といった感じです。4万回に1回、値の取得に失敗しているようです。