Zabbixのcount関数を用いたトリガーについて質問です。
色々試しましたがうまく行かないため、お力を貸して頂きたいです。
前提
【バージョン】
Zabbix5.0
【対象サーバOS】
Linux
【アラート発報間隔】
特定の文字列を含むアラートは2時間に1件受信する。
【特定文字列数】
3つ
実現したいこと
特定の文字列を含むメッセージを3時間以内に3件検知した場合にアクションにてメール発報する。
上記検知後、カウントをゼロにし再度3時間以内に3件検知した場合にメール発報させる。
発生している問題
特定の文字列を含むメッセージを3時間以内に3件検知した場合にアクションにてメール発報後、
再度トリガー検知条件に引っかかっても検知されず。
該当のソースコード
【条件式】
And
A {サーバー:log[/var/log/bat/log].count(180m,文言)}>2
B {サーバー:log[/var/log/bat/log].count(180m,文言)}>2
C {サーバー:log[/var/log/bat/log].count(180m,文言)}>2
D {サーバー:log[/var/log/bat/log].nodata(180m)}=0
【正常イベントの生成】
条件式
【障害イベント生成モード】
単一
【正常時のイベントクローズ】
すべての障害
【手動クローズを許可】
チェック無し
試したこと
【条件式】の『 {サーバー:log[/var/log/bat/log].nodata(180m)}=0』を削除し、
【正常イベントの生成】を『復旧条件式』に変更し、条件式と同じ物を設定するもうまく行かず。
>A {サーバー:log[/var/log/bat/log].count(180m,文言)}>2
同じ条件が3行書かれておりますが、「文言」は全て異なるものでお間違いないでしょうか?
また、文言①、文言②、文言③をそれぞれ含むログをそれぞれ3つ以上受信したときに検知でお間違いないでしょうか?
例)180分以内に各文言を含むログが、文言①が3つ、文言②が3つ、文言③が1つのときはアラート検知しない。
> 【正常イベントの生成】を『復旧条件式』に変更し、条件式と同じ物を設定するもうまく行かず。
こちらはどういった意図で記載されたものでしょうか?
> 特定の文字列を含むメッセージを3時間以内に3件検知した場合にアクションにてメール発報後、
再度トリガー検知条件に引っかかっても検知されず。
具体的にどのようなログが出力され、検知しなかったのでしょうか?
検知したログ/障害復旧したタイミング/再度検知するはずだったのにしなかったログ、等を記載いただくと回答を得られやすいかもしれません。
ご質問ありがとうございます。
下記にご質問の回答を記載致します。
> 同じ条件が3行書かれておりますが、「文言」は全て異なるものでお間違いないでしょうか?
A.おっしゃる通り全て違う文言を設定ている合っております。
>また、文言①、文言②、文言③をそれぞれ含むログをそれぞれ3つ以上受信したときに検知でお間違いないでしょうか?
>例)180分以内に各文言を含むログが、文言①が3つ、文言②が3つ、文言③が1つのときはアラート検知しない。
A.その認識で問題ございません。
>> 【正常イベントの生成】を『復旧条件式』に変更し、条件式と同じ物を設定するもうまく行かず。
>こちらはどういった意図で記載されたものでしょうか?
A.該当のソースコードではアラート間隔が短いため一度アラート発報するとイベントが障害のまま、正常に戻りません。
なので以降、発報対象の3時間に3回以上を検知してもアラートが発報されないのでイベントが障害になった瞬間に条件式と同じ条件を復旧条件式に設定すれば正常に戻り再度アラートを検知するかなと考えたためです。
>>特定の文字列を含むメッセージを3時間以内に3件検知した場合にアクションにてメール発報後、再度トリガー検知条件に引っかかっても検知されず。
>具体的にどのようなログが出力され、検知しなかったのでしょうか?
A.すいません。書き方が変でした。
ログにはアラート検知後も対象の文言を全て含んだログが記載されており、
別トリガーにて本アラートの単発報を抑止するトリガーを設定しいるので、検知自体は問題有りません。
下記に単発報を抑止するトリガーの条件式を記載致します。
【条件式】
And
A {サーバー:log[/var/log/bat/log].regexp(文言①)}=1
B {サーバー:log[/var/log/bat/log].regexp(文言②)}=1
C {サーバー:log[/var/log/bat/log].regexp(文言③)}=1
以上、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー