project-hatohol / hatohol

A unified manager of monitoring software
http://www.hatohol.org/
Other
89 stars 29 forks source link

not Passiveモードの際,hap2_starterが強制終了することを想定できていない #2298

Open masa0612 opened 8 years ago

masa0612 commented 8 years ago

何かしらの理由でHatoholサーバーが起動したhap2_starterが死んだ時, hap2_starterを再起動する手段がない。 (厳密には監視サーバーダイアログを「編集」で開いて,変更せず保存すると再度starterが動く。 しかし,この方法を取ると以下のようなログが出て再度接続することができなくなる。)

May 13 15:11:26 localhost hatohol[2694]: [INFO] <HatoholArmPluginGateHAPI2.cc:354> HAP Process connecting done. Connected HAP process name: "Hap2ZabbixAPIMain"
May 13 15:11:26 localhost journal: standardhap.py:206 hatohol.standardhap:hap2_zabbix_api.py:MainProcess: [6522]: [INFO] exchanged profile.
May 13 15:11:26 localhost hatohol[2694]: [WARN] <HatoholArmPluginInterfaceHAPI2.cc:503> Received a method while exchangeProfile isn't completed yet! 
May 13 15:11:26 localhost journal: haplib.py:614 hatohol.haplib:hap2_zabbix_api.py:MainProcess: [6522]: [ERROR] Got 'FAILURE' repsponse. req: 272418045
May 13 15:11:26 localhost journal: hap.py:96 hatohol.hap:hap2_zabbix_api.py:MainProcess: [6522]: [ERROR] Unexpected error: <type 'exceptions.Exception'>, Got 'FAILURE' repsponse. req: 272418045#012Traceback (most recent call last):#012  File "/lib/python2.7/site-packages/hatohol/standardhap.py", line 136, in __call__#012    self.__run(args)#012  File "/lib/python2.7/site-packages/hatohol/standardhap.py", line 208, in __run#012    ms_info = self.__main_plugin.get_monitoring_server_info()#012  File "/lib/python2.7/site-packages/hatohol/haplib.py", line 425, in get_monitoring_server_info#012    return MonitoringServerInfo(self.__wait_response(request_id))#012  File "/lib/python2.7/site-packages/hatohol/haplib.py", line 615, in __wait_response#012    raise Exception(msg)#012Exception: Got 'FAILURE' repsponse. req: 272418045
May 13 15:11:26 localhost journal: standardhap.py:165 hatohol.standardhap:hap2_zabbix_api.py:Dispatcher: [6527]: [WARNING] Got SIGTERM
May 13 15:11:26 localhost journal: standardhap.py:165 hatohol.standardhap:hap2_zabbix_api.py:Receiver: [6528]: [WARNING] Got SIGTERM
May 13 15:11:31 localhost hatohol[2694]: [INFO] <HatoholArmPluginGateHAPI2.cc:1121> Succeeded to stop: /usr/libexec/hatohol/hap2/start-stop-hap2-zabbix-api.sh

再起動のさせ方もいいものとは言えないし,完全に再起動出来ないのも問題。 「プラグインを再起動する」みたいなボタンが欲しい。

masa0612 commented 8 years ago

exchangeProfileが完了しているのに,getMonitoringServerInfoのレスポンスがFAILUREになって返ってきているのは, メーリングリストに投げられていた

16.04 Beta 2 において、
hatohol server が、
hap2 からの exchangeProfile リクエストに応答した後も、
ステートが進まず、
hap2 からの後続リクエストに対して、
Received a method while exchangeProfile isn't completed yet!
になります。

1) hatohol server で監視サーバ(Zabbix HAP2)を登録する
2) 少しゆっくりする
3) Zabbix Server で hap2-zabbix-api を起動する
4) hap2-zabbix-api が exchangeProfile リクエストを発行する
5) hatohol server が exchangeProfile レスポンスを発行する
6) hap2-zabbix-api が getMonitoringServerInfo リクエストを発行する
7) hatohol server が Received a method while exchangeProfile isn't
completed yet! として処理する

なお、
exchangeProfile の完了は、
ステート表現ではなくフラグ表現になっている可能性があります。

というのも、
いちど正常に通信が開始されると、
(active exchangeProfile が成功したケースと想像)
以後 hap2 を再起動しても本現象が発生しないからです。

#と言っても、hap2 の不活性化を検出するロジックは HAPI 2.0 には定義されていませんが

と同じ原因な気がする。