zabbix使用docker-compose部署和配置

本文最后更新于 2026年8月1日 上午

概述

Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。

Zabbix 是一个企业级的开源分布式监控解决方案。

Zabbix 是一款监控众多参数的网络以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix 都可以在监控 IT 基础设施方面发挥重要作用。

Zabbix 是免费的。Zabbix 是AGPL-3.0许可证下编写和分发的。这意味着它的源代码是免费分发的,可供公众使用。

商业支持 由 Zabbix 公司及其世界各地的合作伙伴提供。

了解更多 Zabbix 功能

官方网站:

https://www.zabbix.com/cn/

Zabbix 使用手册

https://www.zabbix.com/documentation/current/zh/manual

zabbix架构

Zabbix 由多个主要软件组件组成。 它们的职责如下所述。

服务器

Zabbix server 是 agent 报告可用性、完整性信息和统计数据的中心组件。 服务器是存储所有配置、统计和运行数据的中央存储库。

数据库存储

所有配置信息以及 Zabbix 收集的数据都存储在数据库中。

Web 界面

为了能够从任何地方、任何平台轻松访问 Zabbix,系统提供了基于 Web 的界面。 该界面是 Zabbix 服务器的一部分,通常(但不一定)运行在与服务器相同的物理机器上。

proxy

Zabbix proxy 可以代表 Zabbix 服务器收集性能和可用性数据。 proxy 是 Zabbix 部署中的可选组件;不过,它对于分担单个 Zabbix 服务器的负载非常有帮助。

agent

Zabbix agent 部署在监控目标上,用于主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix 服务器。 自 Zabbix 4.4 起,提供两种类型的 agent:Zabbix agent(轻量级,支持多种平台,使用 C 编写)和 Zabbix agent 2(灵活性更高,可通过插件轻松扩展,使用 Go 编写)。

数据流

此外,重要的是退一步,查看 Zabbix 中整体的数据流。 为了创建一个用于收集数据的监控项,您必须先创建一个主机。 从 Zabbix 的另一端来看,您必须先有一个监控项,才能创建触发器。 您必须有一个触发器,才能创建一个动作。 因此,如果您希望在 Server X 的 CPU 负载过高时收到告警,您必须先为 Server X 创建一个主机条目,然后创建一个用于监控其 CPU 的监控项,再创建一个在 CPU 过高时触发的触发器,最后创建一个向您发送电子邮件的动作。 虽然这看起来像是很多步骤,但借助模板,这其实并不复杂。 不过,由于这种设计,您可以创建一个非常灵活的配置。

网络通信模式

有主动模式和被动模式两种(站在 Agent 的角度),核心区别在于连接由谁发起
主动模式:Agent 连接 Server 的 10051/tcp 端口,获取监控项目后采集并上报
被动模式:Server 连接 Agent 的 10050/tcp 端口,发送监控项目,Agent 采集后上报
采用哪种模式主要是要考虑到 Server 和 Agent 之间的网络情况。如果 Server 无法直接连接 Agent(比如 Agent 位于 NAT 后面),那么适合采用主动模式。

如果存在 Proxy,那么 Proxy 对于 Agent 来说,看起来就像 Server。另外,Proxy 和 Server 之间也有主动和被动之分,道理跟上面一样,只不过端口都是 10051/tcp

Proxy 代理

Proxy 是可选组件,用于扩展 Zabbix 的分布式监控能力。通过引入 Proxy,一方面可以降低 Server 采集压力,另一方面可更方便进行分区域采集。比如说某个内网区域 Agent 都只跟 Proxy 通信,然后再让 Proxy 统一上报给 Server,只需要打通一个网络策略就行。但是注意,Proxy 不进行任何触发器计算和告警处理,也没有办法决定采集什么数据(监控项),这些都是由 Server 控制。Proxy 自己也有一个数据库,但仅用来缓存采集到的数据。

安装Docker&Docker Compose

参考 https://getdocker.quickso.cn

部署 Zabbix Server

Zabbix 提供了用于在 Docker 中定义和运行多容器 Zabbix 组件的 compose 文件。

这些 compose 文件可以在 https://github.com/zabbix/zabbix-docker 上的 Zabbix docker 官方仓库中找到。

1. 创建相关目录

1
2
3
4
# mariadb 数据库目录
mkdir -p /root/zabbix/data/mariadb
# zabbix server 数据目录
mkdir /root/zabbix/data/zabbix

2. 准备 docker-compose.yml 文件

docker-compose.yml文件放在/root/zabbix/下,数据库密码可以根据需要修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
services:
mariadb-server:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: zabbix@123!
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
MYSQL_DATABASE: zabbix
volumes:
- /etc/localtime:/etc/localtime
- ./data/mariadb:/var/lib/mysql
networks:
- zbx_net
command: "--character-set-server=utf8mb4 --collation-server=utf8mb4_bin"

