You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器化Zabbix Server监控同宿主机Agent连接失败问题排查

问题场景
  • 宿主机部署基于CentOS 6.0镜像的Docker容器化Zabbix Server,同宿主机运行zabbix-agent2,初始配置Zabbix Server指向IP为127.0.0.1
  • 登录Zabbix Web前端查看被监控主机状态时出现多类连接报错,基础排查后多轮尝试修复未生效,需要可行的配置与排障方案
报错详情

配置监控IP为127.0.0.1:10050时

容器内的127.0.0.1指向容器自身环回口,无法访问宿主机服务,报错信息如下:

Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused

配置监控IP为docker0网桥地址172.17.0.1:10050时

考虑到Docker容器无法直接识别宿主机localhost,修改为docker0默认地址后,因agent访问控制规则拦截请求,报错如下:

Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer

其他关联报错

宿主机侧对目标地址做ping、traceroute检测均连通正常,但Zabbix内探测主机操作系统时,因容器镜像缺少组件报错:

Cannot execute script.
sh: sudo: command not found
已尝试的无效修复操作
  • 参考Docker容器访问宿主机localhost的配置教程,使用172.17.0.1作为监控地址
  • 尝试在docker-compose.yml中配置network_mode: host,但该配置与文件内已定义的自定义网络存在冲突
  • 参考Docker Compose同时使用host网络与用户自定义网络的配置方案操作,问题仍存在
  • 已在docker-compose.yml中正确配置10051:10051端口映射
排障与可行配置方案

修复连接重置(104报错)问题

该报错核心原因是zabbix-agent2默认仅允许127.0.0.1地址发起连接,收到容器网段的请求后会主动重置连接,按以下步骤修改agent配置即可:

  1. 找到zabbix-agent2配置文件,默认路径为/etc/zabbix/zabbix_agent2.conf
  2. 修改Server参数,追加docker0网桥网段,配置为Server=127.0.0.1,172.17.0.0/16,允许Zabbix Server容器所在网段主动拉取监控数据
  3. 修改ServerActive参数,同样追加上述网段,保证主动检查请求可被正常接收
  4. 确认agent监听地址配置为ListenIP=0.0.0.0,不要仅绑定127.0.0.1,否则跨网段请求无法被接收
  5. 重启zabbix-agent2服务:systemctl restart zabbix-agent2,执行ss -tulpn | grep 10050验证端口监听状态,输出中出现0.0.0.0:10050即为配置正确

修复sudo命令不存在报错

该报错是CentOS 6.0基础镜像未预装sudo工具导致,按以下步骤操作即可:

  1. 进入Zabbix Server容器命令行:docker exec -it 你的zabbix-server容器名 /bin/bash
  2. 执行yum命令安装sudo:yum install -y sudo
  3. 安装完成后直接退出容器,无需重启服务,重新在前端触发操作系统探测即可正常执行脚本

网络冲突备选方案(上述配置仍异常时使用)

如果不想调整agent的访问控制规则,可直接通过extra_hosts配置映射宿主机地址,不需要改动现有自定义网络,也不会和network配置产生冲突:

  1. 在docker-compose.yml的zabbix-server服务配置段下添加以下内容:
extra_hosts:
  - "host-local:172.17.0.1"
  1. 执行docker-compose up -d重载容器配置生效
  2. 将Zabbix前端中宿主机的监控IP改为host-local,端口保持10050即可,现有端口映射规则不需要调整

连通性验证

所有配置修改完成后,按以下步骤验证链路可用性:

  1. 进入Zabbix Server容器:docker exec -it zabbix-server容器名 /bin/bash
  2. 执行自带工具测试agent连通性:zabbix_get -s 172.17.0.1 -p 10050 -k agent.ping
  3. 命令返回1即代表Server到agent的连接完全正常,前端等待1-2分钟刷新后,主机状态就会变为可用

内容的提问来源于stack exchange,提问作者user19413311

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:15:44