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

容器化部署的Zabbix Agent如何监控宿主机Docker容器

结论

完全可以通过容器化运行的Zabbix Agent实现宿主机上其他Docker容器的监控,无需在宿主机额外部署Zabbix Agent。你提到的已停维第三方镜像核心实现逻辑是挂载宿主机Docker套接字实现Docker API调用,目前官方Zabbix Agent 2版本已经原生内置Docker监控插件,不需要依赖第三方镜像即可实现该能力。

前置要求
  • 现有容器化部署的Zabbix Server、数据库、Zabbix Agent网络连通正常,Agent已可正常向Server上报基础监控数据
  • 宿主机Docker服务运行正常,默认Docker Unix套接字路径为/var/run/docker.sock
  • 优先使用官方zabbix/zabbix-agent2镜像部署Agent,老版zabbix-agent无内置Docker插件,需要自行编写监控脚本,维护成本较高
配置步骤

1. 调整Zabbix Agent容器启动配置

核心是将宿主机Docker套接字以只读模式挂载进Agent容器,并给容器内运行Agent进程的用户开放套接字访问权限,不需要给容器开启特权模式。

  • 直接docker命令启动的参考配置:
# 先获取宿主机docker套接字的用户组ID
DOCKER_SOCK_GID=$(stat -c '%g' /var/run/docker.sock)

# 启动Agent容器,在你原有启动参数基础上增加挂载和用户组配置
docker run \
  # 此处保留你原有所有Agent启动参数,比如ZBX_SERVER_HOST、ZBX_HOSTNAME、端口映射、重启策略等
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --group-add $DOCKER_SOCK_GID \
  zabbix/zabbix-agent2:对应你的Zabbix Server版本标签

参数说明:

  • -v /var/run/docker.sock:/var/run/docker.sock:ro:只读挂载宿主机Docker套接字,只读权限完全满足监控采集需求,不会因为容器内操作篡改宿主机Docker配置
  • --group-add $DOCKER_SOCK_GID:将容器内运行Agent进程的用户加入Docker套接字对应的用户组,解决套接字访问权限不足问题
  • docker-compose部署的参考配置段:
services:
  zabbix-agent2:
    image: zabbix/zabbix-agent2:对应你的Zabbix Server版本标签
    # 保留原有环境变量配置,比如ZBX_SERVER_HOST、ZBX_HOSTNAME等
    volumes:
      # 保留你原有其他挂载配置
      - /var/run/docker.sock:/var/run/docker.sock:ro
    group_add:
      # 此处替换为你在宿主机执行stat -c '%g' /var/run/docker.sock获取到的组ID
      - 999
    # 保留原有重启策略、网络模式等配置

2. 容器内采集能力校验

Agent容器启动完成后,在宿主机执行以下命令校验采集是否正常:

docker exec -it 你的Zabbix Agent容器名 zabbix_agent2 -t docker.info

如果命令返回Docker版本、容器总数、镜像总数等结构化数据,说明Agent已经可以正常访问宿主机Docker服务;如果返回权限拒绝错误,重新检查套接字挂载路径、用户组配置是否正确。

3. Zabbix前端配置

登录Zabbix Web管理端,找到对应宿主机绑定的Agent主机条目,在模板关联页面选择官方自带的 Docker by Zabbix agent 2 模板绑定即可。该模板已经预置了容器运行状态、CPU/内存/磁盘IO/网络IO资源占用、镜像/存储卷统计、容器异常退出触发器等常用监控能力,等待5-10分钟即可看到全量监控数据。

常见问题说明
  • 若使用老版Zabbix Agent(非Agent2):需要自行在容器内安装docker-cli,挂载宿主机docker.sock和docker二进制文件,再编写UserParameter自定义监控项调用docker命令采集数据,维护成本高,无特殊需求不建议使用
  • 若监控项提示不支持:进入Agent容器执行curl --unix-socket /var/run/docker.sock http://localhost/version,如果能返回Docker版本JSON数据说明套接字连通正常,再检查Agent插件是否开启(默认已开启,可通过环境变量ZBX_DOCKER_PLUGIN_ENABLED=true强制开启)
  • rootless Docker场景:宿主机Docker套接字默认路径为用户目录下的/run/user/你的UID/docker.sock,对应调整挂载路径即可
  • 安全注意:禁止为了方便给Zabbix Agent容器开启--privileged特权模式,只读挂载docker.sock配合用户组授权已经满足所有监控需求,特权模式会带来不必要的安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:24:22