Zabbix 理论+实战(docker容器快速部署)
前言:本文涉及 MySQL 和 Docker 的基础使用,内容偏入门,相关知识点大家也可自行通过 AI 查询学习。身处信息爆炸的时代,我们何其幸运,海量优质知识与学习资源都触手可及。谨以此文记录成长路上的每一步,愿与大家一同学习,共同进步
Zabbix 理论
Zabbix 是一款成熟的企业级开源监控解决方案,能够监控网络、服务器、虚拟化、云服务、数据库、应用程序等成千上万的 IT 组件。它的核心设计思想是集中式采集、存储、展示与告警。
核心架构组件
-
Zabbix Server
-
监控系统的中枢,负责数据收集、告警计算、配置管理、与数据库交互。
-
通过轮询或接收主动推送的方式从被监控对象获取数据。
-
-
Zabbix Agent
-
部署在被监控主机上的守护进程,可工作在主动模式(Agent 主动向 Server 上报数据)或被动模式(Server 定期向 Agent 询问数据)。
-
支持操作系统内置指标(CPU、内存、磁盘、网络等)和自定义脚本扩展。
-
-
Zabbix Proxy(可选)
-
用于分布式监控场景,部署在远程区域,代理 Server 收集数据并缓存,减轻 Server 压力,尤其适用于跨数据中心或网络环境较差的场景。
-
-
Database
-
存储所有配置信息、历史数据和告警记录。支持 MySQL、PostgreSQL、Oracle 等关系型数据库。
-
数据量较大时,建议将数据库单独部署在高性能机器上。
-
-
Zabbix Frontend
-
基于 PHP 的 Web 界面,提供仪表盘、图表、配置入口、告警管理等功能。
-
通常与 Zabbix Server 部署在同一主机,也可分离。
-
数据采集方式
-
Zabbix Agent:用于监控操作系统内部指标,效率高,支持密钥加密。
-
SNMP:用于网络设备、打印机、UPS 等支持 SNMP 协议的设备。
-
IPMI:用于监控服务器硬件(温度、风扇、电源等)。
-
JMX:监控 Java 应用程序(如 Tomcat、Kafka)。
-
自定义脚本:通过 UserParameter 或外部检查执行任意脚本获取数据。
监控流程
-
创建主机:(Host)
-
关联模板:(Template)模板包含预先定义的监控项、触发器、图形等,可复用
-
数据采集:Zabbix Server 根据配置的监控项(Item)定期向 Agent 或设备发起请求
-
数据存储:采集到的值存入数据库(历史数据可设置保留周期)
-
触发器评估:对采集到的值进行阈值判断,产生告警
-
动作执行:当触发器触发时,执行预定义动作,如发送邮件、执行远程命令等
-
可视化与报表:通过 Web 界面查看图表、仪表盘、报表
Zabbix实战
环境
| 主机 IP | 操作系统 | 角色 | 备注 |
|---|---|---|---|
| 192.168.206.131 | Debian 12 | MySQL 数据库 | 已安装 MySQL 8.4.6 |
| 192.168.206.136 | openEuler 22.03 | Zabbix Agent | 作为监控主服务器 |
| 192.168.206.133 | CentOS Stream 10 | Zabbix Server + Web(Docker 容器) | 作为监控主服务器 |
说明:为了完整展示多机部署,我们将数据库与 Zabbix Server 分离。如果资源有限,也可以将数据库与 Server 合并。
第一阶段:数据库准备(在 192.168.206.131 上执行)
由于 Debian 已安装 MySQL 8.4.6,我们只需创建 Zabbix 所需的数据库和用户。
-
登录 MySQL
mysql -u root -p -
创建数据库与用户
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; #创建一个名为 zabbix 的数据库,使用 UTF-8 四字节编码,支持完整的 Unicode 字符(包括 emoji、中文等)COLLATE utf8mb4_bin意为使用 二进制校对规则,区分大小写,按字节比较(性能更好,精确匹配) CREATE USER 'zabbix'@'192.168.206.136' IDENTIFIED BY '自定义密码'; #创建一个zabbix用户,仅192.168.206.136可连接,设置登录密码。允许从任何主机连接,使用 'zabbix'@'%' GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'192.168.206.136'; #授予192.168.206.136对数据库zabbix所有权限(SELECT、INSERT、UPDATE、DELETE、CREATE、DROP 等) SET GLOBAL log_bin_trust_function_creators = 1; #允许在启用二进制日志(binlog)时创建函数/触发器,MySQL 默认为了 主从复制安全,限制创建函数,Zabbix 需要创建存储过程和函数,因此需要开启此选项,GLOBAL 表示全局生效,重启后失效(如需永久生效需改 my.cnf) FLUSH PRIVILEGES; #MySQL 会将权限表加载到内存中缓存,执行此命令强制重新加载,使上述用户和权限修改立即生效 SELECT user, host FROM mysql.user; #查询验证当前 MySQL 中所有用户及其允许连接的主机注意:
-
log_bin_trust_function_creators临时开启,等导入数据后可以关闭。
-
-
导入 Zabbix 初始数据 需要先下载 Zabbix 源码包或 schema 文件。我们选择最新稳定版 Zabbix 7.0 LTS。
# 下载 Zabbix 7.0 的源码包(包含 SQL 文件) wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.8.tar.gz tar -xzf zabbix-7.0.8.tar.gz cd zabbix-7.0.8/database/mysql # 按顺序导入(注意路径sql实际路径) mysql -u root -p zabbix < schema.sql mysql -u root -p zabbix < images.sql mysql -u root -p zabbix < data.sql -
关闭 log_bin_trust_function_creators
mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"
第二阶段:部署 Zabbix Server 与前端 (192.168.206.133 Centos stream10)
# 启动 Zabbix Server 容器
docker run -d \
--name zabbix-server \
-e DB_SERVER_HOST=192.168.206.131 \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=xbsix123 \
-e MYSQL_DATABASE=zabbix \
-p 10051:10051 \
zabbix/zabbix-server-mysql:alpine-7.0-latest
# 启动 Zabbix Web 容器(Nginx + PHP)
docker run -d \
--name zabbix-web \
-e ZBX_SERVER_HOST=192.168.206.133 \
-e DB_SERVER_HOST=192.168.206.131 \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=xbsix123 \
-e MYSQL_DATABASE=zabbix \
-p 80:8080 \
zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest
访问 http://192.168.206.133,即部署前端的服务器ip,使用默认账号 Admin / 密码 zabbix 登录。


