【Zabbix 7.0】Docker環境で「Connection refused」が出てwebUIの監視ができない時の解決策
みなさんこんにちわ。
ペスケです。
Zabbix 7.0 を Docker Compose で構築したあと、WebUI からホストの監視をしようとしたら次のようなエラーが出て困っていませんか?
Get value from agent failed: Cannot establish TCP connection to [127.0.0.1]:10050: [111] Connection refusedCode language: CSS (css)
この記事では、Docker 環境特有の原因と、Zabbix WebUI だけで完結する解決手順をわかりやすく解説します。
原因:Docker ではローカルホスト(127.0.0.1)で通信できない
Zabbix を Docker Compose で起動すると、WebUI のホスト設定のデフォルト値が 127.0.0.1 になっています。
しかし Docker Compose 環境では、各サービス(zabbix-server、zabbix-agent など)はそれぞれ別のコンテナとして動作します。
127.0.0.1 はあくまで「自分自身(Zabbix Server コンテナ)」を指すアドレスです。
そのため、別コンテナで動いている Zabbix Agent には到達できず、Connection refused が発生します。
Docker Compose 環境では、コンテナ同士は サービス名(DNS 名) で通信する仕組みになっています。
解決策:IP から DNS 名(zabbix-agent)に変更する
設定変更は Zabbix WebUI 上のホスト設定だけで完結します。docker-compose.yml を触る必要はありません。
手順
- Zabbix WebUI にログインする
- 左メニューから 「データ収集」→「ホスト」 を開く
- 対象ホスト(例:
Zabbix server)をクリックして編集画面を開く - 「インターフェース」セクションを確認する
- 接続方法を 「IP」→「DNS」 に切り替える
- DNS 名に
zabbix-agentと入力する - 「更新」 をクリックして保存する
変更前後の設定イメージは以下のとおりです。
| 項目 | 変更前 | 変更後 |
|---|---|---|
| 接続方法 | IP | DNS |
| アドレス | 127.0.0.1 | zabbix-agent |
| ポート | 10050 | 10050(変更不要) |
DNS 名は、docker-compose.yml に記載されているサービス名と一致させてください。
サービス名を変更している場合はそちらの名前を入力します。
変更後の確認方法
設定を保存後、しばらく待つと Zabbix WebUI のホスト一覧に表示される ZBX アイコンが緑色になれば、エージェントとの通信が成功しています。
もし緑にならない場合は、以下を確認してみてください。
docker-compose.ymlの Zabbix Agent サービス名がzabbix-agentになっているか- Zabbix Server と Zabbix Agent が同じ Docker ネットワークに属しているか
- コンテナが正常に起動しているか(
docker compose psで確認)
まとめ
Zabbix 7.0 の Docker 環境で Connection refused が出る原因は、ホスト設定の接続先が 127.0.0.1(ローカルホスト)のままになっているためです。
Docker Compose ではコンテナ間通信に DNS 名を使う必要があるので、zabbix-agent に変更するだけで解決できます。
同じ問題で詰まっている方の参考になれば幸いです。