zabbix-server:
image: zabbix/zabbix-server-mysql:latest
restart: always
environment:
DB_SERVER_HOST: mariadb-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
ZBX_NODEADDRESS: zabbix-server
ZBX_ALLOWUNSUPPORTEDDBVERSIONS: 1
ZBX_VALUECACHESIZE: 512M
ports:
- 10051:10051
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data/zabbix:/var/lib/zabbix
networks:
- zbx_net

zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
environment:
DB_SERVER_HOST: mariadb-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
PHP_TZ: Asia/Shanghai
ZBX_SERVER_HOST: zabbix-server
ports:
- 8080:8080
depends_on:
- zabbix-server
networks:
- zbx_net

zabbix-agent:
restart: always
image: zabbix/zabbix-agent2:latest #这里使用agent2,性能更好,并且官方优先维护
pid: host
init: true
privileged: true #为了更好采集宿主机数据所以用了特权模式,如果在意安全性也可以不加这行
environment:
ZBX_SERVER_HOST: zabbix-server
ZBX_HOSTNAME: "Zabbix server"
depends_on:
- zabbix-server
networks:
- zbx_net

networks:
zbx_net:
volumes:
zabbix:

3.启动

1
2
3
4
5
6
7
8
9
10
11
# 在docker-compose.yml文件目录中运行
docker-compose up -d

# 查看容器运行日志
docker-compose logs -f

# 查看容器运行状态
docker-compose up

# 查看容器启动的进程
docker-compose top

4.访问

浏览器访问 http://IP:8080 打开管理界面
默认用户名/密码:Admin/zabbix
如果语言不是中文,可到User settings→Profile→Language更改语言
然后马上到数据采集→主机→Zabbix server里,修改接口,勾选DNS然后填入zabbix-agent,把127.0.0.1清空(Server 自己也需要被监控,所以也安装了 Agent。然后因为 Agent 也是容器里部署的,用 127.0.0.1 访问到的是 Server 自己的容器,要改成 Agent 的容器服务名来访问)。

5.安装和配置被监控机 Zabbix Agent

接下来就是在其他被监控机上安装 Agent 了。下面分别介绍Docker、 Windows 和 Linux 的安装和配置流程。

Docker:

1
2
3
4
5
docker run -d \
--name my-zabbix-agent \
-e ZBX_HOSTNAME="my-hostname" \
-e ZBX_SERVER_HOST="your-zabbix-server-ip" \
zabbix/zabbix-agent2:latest

参数说明

  • -d: 后台运行容器。
  • --name my-zabbix-agent: 为容器指定一个名称。
  • -e: 用于设置环境变量,是配置 Agent 的主要方式。
    • ZBX_HOSTNAME: 【必填】 设置 Agent 的主机名,必须与 Zabbix Server 前端添加的主机名完全一致
    • ZBX_SERVER_HOST: 【必填】 设置 Zabbix Server 的 IP 或 DNS 名称,用于被动检查

进阶配置:主动与被动检查分离

对于较新版本的 Agent(如 7.2.6 及以上),为了配置更清晰,建议使用专用变量分别配置被动和主动检查。

  • ZBX_PASSIVESERVERS: 用于被动检查,替代 ZBX_SERVER_HOST。它指定哪些 Server 可以连接此 Agent。
  • ZBX_ACTIVESERVERS: 用于主动检查,指定 Agent 主动连接的目标 Server 地址。

bash

1
2
3
4
5
6
docker run -d \
--name my-zabbix-agent \
-e ZBX_HOSTNAME="my-hostname" \
-e ZBX_PASSIVESERVERS="your-zabbix-server-ip" \
-e ZBX_ACTIVESERVERS="your-zabbix-server-ip" \
zabbix/zabbix-agent2:latest

注意:在 7.2.5 及更早版本中,ZBX_SERVER_HOST 会同时应用于主动和被动检查。但在 7.2.6 及之后,不建议将 ZBX_SERVER_HOST 设置为 0.0.0.0/0 这样的通配地址,否则可能导致 Agent 启动失败。

一、Windows 系统安装 Zabbix Agent 2

1. 下载安装包

从 Zabbix 官方网站下载适用于 Windows 的 Zabbix Agent 2 MSI 安装包:

2. 安装 Agent