第三阶段:部署被监控 Agent(在192.168.206.136 openeuler上执行)
从 Zabbix 官网下载源码编译安装 Agent。
-
安装编译依赖
# 1. 安装编译依赖(必须!否则configure会报错) sudo apt update sudo apt install -y gcc make automake autoconf libpcre3-dev -
下载源码并编译
# 2. 下载 Zabbix 7.0.8 源码 wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.8.tar.gz # 3. 解压 tar -xzf zabbix-7.0.8.tar.gz # 4. 进入目录 cd zabbix-7.0.8 # 5. 编译配置(只安装Agent) ./configure --enable-agent --prefix=/usr/local/zabbix # 6. 编译 make # 7. 安装 make install -
创建配置文件
#复制示例配置文件 cp /usr/local/zabbix/etc/zabbix_agentd.conf /usr/local/zabbix/etc/zabbix_agentd.conf.bak#修改配置文件/usr/local/zabbix/etc/zabbix_agentd.conf Server=192.168.206.133 # Zabbix Server IP ServerActive=192.168.206.133 # 主动模式服务器地址 Hostname=openeuler # 该主机在 Zabbix 前端显示的名称 -
创建 systemd 服务文件(以便开机自启)
#建文件之前需要为agent创一个专用账号和组,并且将文件目录权限修改 groupadd zabbix useradd -r -g zabbix -s /sbin/nologin zabbix chown -R zabbix:zabbix /usr/local/zabbix/ chmod 755 /usr/local/zabbix/sbin/zabbix_agentd #/etc/systemd/system/系统服务目录,放这里才能开机自启、用 systemctl 管理。 cat > /etc/systemd/system/zabbix-agent.service <<'EOF' [Unit] #服务的描述,方便你识别 Description=Zabbix Agent #agent 要连网,网络启动完成后,再启动ZabbixAgent After=network.target [Service] #普通服务类型(最常用),直接启动二进制程序 Type=simple #进程号文件,系统用它识别 Zabbix 进程是否在运行 PIDFile=/tmp/zabbix_agentd.pid #用 zabbix 用户 启动服务(安全,不用 root 跑) User=zabbix #用 zabbix 用户组 Group=zabbix #/usr/local/zabbix/sbin/zabbix_agentd:agent 主程序 #-f:前台运行(systemd 管理需要) #-c ...:指定配置文件路径 ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -f -c /usr/local/zabbix/etc/zabbix_agentd.conf #服务停止时,杀死 zabbix 进程 ExecStop=/usr/bin/pkill zabbix_agentd #崩溃自动重启,保证 agent 一直在线 Restart=on-failure [Install] #表示多用户模式下开机自启,执行systemctl enable zabbix-agent 就是靠这个生效 WantedBy=multi-user.target EOF -
启动并且设置自启动Agent
#重载 systemctl daemon-reload #启动 systemctl start zabbix-agent # 开机自启 systemctl enable zabbix-agent #查看状态 systemctl status zabbix-agent -
防火墙放行 Agent 端口(10050)
firewall-cmd --permanent --add-port=10050/tcp firewall-cmd --reload
第四阶段:在 Zabbix 前端添加主机并开始监控
-
登录 Zabbix Web:
http://192.168.206.136,用户名Admin,密码你设置的。 -
添加主机
-
点击左侧菜单 Monitoring → Hosts,点击右上角 Create host。
-
Host name:输入Agent 配置文件中的
Hostname。 -
Visible name:可选,便于识别。
-
Groups:点击
Select,选择一个已有组(如Linux servers)或新建组。 -
Interfaces:点击 Add,选择 Agent,输入 IP
192.168.206.136,端口10050。 -
Templates:点击 Select,选择 Linux by Zabbix agent(这是官方提供的模板,包含了 CPU、内存、磁盘等基础监控项)。点击 Add 保存。

-
-
等待数据 几秒钟后,点击 Monitoring → Latest data,过滤主机 ,即可看到采集到的数据。

-
测试告警 可以尝试在 Agent 主机上模拟一个高负载,或者手动修改触发器的阈值,观察 Monitoring → Problems 是否出现告警。
第五阶段(可选):配置邮件告警
这一块内容目前本人还在探索中,后续补充
总结
至此,已经完成了:
-
一套分离式 Zabbix 监控环境的搭建(数据库、Server、前端、Agent)。
-
添加了一台 Linux 主机并应用官方模板,实现了基础监控。
-
了解了告警动作的配置方法。
Zabbix 功能非常丰富,后续可以探索:
-
自定义监控项(UserParameter)
-
图形化仪表盘
-
自动发现(LLD)
-
分布式监控(Proxy)
-
与 CMDB、自动化工具集成
建议在生产环境部署前,仔细阅读官方文档,并根据实际规模规划数据库分区、数据保留策略等。
本人在搭建过程中,遇到防火墙报错,以及数据库版本不匹配等等问题,网络问题可以用telnet ip 10050排查,数据库重新导入合适版本文件即可。
更多推荐

所有评论(0)