トリガーの条件式

いつも勉強させて頂きありがとうございます。

今回は、POSのデータを収集するプログラムの監視を行う必要があり、テストを行っております。

【フロー】
POSのデータがたまるフォルダのファイル数をチェックし、zabbex_senderで送信
送信値:ファイルが有る場合、”Warning” ファイルがない場合、"Normal"

上記をPOSサーバー側のタスクで、1時間ごとに送信してます。

そして、「監視データ」・「最新データ」で正常に更新されている事までは確認できましたが、”Warning”が2回連続して発生した場合、致命的な障害として、私の携帯にメールを送信したいと考えております。
※メール設定等は完了しております。

障害としての条件
”Warning”発生1回目 → 正常
”Warning”発生2回目 → 障害
"Normal"が1回発生で → 正常へ復帰

【アイテムの設定】
名前:POS集配信監視
タイプ:zabbixトラッパー
キー:PosMonier
データ型:文字列
ヒストリ保存期間:90日
値のマッピング:なし

◎現在の設定
{POS:PosMoniter.str(Warning)}<>0 or {POS:PosMoniter.str(Normal)}=0
※この場合、1回目の"Warning"で、障害としてしまう為、出来れば2回目で障害として判断出来ればと考えております。

過去ログ”http://www.zabbix.jp/node/2573”を確認しましたが、理解できませんでしたので、アドバイス頂けましたら幸いです。

コメント表示オプション

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

>”Warning”が2回連続して発生した場合、致命的な障害として、私の携帯にメールを送信したいと考えております。

そのような場合、count 関数を利用し、以下のように設定するのが良いと思います。
( POS:PosMoniter.str(Warning) が期待動作している前提)

{POS:PosMoniter.str(Warning).count(#2, 0, "ne")}>1

簡単にネット検索した限りですが、使用されている Zabbix のバージョンが 1.8 以降であれば
count 関数は利用可能そうです。

[参考情報]
http://dekokun.github.io/posts/2014-01-30.html
http://www.zabbix.jp/node/3375
https://www.zabbix.com/documentation/1.8/jp/manual/config/triggers
https://www.zabbix.com/documentation/2.0/jp/manual/appendix/triggers/fun...

ユーザー Sujinosuke の写真

sogaoh 様

早速のアドバイス有難うございます。

条件式にお教え頂いた[.count(#2, 0, "ne")]を追加して、下記へ変更した所、更新時に”トリガー条件式が正しくありません”で更新できませんでした。
◎更新できなかった条件式
{POS:PosMoniter.str(Warning).count(#2,0,"ne")}<>0
私の想像では、「POS:PosMoniter」に対して「str(Warning)」と「.count(#2,0,"ne")」2つ入っているからでは無いかと思い、お教え頂いたURLを参考に、下記へ変更してみましたが、すべて異常で上がるようになってしまいました。
POS:PosMoniter.count(#2,"Warning",eq)}

私の勝手な解釈ですが、str(Warning)を使わずに、count関数だけで判定が出来るのではと考えておりますが、その場合どう記述すればよいのでしょうか?

重ね重ね恐縮ですが、アドバイス頂けましたら幸いです。

書き忘れました、Zabbixのバージョンは、2.4.6です。

◎追記
https://www.zabbix.com/documentation/2.0/jp/manual/appendix/triggers/fun...
↑を読んで、私なりに解釈してみまいたが、
countを使う場合、「.count(#2,"Warning",eq)」
strを使う場合、.str("Warning",#2)
で、障害発生となりませんでしょうか?
両方試してみましたが、1回目で障害と条件付けされてしまいました。

ユーザー sogaoh の写真

>条件式にお教え頂いた[.count(#2, 0, "ne")]を追加して、下記へ変更した所、更新時に”トリガー条件式が正しくありません”で更新できませんでした。

不正な情報を伝えてしまい、申し訳ありません。
以下はどうでしょうか?

{POS:PosMoniter.count(#2,"Warning")}>1

意図は、「"Warning" という文字列値を、 #2 回 検査したときに 2 回(>1) Hit することを検出する」というものです。
括弧({ })の位置は調整の必要があるかもしれません。

ユーザー Sujinosuke の写真

sogaoh様

>不正な情報を伝えてしまい、申し訳ありません。
気になさらないで下さい、"count()"関数の事を教えて頂き感謝しております。

>{POS:PosMoniter.count(#2,"Warning")}>1
↑これで、期待通りの結果が得られました。

今回は、トリガー条件式の事を知るきっかけになり、今後のシステム構築に大いに役に立つと思います。
有難うございました。