双击下载的 MSI 文件,按照安装向导操作:

  1. 接受最终用户许可协议(EULA)
  2. “Zabbix Agent 2 Service Configuration” 界面配置以下信息:
    • Hostname:在 Zabbix Server 中用于识别此主机的名称
    • Zabbix server IP/DNS:Zabbix Server 的 IP 地址
    • Agent listen port:Agent 监听端口,默认 10050
    • Server or Proxy for active checks:主动检查模式的 Zabbix Server IP
  3. 完成安装
3. 手动配置(如需修改配置文件)

安装完成后,配置文件默认位于:

1
C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf

主要配置参数:

1
2
3
Server=192.168.1.100           # Zabbix Server IP(被动模式)
ServerActive=192.168.1.100 # Zabbix Server IP(主动模式)
Hostname=windows-host-01 # 主机名,需与 Zabbix Server 配置一致

注意:如果使用归档包(zip)手动安装,需要先将 conf/zabbix_agent2.confconf/zabbix_agent2.d 拷贝到 zabbix_agent2.exe 所在的目录。

4. 启动服务

打开 Windows 服务管理器(Win+R,输入 services.msc),找到 “Zabbix Agent 2” 服务,右键点击选择”启动”,并建议将启动类型设为”自动”。


二、Debian 系统安装 Zabbix Agent 2

1. 添加 Zabbix 官方仓库

Zabbix 包不在 Debian 默认仓库中,需要先添加官方源。

Debian 12 (Bookworm)

1
2
3
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
sudo dpkg -i zabbix-release_latest_7.0+debian12_all.deb
sudo apt update

Debian 13 (Trixie)

1
2
3
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian13_all.deb
sudo dpkg -i zabbix-release_latest_7.0+debian13_all.deb
sudo apt update

验证仓库是否添加成功:

1
apt-cache policy zabbix-agent2
2. 安装 Zabbix Agent 2 及插件
1
sudo apt install -y zabbix-agent2 zabbix-agent2-plugin-*

zabbix-agent2-plugin-* 包提供了对数据库、消息队列、容器运行时等内置监控支持。

3. 配置 Agent

配置文件位于:

1
/etc/zabbix/zabbix_agent2.conf

编辑配置文件,设置以下关键参数:

1
2
3
Server=192.168.1.100           # Zabbix Server IP,接受被动检查请求
ServerActive=192.168.1.100 # Zabbix Server IP,主动检查结果发送地址
Hostname=debian-web-01 # 主机名,需与 Zabbix Server 配置一致
4. 启动并启用服务
1
2
3
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
sudo systemctl status zabbix-agent2 # 检查运行状态
5. 配置防火墙

Zabbix Agent 默认使用 10050 端口通信,需要在防火墙中开放该端口:

1
2
# 使用 ufw
sudo ufw allow 10050

云服务器注意:如果使用云服务器,需要在安全组中放行 10050 端口。


三、通用后续步骤

1. 在 Zabbix Server 中添加主机

登录 Zabbix Server Web 界面:

  1. 进入 “Monitoring” → “Hosts”
  2. 点击 “Create Host”
  3. 填写主机名(需与 Agent 配置的 Hostname 一致)、群组、IP 地址
  4. 关联合适的模板(如 Template OS Windows by Zabbix agentTemplate OS Linux by Zabbix agent
  5. 点击 “Add” 完成添加
2. 验证连接

在 Zabbix Server 上使用 zabbix_get 测试能否从 Agent 获取数据:

1
zabbix_get -s <agent_ip> -k system.hostname

如果返回正确的主机名,说明 Agent 已正常工作。

3. 日志排查

如遇问题,查看 Agent 日志:

  • WindowsC:\Program Files\Zabbix Agent 2\zabbix_agent2.log
  • Debian/var/log/zabbix/zabbix_agent2.log 或通过 journalctl -u zabbix-agent2 查看

四、注意事项

项目 说明
Agent 版本 Agent 2 是 Zabbix 推荐的新版客户端,由 Go 语言编写,支持插件化架构
端口 Agent 监听 10050,Server 监听 10051
Hostname 一致性 Agent 配置的 Hostname 必须与 Zabbix Server 前端添加的主机名完全一致
时间同步 确保 Agent 与 Server 时间同步,否则可能导致监控数据异常
支持的 Debian 版本 Agent 2 官方支持 Debian 9、10 及以上版本

参考:

https://blog.cpmsxe.net/2026/01/26/docker-zabbix7/

https://www.zabbix.com/documentation/current/zh/manual

https://yan-jian.com/%E7%9B%91%E6%8E%A7%E7%B3%BB%E7%BB%9F%E4%BB%8B%E7%BB%8D.html


zabbix使用docker-compose部署和配置
https://blog.quickso.cn/2025/06/14/zabbix使用docker-compose部署和配置/
作者
木子欢儿
发布于
2025年6月14日
许可协议