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 の写真

ZabbixサーバからZabbixエージェントへは通信できる環境なのでしょうか?

Zabbixサーバ上で以下のコマンドを実行してみると、エージェントと通信できていて、リモートコマンド関係の設定ができていれば結果が帰ってくるはずです。

$ zabbix_get -s -k system.run["ls /tmp"]

ユーザー K.T.NA の写真

ご確認ありがとうございます。

お伝えしていた情報が不足しており申し訳ありませんが、
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 の写真

Aサーバ上のzabbix_agentd.confのServerの設定はどうなっているのでしょう?
zabbix_getでeth0のIPを指定された場合、Zabbixサーバが通信する際のソースIPも127.0.0.1にはならないので、実IPの方も指定しておかないと通信ができないと思います。

ユーザー K.T.NA の写真

kodaiさん>

ありがとうございます。
コメント頂いたとおり、zabbix_agentd.confの設定を変更したところ、
空行応答だったものが、正常応答を得られるようになりました。
(tcpdump で見たところやはりServerのソースIPも実IPになっていました。)

■ 設定変更

 (前)Server="Zabbix Proxy","Zabbix Server"
 (後)Server="Zabbix Proxy","Zabbix Server","eth0のIPアドレス"

ありがとうございます。
大変助かりました。