ログ監視の監視周期内に障害と復旧のログが出力される場合の監視設定について
CentOS 7 x86_64
Zabbix 4.0.24
MariaDB 5.5.60
/var/log/messagesに"test: Status is"を含むログに"offline"が含まれていたら障害、"online"が含まれていたら復旧とする監視を行いたいと思っています。
test: Status is offline ← 障害
test: Status is online ← 復旧
以下のような監視設定(アイテムの監視周期が30秒)だった場合、"offline"と"online"のログが30秒以内に出力されると
"offline"と"online"のトリガーがどちらも復旧で通知されてしまいます。
■アイテム
タイプ Zabbixエージェント(アクティブ)
キー logrt[/var/log/messages,"test: Status is",,,skip]
監視周期 30秒
■トリガー
障害条件式 アイテム:logrt[/var/log/messages,"test: Status is",,,skip].regexp("offline")}=1
復旧条件式 アイテム:logrt[/var/log/messages,"test: Status is",,,skip].regexp("online")}=1
監視周期を短くする以外に監視設定方法の案はございますでしょうか。
ama - 投稿数: 76
以下一文が良くわかりません。
> "offline"と"online"のトリガーがどちらも復旧で通知されてしまいます。
一つのトリガーから2つの復旧メッセージが出力されているということでしょうか?
検証環境にて問題のトリガーを検証いたしましたが、
結果として、監視間隔以内でoffline,onlineのログが出力されると、
障害と同時に復旧条件が走るので、すぐにステータスが復旧してメッセージがクローズされました。
メッセージは一つだけです。検証環境はRHEL7、Zabbix4.4です。
また、提示されたトリガーで何が問題かがわかりません。
・障害が表示される前にクローズされてしまうこと?
・一瞬でもいいから障害メッセージが表示されて欲しい? ・・・等
「30秒以内~」につきましては、どれだけ監視間隔を短くしても
監視間隔以内にログにoflline,onlineが書き込まれてしまったら意味がないように思います。
どのような監視運用をするか、しているかによって解決策が異なるように思います。
まずは実現したいことが何かを整理してみてはいかがでしょうか?
trinet - 投稿数: 35
言葉足らずで申し訳ございません
> 一つのトリガーから2つの復旧メッセージが出力されているということでしょうか?
はい、一つのトリガーから2つの復旧メッセージが出力されております。
通知というのはトリガーアクションのリモートコマンドへ復旧が2回通知されております。
■/var/log/messages
Apr 5 18:50:52 testserver test: Status is offline
Apr 5 18:50:53 testserver test: Status is online
■トリガーアクションのリモートコマンドに渡される情報
event_id : 90427535
event_date : 2024.04.05
event_time : 18:51:03
host_host : Zabbix server
trigger_id : 25525
trigger_nseverity : 2
trigger_status : OK ←復旧★
host_group : Linux servers
trigger_name : Apr 5 18:50:52 tninframon1 nakamura: test: Status is offline ←障害メッセージ
event_id : 90427535
event_date : 2024.04.05
event_time : 18:51:03
host_host : Zabbix server
trigger_id : 25525
trigger_nseverity : 2
trigger_status : OK ←復旧
host_group : Linux servers
trigger_name : Apr 5 18:50:53 tninframon1 nakamura: test: Status is online ←復旧メッセージ
行いたい監視としましてはZabbixエージェントでの数値監視のように最新値のみ"offline"だった場合にトリガーを発報したいと考えております
Template_test:status.last()="offline" ←このようなイメージです。
ama - 投稿数: 76
私の検証環境では、下記トリガー条件ではofflineのメッセージしか障害検知しません。
なので、offlineのみトリガーを発報したいということへのアドバイスはできません。
> ■トリガー
> 障害条件式 アイテム:logrt[/var/log/messages,"test: Status is",,,skip].regexp("offline")}=1
> 復旧条件式 アイテム:logrt[/var/log/messages,"test: Status is",,,skip].regexp("online")}=1
しかし、onlineをトリガーアクションで通知しないということであれば、実行条件を下記のようにしてみればいかがでしょうか?
◆実行条件
・トリガー名
・含まない
・online
Zabbix画面での障害メッセージは出力されるでしょうが、onlineのメッセージはアクションが実行されないかと思います。
trinet - 投稿数: 35
ご提案ありがとうございます。
この手法で監視要件を満たせるか確認させていただきます。