ダッシュボード上の障害を定期的にクリアする方法

お世話になっております。
表題の件についてご教授願いたく、投稿させて頂きました。

Zabbixバージョン:2.4
インストールOS:RHEL6.4

ログの監視を行うにあたり、
トリガー条件式にはnodata()を使用せずにダッシュボード上に障害として
あがっている件数を定期的にクリアする方法を検討しております。

お手数おかけして申し訳ありませんが、
実現方法がございましたらご教授いただけますと幸甚です。

コメント表示オプション

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

こんにちは。

同じようなことをしたかったが結局分からずにあきらめたことがあります。
#私は、PHP を書き換えないと実現できないんじゃないかと思っています。

ただこのとき、代替として、少し違うのですが、別の方法で障害件数を表示するページを作りました。

・ZabbixAPI を使い、トリガーのステータスを調べる
・トリガー名に特定の文字列(log とか trap とか)を含まないものについては単純にトリガーのステータスで「正常」か「障害」にカウント
・トリガー名に特定の文字列を含むもの(※)については
 - 正常なら「正常」としてカウント
 - 障害になったのが指定した時間以前(例:一日前より古い)のものであれば「障害(古い)」にカウント
 - 指定した時間以降であれば「障害」にカウント
・最後に、「正常」「障害」「障害(古い)」のそれぞれの数を出す

・・・というようなスクリプトを作り、CGI からそれを呼び出して、件数をまとめて表示するというものです。応用すれば深刻度別やホスト別に表示することも可能です(そこまで作りこんでいませんが)。

※特定の文字列を含むかどうかではなく、アイテムのタイプが「Zabbixエージェント(アクティブ)」か「SNMPトラップ」であるかどうか、で判断した方がいいかもしれません。

PHP 書き換えにしても、上に書いた方法にしても、面倒なことに変わりはないですね。どこかの設定だけでパッとできる簡単な方法は無いんじゃないかと思います。
ログ監視はそういうものだと割り切るのが一番楽なんですが・・・。

ユーザー tanakazu の写真

heyaさん

お返事ありがとうございます。

やはり、スクリプトを作り込むなりしないと難しそうですかね。
heyaさんのような方法を行えば、一定時間経過した障害と新たな障害の振り分けは可能となると存じますが、
一度障害となったものについては障害のまま残ってしまう認識です。
nodata()を使用せずに「正常」へ戻して障害をクリアする方法は仕様上無いと考えた方が良さそうですかね。

私の理解不足のため、認識違いなどありましたら申し訳ありません。
よろしくお願いします。

ユーザー TNK の写真

nodata()の副作用を理解した上で利用するか、ダッシュボードのフ
ィルタ機能などを利用して障害対応コメントを入力したら表示させ
ないという方法のどちらかになると思います。

Webインターフェースから障害の状態のトリガーを強制的に正常に
戻す機能はありません。

改善要望としてはあがっているのですが、具体的にいつ実装される
かは未定のようです。

ご参考
ZBXNEXT-104: switch trigger to OK based on acknowledgement by user
https://support.zabbix.com/browse/ZBXNEXT-104
Docs/roadmap
http://www.zabbix.org/wiki/Docs/roadmap

ユーザー tanakazu の写真

TNKさん

お返事ありがとうございます。

やはり厳しいですね。
改善要望のひとつにあがってはいるのですね!
参考情報までありがとうございます。

障害対応コメントでの対応で検討してみます。
ありがとうございました。

ユーザー makibao の写真

こんにちは。

あまりお勧めできる方法ではありませんが、スクリプト化する方法でもよければ、
SQLによりtriggersテーブルの障害フラグを無理やり書き換えることで、できなくはないです。

update triggers set value="0" where status="0" and value="1";

このSQLをシェル化するなどしてcronで定期的に実行すれば目的のことができると思います。
強引ですが。

また、lastchangeカラムには、状態が障害に移行した時間がUNIXタイムで記録されているので、
何分以上経過していたらという条件を加えるとよいかもしれません。