【Windowsイベントログ監視】アイテムの最新値をトリガが繰り返し検知し続けるようになってしまいました
※2023/1/24認識誤りの訂正および、追加情報のため修正しました。
・「設定変更により事象発生した」旨を不確かなため訂正削除
・条件式を削って試行した結果を追記
==========
Windowsのイベントログ監視のトリガ設定について解決したい事象があり、
ご存じの方がいらっしゃればお知恵をお貸し頂けないでしょうか。
【環境情報】
■Zabbixサーバ
OS:RHEL8.4
ソフト:Zabbix6.0.7
■監視対象
OS:WindowsServer2019
ソフト:ZabbixAgent2 6.0.7
【事象・相談事項】
以下事象が起きるようになった。
■事象:アイテムの最新データ(の最新の値)がトリガの条件を満たしているとき、
新しい値は収集されていないのに、30秒間隔でトリガが検知され続けてしまう。
例えば、
最新データの最新の値に【ID:100、ソース:ESENT、深刻度:エラー、本文:testmessage】が収集されており、
トリガ条件式が『「ソース:ESENT」かつ「深刻度:エラー」』だったとする。
この時、【】以降に新しい値が吐かれていないのに、このトリガのアラートが30秒おきに何回も上がり続けてしまう。
※トリガ条件を満たさない新しい値が収集された場合、そこで通知は止む。
■期待していた動作(追加の条件式を加えるまで動作していた)
条件式に当てはまるイベントログが収集されたとき、そのイベントログ毎にアラートが1回発報する。
■所感/備考
・最新の値を何度も読み込んでいるような動きに見える。
・「ヒストリ」を見る限り1回しか読み込んでいないため、アイテムは正常に思える。
・アイテムの検知間隔は1分なのにアラートは30秒。
・追加式部分に引っ掛かった時という訳ではなく、トリガ条件式全体で該当しているときに発生。
・現在は、障害一覧の表示を絞り込むことで隠し、無視している。
以下、トリガ内容
【トリガの設定】
==========
■深刻度:情報
■正常イベントの生成:条件式
■障害イベント生成モード:複数
■正常時のイベントクローズ:全ての障害
■手動クローズを許可:有効
■条件式:
logseverity(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip])=4
and
(logsource(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"ESENT")=1
or (logsource(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"Microsoft-Windows-Winlogon")=1
and logeventid(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"4005")=1)
or (logsource(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"Application Hang")=1
and logeventid(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"1002")=1)
or (logsource(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"F3FMpcmiglassfish5")=1
and logeventid(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"1101")=1
and time()<021000
and time()>020000)
or (logsource(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"SendRequestMonitorProccess")=1
and find(/XXXXXXXX Windows by Zabbix agent/eventlog[application,,"Warning|Error|Critical",,,,skip],,"regexp","@exp_SendRequestMonitorProccess")=1))
==========
※参考)グローバル正規表現の設定
名前:exp_SendRequestMonitorProccess
形式:いずれかの文字列が含まれる
区切り文字:/
条件式:処理できない送信要求ファイルを削除しました/バッチがタイムアウトしました/ログ転送バッチが異常終了しました/ファイルコピーに失敗しました
大小区別:しない
※参考)このトリガは別トリガの「依存関係」に設定
【追記情報】
2023/1/24追記
下記条件式を削ると、事象が止みました。仕組みは不明です。
=====
and time()<021000
and time()>020000
=====
以上、宜しくお願い致します。
ikbt - 投稿数: 4
自己解決しましたので追記します。
下記参考しました。
https://minory.org/zabbix-time.html#index_id7
トリガーでtime関数を使うと30秒ごとに再評価されるとのこと。
トリガーでtime関数使うなら、障害イベント生成モードを「単一」にする
障害イベント生成モード「複数」のままにしたいならば、time関数を使わない、が回避方法なのですね。