スケールイン・スケールアウトに対応したzabbix監視自動on/offについて

いつも参考にさせていただいております。

【環境】
監視サーバ:
 Ubuntu 14.04.2 LTS
 zabbix 2.2

監視対象:
 windows 2008 R2 ×8台

【背景の説明】
windowsサーバのスケールイン・スケールアウトを自動で行う環境を構築しており、
スケールイン・アウト時に、対象サーバのzabbix監視(ホストの設定)を自動で無効化する用に、
zabbix APIを投げるプログラムを作成しました。

スケールイン手順概要
 1) Windowsサーバのサービス切り離し
 2) Windowsサーバのホストのステータスを'有効'→'無効'に変更(zabbix API)
 3) Tomcat7サービスの停止および、停止確認
 4) Windowsサーバの停止
 ※スケールアウトは上記逆順。

上記を動かしたところ、2)zabbixのホスト設定無効化し、
zabbixサーバ上でもホスト監視無効化しているにも関わらず、
3) Tomcat7サービスの停止をした際に、tomcat7の死活監視が検知しました。

<通知サンプル>
NOTE: Escalation cancelled: host 'Windows_test01' disabled.
Trigger: Apache Tomcat (Tomcat7) Windowsサービスが停止しています。
Trigger status: PROBLEM

・『NOTE: Escalation cancelled:』のメッセージが出ている為、ホスト無効の後のタイミングで、
 windowsサーバのzabbix-agentがtomcat7停止を検知し、zabbix-serverに送信したものと推測しています。
 zabbix-serverではホスト無効となっている為、メッセージ付きで通知が出たと考えております。
https://www.zabbix.com/documentation/2.2/jp/manual/web_interface/fronten...

【質問内容】
・スケールイン・スケールアウトを実装する際に、zabbixのホスト監視on/offに関するベストプラクティスが有れば、
 教えていただきたいです。
  ⇒上記の事象だけで捉えると、ホストの無効処理の前に、agent側のサービス停止も必要のように思えます。
   他社事例などの知見がお聞きしたいです。
・『NOTE: Escalation cancelled:』のメッセージが付いたメール送信を行わない設定は出来ますでしょうか?
  ⇒マニュアルやフォーラムを見たところ、上記を止めるにはDBにてstatus変更が必要とのことでした。
   UI上から設定変更はできませんでしょうか?
   (現在は、通知受け取り側で除外設定を行っています)

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

【質問内容】
・スケールイン・スケールアウトを実装する際に、zabbixのホスト監視on/offに関するベストプラクティスが有れば、
 教えていただきたいです。
  ⇒上記の事象だけで捉えると、ホストの無効処理の前に、agent側のサービス停止も必要のように思えます。
   他社事例などの知見がお聞きしたいです。

恐らく、APIを利用してデータベース上はホストが無効になってい
て、zabbix_server上のキャッシュが更新される前にzabbix_server
がアイテムの値を取得して障害であるか判断し、実際にアクション
の処理を行おうとしたときに、ホストが無効であるので処理がキャ
ンセルされたのだと思われます。

つまり、データベース上の値の更新とデーモンプロセスのキャッシ
ュの更新のタイミングの問題です。

現時点の仕様では、APIでの処理と各種デーモンのキャッシュの同
期と連動させる仕組みはないので、タイミングによっては発生して
しまうのではないでしょうか。

また、エージェントを先に止めてしまうと、別の監視アイテムで取
得不可とかagent.pingの応答なしとかで障害を検知してしまう可能
性があります。
こちらは、障害として記録されてしまうので、あまり良い解決方法
だとは思いません。

私が以前関わったシステムでは、APIでホストを無効にしてしばら
く経ってから削除するホスト上のサービス停止とホストの削除を行
うようにしていました。

・『NOTE: Escalation cancelled:』のメッセージが付いたメール送信を行わない設定は出来ますでしょうか?
  ⇒マニュアルやフォーラムを見たところ、上記を止めるにはDBにてstatus変更が必要とのことでした。
   UI上から設定変更はできませんでしょうか?
   (現在は、通知受け取り側で除外設定を行っています)

ソースを少し見てみましたが、障害のイベント情報から実際のアク
ションを実行させるエスカレーションと呼ばれる前処理の部分で、
元の障害通知のメッセージをこのメッセージで上書きするような処
理の流れになっているようです。

Webインターフェース上の設定だけでは回避できなさそうです。

ユーザー hatakeyama-takeshi の写真

TNKさん

お返事が遅くなってしまって、申し訳ありません。
ご回答いただいた内容で理解・納得できました。
ありがとうございました。