スケールイン・スケールアウトに対応した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 - 投稿数: 4769
恐らく、APIを利用してデータベース上はホストが無効になってい
て、zabbix_server上のキャッシュが更新される前にzabbix_server
がアイテムの値を取得して障害であるか判断し、実際にアクション
の処理を行おうとしたときに、ホストが無効であるので処理がキャ
ンセルされたのだと思われます。
つまり、データベース上の値の更新とデーモンプロセスのキャッシ
ュの更新のタイミングの問題です。
現時点の仕様では、APIでの処理と各種デーモンのキャッシュの同
期と連動させる仕組みはないので、タイミングによっては発生して
しまうのではないでしょうか。
また、エージェントを先に止めてしまうと、別の監視アイテムで取
得不可とかagent.pingの応答なしとかで障害を検知してしまう可能
性があります。
こちらは、障害として記録されてしまうので、あまり良い解決方法
だとは思いません。
私が以前関わったシステムでは、APIでホストを無効にしてしばら
く経ってから削除するホスト上のサービス停止とホストの削除を行
うようにしていました。
ソースを少し見てみましたが、障害のイベント情報から実際のアク
ションを実行させるエスカレーションと呼ばれる前処理の部分で、
元の障害通知のメッセージをこのメッセージで上書きするような処
理の流れになっているようです。
Webインターフェース上の設定だけでは回避できなさそうです。
hatakeyama-takeshi - 投稿数: 5
TNKさん
お返事が遅くなってしまって、申し訳ありません。
ご回答いただいた内容で理解・納得できました。
ありがとうございました。