質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Zabbix

モニタリングツール

Q&A

解決済

1回答

4490閲覧

Zabbixトリガーのcount関数について

Ziruco

総合スコア1

Zabbix

モニタリングツール

0グッド

0クリップ

投稿2023/01/12 09:11

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』を削除し、
【正常イベントの生成】を『復旧条件式』に変更し、条件式と同じ物を設定するもうまく行かず。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

novelistory

2023/01/13 00:51

>A {サーバー:log[/var/log/bat/log].count(180m,文言)}>2 同じ条件が3行書かれておりますが、「文言」は全て異なるものでお間違いないでしょうか? また、文言①、文言②、文言③をそれぞれ含むログをそれぞれ3つ以上受信したときに検知でお間違いないでしょうか? 例)180分以内に各文言を含むログが、文言①が3つ、文言②が3つ、文言③が1つのときはアラート検知しない。 > 【正常イベントの生成】を『復旧条件式』に変更し、条件式と同じ物を設定するもうまく行かず。 こちらはどういった意図で記載されたものでしょうか? > 特定の文字列を含むメッセージを3時間以内に3件検知した場合にアクションにてメール発報後、 再度トリガー検知条件に引っかかっても検知されず。 具体的にどのようなログが出力され、検知しなかったのでしょうか? 検知したログ/障害復旧したタイミング/再度検知するはずだったのにしなかったログ、等を記載いただくと回答を得られやすいかもしれません。
Ziruco

2023/01/14 14:20

ご質問ありがとうございます。 下記にご質問の回答を記載致します。 > 同じ条件が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 以上、宜しくお願い致します。
guest

回答1

0

ベストアンサー

Zabbix ではステータスが「正常」から「障害」に変わったときにアクションが実行されます。
「正常」に戻らなければトリガーの条件に合致してもアクションは実行されません。

「障害イベント生成モード」を「複数」に設定すれば、「障害」のままでもアクションを実行することができますが、それだとアラートが多すぎるので、「2時間に1件」にしたいということなのでしょうか?

上記検知後、カウントをゼロにし再度3時間以内に3件検知した場合にメール発報させる。

この条件だと、「3時間に1件」なのでしょうか?
もし、そうだとすると、「正常→障害になってから 3時間後に正常に戻す」ことが必要になります。

現状の設定 : nodata(180m) では、(アイテムの条件に合った)ログが 3時間以上出力されない場合に「正常」になるのですが、3時間以内にログが出力されていると永遠に「正常」になりません。
なので、監視対象ファイル(/var/log/bat/log)に対する nodata() ではなく、別の仕組みが必要になります。
例えば、正常→障害の際、既存のアラートに加えて、Zabbixサーバー側にログを出力するようなアクションを実行し、トリガーの条件で、この Zabbixサーバー側のログを監視するアイテムに nodata() を設定するといいのではないでしょうか。

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 {Zabbix server:log[/var/log/zabbix/foo_action.log].nodata(180m)}=0

(2023/01/16 13:00) 訂正

すみません、前回回答した設定ではダメでした。
一度 nodata() で「正常」に戻ると、このファイルは更新されないので常に nodata()=1 となり、トリガーが発火しません。

「障害」は継続したまま、アクション側で 3時間ごとにエスカレーションするといいと思います。

(トリガー : 障害の条件式)

And A {サーバー:log[/var/log/bat/log].count(180m,文言1)}>2 B {サーバー:log[/var/log/bat/log].count(180m,文言2)}>2 C {サーバー:log[/var/log/bat/log].count(180m,文言3)}>2

(トリガー : 復旧条件式)

Or A {サーバー:log[/var/log/bat/log].count(180m,文言1)}<=2 B {サーバー:log[/var/log/bat/log].count(180m,文言2)}<=2 C {サーバー:log[/var/log/bat/log].count(180m,文言3)}<=2 D {サーバー:log[/var/log/bat/log].nodata(177m)=1 ※nodata() のチェックのタイミングにずれがあるので、2-3分短くしている。

(このトリガー専用のアクションを作成)

デフォルトのアクション実行ステップの間隔 : 180m 実行内容 : ステップ : 1-0 ステップの間隔 : 0

投稿2023/01/15 08:54

編集2023/01/16 04:00
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ziruco

2023/01/15 19:48

ご回答ありがとうございます。 条件Dを設定し様子見ようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問