Zabbix Proxyを経由して監視しているサーバへのリモートコマンド実行
Zabbix Proxyを経由して監視しているZabbix Agentに対してリモートコマンドを
実行させたいのですが、出来ません。
Zabbix Server, Zabbix Agentのログには何も出力されておらず、
GUI 画面上はリモートコマンドを送信した旨記載が出ている状態です。
下記のページも参照し、Server=にProxy, Serverを指定しているのですが、実行出来ずです。。
参考:http://www.zabbix.jp/node/593
- 環境
- OS : CentOS 5.7
- Zabbix Server : Zabbix Server v1.8.10 (revision 24303)
- Zabbix Agent : Zabbix Agent (daemon) v1.8.10 (revision 24303)
- 設定
- zabbix_agentd.conf
- アクション設定(リモートコマンド)
- Server="Zabbix Proxyサーバ名","Zabbix Serverサーバ名"
- EnableRemoteCommands=1
- LogRemoteCommands=1
"Zabbix Agentサーバ名":/bin/echo "`date` test" >> /var/tmp/test.log
設定のおかしいところや、他に確認すべきようなところがありましたら、
お教えいただきたく、お願いいたします。
kodai - 投稿数: 1341
ZabbixサーバからZabbixエージェントへは通信できる環境なのでしょうか?
Zabbixサーバ上で以下のコマンドを実行してみると、エージェントと通信できていて、リモートコマンド関係の設定ができていれば結果が帰ってくるはずです。
$ zabbix_get -s -k system.run["ls /tmp"]
K.T.NA - 投稿数: 5
ご確認ありがとうございます。
お伝えしていた情報が不足しており申し訳ありませんが、
Zabbix ServerとZabbix Agentは同じサーバ上におり、Zabbix Proxyは別サーバにいます。
Aサーバ上 : Zabbix Server, Zabbix Agent
Bサーバ上 : Zabbix Proxy, Zabbix Agent
# Aサーバ、BサーバはVMware上の仮想OSとして動いています。
# 各Zabbix Agent は Proxy 経由で監視をしています。
頂いたコマンドについて、以下のパターンを確認してみました。
■ Zabbix Server から Aサーバ上のAgentに対して、zabbix_get コマンドを実行
(1) $ zabbix_get -s 127.0.0.1 -k system.run["ls /tmp"]
⇒ 正常応答
(2) $ zabbix_get -s "Aサーバ:eth0のIPアドレス" -k system.run["ls /tmp"]
⇒ 空行が返る。
■ Zabbix Server から Bサーバ上のAgentに対してコマンド実行
(3) $ zabbix_get -s "Bサーバ:eth0のIPアドレス" -k system.run["ls /tmp"]
⇒ 正常応答
■ Bサーバ上の Zabbix Proxyのいるサーバから Bサーバ上のAgentに対してコマンド実行
(4) $ zabbix_get -s 127.0.0.1 -k system.run["ls /tmp"]
⇒ 正常応答
(5) $ zabbix_get -s "Bサーバ:eth0のIPアドレス" -k system.run["ls /tmp"]
⇒ 空行が返る。
■ Bサーバ上の Zabbix Proxyのいるサーバから Aサーバ上のAgentに対してコマンド実行
(6) $ zabbix_get -s "Aサーバ:eth0のIPアドレス" -k system.run["ls /tmp"]
⇒ 正常応答
# zabbix_agentd.conf の「ListenIP=0.0.0.0」のデフォルト値としており、特に制限もかけておりません。
# ネットワーク的にも ping も通り、iptablesの制限もありません。
上記の結果から見ると、ローカルの Agent に対しては正常応答が得られないように思われます。
リモートコマンドについては、127.0.0.1 で確認してみようと思います。
kodai - 投稿数: 1341
Aサーバ上のzabbix_agentd.confのServerの設定はどうなっているのでしょう?
zabbix_getでeth0のIPを指定された場合、Zabbixサーバが通信する際のソースIPも127.0.0.1にはならないので、実IPの方も指定しておかないと通信ができないと思います。
K.T.NA - 投稿数: 5
kodaiさん>
ありがとうございます。
コメント頂いたとおり、zabbix_agentd.confの設定を変更したところ、
空行応答だったものが、正常応答を得られるようになりました。
(tcpdump で見たところやはりServerのソースIPも実IPになっていました。)
■ 設定変更
(前)Server="Zabbix Proxy","Zabbix Server"
(後)Server="Zabbix Proxy","Zabbix Server","eth0のIPアドレス"
ありがとうございます。
大変助かりました。