アイテムの戻り値が文字列で変更された場合にトリガーを起動する方法について

お世話になります。いつも参考にさせていただいております。

ある監視アイテムの戻り値が文字列で、直近とその前の比較で変更された場合に、トリガーを起動する。
という監視を実現したいと考えております。

例)
時間 アイテム値       期待値
1:00 a a a(正常な状態) ー>トリガー(正常)起動せず
1:05 a b b(異常な状態) ー>トリガー(異常)起動する
1:10 a b b(異常な状態が継続)ー>継続なのでトリガー(異常)起動しない
1:15 a a a(正常な状態に戻った) ー>トリガー(正常)起動する

{host:item_name.last(1).change()}=1で検証してみたのですが、
1:10に前回と同じ値となっているため、期待値と異なり、トリガー(異常)が起動してしまいます。

期待値通りの結果となる設定をご教示いだだけないでしょうか。

コメント表示オプション

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

正常な状態の文字列は固定なのですか?
完全に固定ではなくとも、何らかの規則性は無いのですか?

ユーザー edoshimafukurou の写真

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

正常な状態の文字列は固定との前提でお願いいたします。

ユーザー TNK の写真

そうであるならば、その固定の文字列が含まれていなかったら障害
というトリガーを作成されてはいかがでしょうか?

ユーザー edoshimafukurou の写真

TNKさん

ご返信ありがとうございます。
固定の文字列が、実はとても長い文字列(1万文字程)でして。。
str関数やregexpの引数として指定するのは現実的ではないのです。。。

とても長い文字列とはあるコマンドの出力結果なので、
出力結果を正常としてテキストファイル化、これとあるコマンドの出力結果をdiffで比較して、結果を判定するスクリプトを作成、
これをUserParameterで監視アイテムとして定義、トリガーで判定する方式ですすめようかと考えております。

デフォルトの監視アイテムやトリガーを使って同じようなことを実現する方式をご存知でしたら、お手数ですがご教示願います。

ユーザー TNK の写真

全ての文字を正規化する必要はなく、必ず正常な場合と正常ではな
い場合とを判別できる情報が必要です。

diffだけでは、前回との差があったかどうかでしか判別できないの
で、正常かどうかを判断できません。

ユーザー heya の写真

横から失礼します。

コマンドの正常な出力が完全に固定なのであれば、cron などで定期的にその出力をファイルに出すようにして、Zabbix ではアイテムで vfs.file.md5sum を取得し、トリガーでは前もって調べておいたハッシュ値と比較する、というのはどうでしょうか(vfs.file.cksum でもいいかもしれません)。

ユーザー edoshimafukurou の写真

TNKさん、heyaさん、

参考になる情報、ありがととうございます。

実機で検証してみます。