トリガーを無効化しても該当トリガーのアラートが検知されてしまう。
いつもお世話になっております。
表題の件について、ご教授頂けますと幸いです。
当方では、監視対象サーバのメンテナンスに合わせて、zabbixで該当の時間アラートを検知させないようにzabbixAPIを使って一時的にトリガーの有効/無効を設定しております。
毎日1:00にトリガーの無効化、1:30に有効化のスクリプトをcronで設定しております。
しばらく運用していたところ、トリガー無効化直後に発生したアラートが、トリガー無効化中にも関わらずアラートを検知してしまいました。
zabbixの監査ログを確認しましたが、アラート検知前に該当トリガーが無効化されていることを確認しております。
トリガー無効化の設定が反映されるまでに、実際にはタイムラグなどがあるということでしょうか。
・時系列
01:00:00 トリガーの無効化スクリプト実行
01:00:01 トリガーの無効化(zabbix監査ログで確認)
01:00:23 対象プロセスのダウン。zabbixでアラート検知(zabbixイベントで確認)
01:00:29 アラートアクションの実行(zabbixイベントで確認)
■環境
OS:RHEL6.5(SElinux、firewalld無効済み)
Zabbix:2.4.5
監視対象:Windows
■監視アイテム(Windowsプロセス)
proc.num[xxxx.exe]
■監視トリガー(Windowsプロセスが起動していない場合通知)
proc.num[xxxx.exe].last()=0
■アクション
トリガー検知時にメール送信
■使用しているAPI
[trigger.update]を使用して該当のトリガーステータスを変更しています。
以上、よろしくお願いいたします。
heya - 投稿数: 319
念のための確認です。
実行されたアクションは、本当に無効化したトリガー検知によるものですか?
他のトリガーによるものではなく?(例えば xxx.exe が落ちたら反応する何か別のトリガーも存在していて、そっちが障害になったとか)
イベント画面で、どのトリガーが反応したか表示されると思いますが、それは確かに無効にしたトリガーですか?
もう一つ。
無効化直後でなく、無効化してしばらく経ってからだと、ちゃんと無反応になってくれますか?
JENO - 投稿数: 5
ご返信頂きありがとうございます。
>実行されたアクションは、本当に無効化したトリガー検知によるものですか?
>他のトリガーによるものではなく?(例えば xxx.exe が落ちたら反応する何か別のトリガーも存在していて、そっちが障害になったとか)
>イベント画面で、どのトリガーが反応したか表示されると思いますが、それは確かに無効にしたトリガーですか?
無効化したトリガーからのアクションです。トリガーIDで指定して無効化しており、監査ログ・アラート内容ともに同一のトリガーIDであることを確認しております。
>無効化直後でなく、無効化してしばらく経ってからだと、ちゃんと無反応になってくれますか?
はい。別時間にも同様の無効化を実施しておりますが、その際4分後に発生したアラートは無反応になっています。
TNK - 投稿数: 4769
タイムラグは発生します。
WebインターフェースやAPIで変更した情報は、すぐにデータベース
に反映されます。
しかし、Zabbixサーバープロセスは、データベースへのアクセスの
負荷を抑えるため、データベースの設定情報をキャッシュしていて、
定期的にデータベースの最新情報をキャッシュに反映するようにな
っています。
つまり、そのキャッシュが古い状態のままであった時に、障害とな
るような条件の値が取得されてしまったのだと思われます。
設定を変更して、Zabbixサーバープロセスに情報が反映されるまで
数分の余裕を考慮した方がよいと思います。
特定の時刻にメンテナンスを開始するのであれば、無効にするタイ
ミングをもう少し早めにするようにしてみてください。
JENO - 投稿数: 5
>TNK様
ご返信頂きありがとうございます。
>設定を変更して、Zabbixサーバープロセスに情報が反映されるまで
>数分の余裕を考慮した方がよいと思います。
>特定の時刻にメンテナンスを開始するのであれば、無効にするタイ
>ミングをもう少し早めにするようにしてみてください。
やはりタイムラグがあったんですね。
ご教授頂いた通り反映されるまでの時間を考慮した設定にしたいと思います。
数分の余裕がどのくらい必要なのかもう少し突き詰めたいので、実際に検証して計ってみます。