アイテムの戻り値が文字列で変更された場合にトリガーを起動する方法について
お世話になります。いつも参考にさせていただいております。
ある監視アイテムの戻り値が文字列で、直近とその前の比較で変更された場合に、トリガーを起動する。
という監視を実現したいと考えております。
例)
時間 アイテム値 期待値
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 - 投稿数: 4769
正常な状態の文字列は固定なのですか?
完全に固定ではなくとも、何らかの規則性は無いのですか?
edoshimafukurou - 投稿数: 10
ご返信ありがとうございます。
正常な状態の文字列は固定との前提でお願いいたします。
TNK - 投稿数: 4769
そうであるならば、その固定の文字列が含まれていなかったら障害
というトリガーを作成されてはいかがでしょうか?
edoshimafukurou - 投稿数: 10
TNKさん
ご返信ありがとうございます。
固定の文字列が、実はとても長い文字列(1万文字程)でして。。
str関数やregexpの引数として指定するのは現実的ではないのです。。。
とても長い文字列とはあるコマンドの出力結果なので、
出力結果を正常としてテキストファイル化、これとあるコマンドの出力結果をdiffで比較して、結果を判定するスクリプトを作成、
これをUserParameterで監視アイテムとして定義、トリガーで判定する方式ですすめようかと考えております。
デフォルトの監視アイテムやトリガーを使って同じようなことを実現する方式をご存知でしたら、お手数ですがご教示願います。
TNK - 投稿数: 4769
全ての文字を正規化する必要はなく、必ず正常な場合と正常ではな
い場合とを判別できる情報が必要です。
diffだけでは、前回との差があったかどうかでしか判別できないの
で、正常かどうかを判断できません。
heya - 投稿数: 319
横から失礼します。
コマンドの正常な出力が完全に固定なのであれば、cron などで定期的にその出力をファイルに出すようにして、Zabbix ではアイテムで vfs.file.md5sum を取得し、トリガーでは前もって調べておいたハッシュ値と比較する、というのはどうでしょうか(vfs.file.cksum でもいいかもしれません)。
edoshimafukurou - 投稿数: 10
TNKさん、heyaさん、
参考になる情報、ありがととうございます。
実機で検証してみます。