依存関係を使用し、依存関係先のトリガーが「障害」ステータスの時でも依存関係先のトリガーに一致しない場合は常に判定したい
お世話になっております。
トリガーの依存関係について質問させてください。
現在、トリガーAの依存関係先にトリガーBを設定してログ監視を行っています。
トリガーBが「障害中」の時にトリガーAにのみ一致し、トリガーBに一致しないログを障害検知したいのですが、
トリガーBが障害中の場合、トリガーAの判定は常に行われないため、期待する動作を実現できません。
具体的には以下のような挙動を実現したいのですが、どのようにすればZabbixで実現できるでしょうか。
【トリガー設定】
トリガーA
監視対象ログ:AAA.txt
検知条件:Error *
トリガーB
監視対象ログ:AAA.txt
検知条件:Error Kensyo *
【やりたい事】
①AAA.txtに「 Error Kensyo」を出力
②トリガーBが「障害中」ステータスに遷移
③AAA.txtに「 Error Honban」を出力
④トリガーAが「障害中」ステータスに遷移
トリガーAの依存関係先をトリガーBにしていると上記の④が「障害中」となりません。
Zabbixのバージョンは4.0を使用しています。
よろしくお願いします。
TNK - 投稿数: 4769
依存関係を設定されている理由が理解できません。
それぞれの条件に合致する条件式を設定したトリガーを作成すれば
よいのではないでしょうか?
mat - 投稿数: 2
コメントありがとうございます。
背景を説明できておらず申し訳ありません。
おっしゃる通り、本来であればそれぞれの条件に合致する条件式を設定したトリガーを作成すれば良いのですが、
実際には例であげている「Kensyo」に該当するパターンが数百パターンあります。
また、運用としてはその数百のパターンのうち、1つのパターンのみメンテナンスとしアクションを実行したくない
というような要件があります。
数百パターンを全部個別のトリガーとすれば問題ないのですが、登録数を減らすために、
検知条件としては「Error*」とメンテナンス期間のみアクションを実行しない「Error Kensyo *」の2パターンのみ作成し、
依存関係を使ってうまくコントロールできないかを考えておりました。
実際には依存関係を設定してしまうとメンテナンス期間であってもトリガーとしては「障害中」になってしまうため、
依存関係元のトリガーAについては判定が行われなくなってしまうため、やりたい事が実現できていない状況です。
TNK - 投稿数: 4769
Zabbix上でのメンテナンス期間ではなく、独自のシステムで、検証
時には検証用のログであることを示す「Kensyo」という文字列が付
加されたログが出力され、それはアクションで通知しなくてよいと
いうことであれば、以下のような設定で実現できると思います。
正規表現を作成して関数regexp()を使用して判定するようにします。
アイテム:
log[/tmp/AAA.txt]
正規表現「Error Log Check」:
文字列が含まれる Error
文字列が含まれない Kensyo
トリガー:
条件式
{ホスト名:log[/tmp/AAA.txt].regexp(@Error Log Check)}=1
ログファイルのパスは例です。
実際に監視したいログファイルのパスに変更してください。
テンプレートに設定する場合は、ホスト名の部分をテンプレートの
名前に変更してください。
あくまでも最低限の設定ですので、より厳密に正規表現を設定すれ
ば、より細かな条件設定を行うことが可能です。