ダッシュボードの障害表示のクリア方法について

ZABBIXの超初心者ですが、ご教示頂きたい事がありまして質問させて頂きます。

SNMPトラップを受信した場合の動きについてなのですが、
例えばlinkDownのSNMPトラップをZABBIXで受信した際に、事前にトリガーを設定しておいてダッシュボードに警告として表示させた後に
linkUpのトラップを受信した場合、ZABBIXのダッシュボードに表示された障害表示を消せないか考えております。

使用環境:Debian7.9 ZABBIX2.4.6

アイテム設定

アイテムキー snmptrap["linkDown"]

○障害検知トリガー1
({ホスト名:log[/var/log/snmptt/snmptt.log].regexp(linkDown)}<>1)
深刻度:重度の障害
障害イベントを継続して生成

疑似的にこのlinkDownのトラップを監視登録済のホストから上げると障害として検知され、ダッシュボード上に表示されるようにしています。
snmptrap -v 2c -c public zabbixサーバ '' .1.3.6.1.6.3.1.1.5.3

同様にlinkUpのSNMPトラップを上げた場合では障害の表示が消えないので、これを正常に戻す方法が無いかを調べております。
過去の問い合わせの中でnodata関数を使った例がありますが、
トリガー1にnodata関数を用いた以下の条件式をトリガー2として追加して試してみました。

○トリガー2
アイテムキーは1と同じ
({ホスト名:log[/var/log/snmptt/snmptt.log].nodata(180)}<>1)
深刻度:情報
障害イベントを継続して生成

作成した条件式
((ホスト名:log[/var/log/snmptt/snmptt.log].regexp(linkDown)}<>1)and({ホスト名:log[/var/log/snmptt/snmptt.log].nodata(180)}<>1))

一旦ダッシュボード上に障害として検知された後、nodata関数に指定した時間が経過後に
ダッシュボードから消えるのかと思っていたのですがやはり障害として残ってしまいます。

SNMPトラップで障害として検知した後、nodata関数を使ってダッシュボードの表示を
正常に戻すような動作をさせようとすると条件式はどのように書けばよいのでしょうか?
ご教示頂けると幸いです。

お手数をお掛けしますがどうか宜しくお願い致します。

コメント表示オプション

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

こんにちは。

linkDown で障害、linkUp で回復(それ以外で回復はしない)であれば、nodata を使わずにできます。ただし、アイテムも少し変える必要があります。

アイテム
snmptrap["linkDown|linkUp"]
※SNMPTT の設定は問題ないと仮定

アイテムの説明
・これは linkDown/linkUp 専用のアイテムです。他のトラップも受け取るならそれは別のアイテムで設定してください。

トリガー
({TRIGGER.VALUE}=0 and {ホスト名:snmptrap["linkDown|linkUp"].str("linkDown")}=1) or ({TRIGGER.VALUE}=1 and {ホスト名:snmptrap["linkDown|linkUp"].str("linkUp")}=0)
※障害イベントを継続して生成 のチェックは外します

トリガーの説明
・{TRIGGER.VALUE} は、現在のトリガーの値が入るマクロで、障害なら 1 、正常なら 0 になります。
・トリガーの条件式には、「トリガーが障害となる条件」を書くので、回復条件を書く場合は「これ以外なら障害」といった感じで書くことになります。
というわけで、上のトリガーはこんな意味になります。
・正常状態のときに linkDown が来たら障害
・障害状態のときに linkUp 以外が来たら障害 = linkUp が来たら回復

ユーザー hokuhokuhoku の写真

heya様

ご回答頂きまして有難う御座います。

色々試していたのですが、過去フォーラムのhttp://www.zabbix.jp/node/2685にある
last関数を試してみたところ、ほぼ考えていた通りの動きになりました。
ルータのポート1を監視するアイテムを作成し、
トリガー条件式 {ホスト名:ifOperStatus.1.last()}=2
この関数であればルータのケーブルを抜くとダッシュボードに障害として表示され、
戻すと障害がクリアされ正常に戻ります。

ご教示頂いた内容も試してみて、関数を用いた場合とどちらがよいか更に検証していきたいと思います。

またご質問させて頂くかもしれませんが、その際はどうか宜しくお願い致します。
本当に有難う御座いました。

ユーザー heya の写真

トラップにこだわる必要がなく、 ifOperStatus でこと足りるならそちらの方が簡単でいいと思いますよ。