私はZabbixを使用してアプリケーションを監視しており、文字列値を返すカスタム項目を定義しています。アイテムの値は実際にはチェックサムなので、文字は[0-9a-f]
のみです。私のアプリケーションの2つのミラーコピーは、冗長性のために2つのサーバー上で実行されています。私は両方のマシンからアイテムの値を取るトリガーを作成したいと思うし、それらが同じでない場合は起動します。Zabbixトリガで2つの文字列型項目の値が等しいかどうかを確認します。
値が変更された瞬間を忘れてしまいましょう(原子操作ではないため、システムが矛盾した状態になることがありますが、実際のエラーではありません)。以前のいくつかの値を見て
要点:2つのアイテム(実際には2つのミラーホスト上の同じアイテム)の文字列の値が等しいかどうかを比較できるZabbixトリガ式を書き込む方法は?
両方the fine manualによると、私が実践で確認したように、標準の演算子=
と#
は数値だけでは動作し、私はちょうど自然{host1:myitem[param].last(0)} # {host2:myitem[param].last(0)}
を書き込むことはできません。 change()
やdiff()
などの関数は、異なる時点で同じアイテムの値のみを比較できます。 regexp()
のような関数は、アイテムの値を定数文字列/正規表現と比較するだけで、他のアイテムの値と比較することはできません。これは非常に限定的です。
私のカスタムアイテムが実行するスクリプトに比較ロジックを移動することはできましたが、ちょっと面倒でエレガントではありません。もし可能であれば、私のZabbixトリガー内にこのロジックを置くことをお勧めします。
おそらく上記の制限にもかかわらず、誰かが回避策を考え出すことができますか?
ありがとうございます、これは正しい方向へのステップのようですが、値の監視が開始された時点で値が既に異なる場合は、これがトリガーされません。より小さい欠点は、値が変更された瞬間にイベントがトリガされますが、その後にトリガはOKに戻ります(値は異なりますが、変更されていない)。 –