Zabbix实践
Zabbix 由 Zabbix SIA 开发维护,基于GPLv2 开源协议,可免费使用、二次分发,支持监控服务器、网络设备、应用服务、云平台、容器、业务指标等全场景监控。Zabbix 是零成本、高灵活、全场景的企业级监控工具,从单机部署到分布式架构,从基础监控到业务指标,都能完美支撑。对于生产环境,优先选择LTS 版本,搭配 Proxy 分布式架构,做好数据库与告警优化,即可支撑大规模 IT 基础
Zabbix 实践
Zabbix 作为企业级开源分布式监控解决方案,凭借免费开源、跨平台、灵活告警、可视化报表等优势,成为中小团队与大型企业 IT 基础设施监控的首选方案。本文基于 Zabbix 6.0 LTS 稳定版,从核心概念、组件架构、LNMP 环境搭建、服务端 / 客户端部署、邮件告警配置到实战监控,一站式带你掌握 Zabbix 全流程使用。
一、Zabbix 概述
1. 产品定位
Zabbix 由 Zabbix SIA 开发维护,基于 GPLv2 开源协议,可免费使用、二次分发,支持监控服务器、网络设备、应用服务、云平台、容器、业务指标等全场景监控。
2. 版本生命周期
Zabbix 分LTS 长期支持版与标准版,生产环境优先选 LTS 保障稳定性:
- LTS 版:开发周期 1.5 年 → 全面支持 3 年(功能 + 安全更新)→ 有限支持 2 年(仅高危修复)
- 标准版:开发周期 6 个月 → 全面支持 6 个月 → 有限支持 6 个月
- 推荐版本:Zabbix 6.0 LTS / 7.0 LTS,兼容主流系统与组件,长期稳定维护
3. 核心监控能力
- 采集方式:支持主动模式(Agent 推数据)、被动模式(Server 拉数据)、SNMP/JMX/IPMI 等
- 告警机制:邮件、短信、脚本、告警升级,支持故障自愈
- 可视化:Web 前端、报表、图形、仪表盘
- 分布式:Proxy 实现跨机房、网络隔离场景监控
二、Zabbix 核心组件架构
Zabbix 采用服务端 + 客户端分布式架构,核心组件各司其职,支撑全链路监控:
| 组件 | 角色 | 核心功能 |
|---|---|---|
| Zabbix Server | 核心大脑 | 数据接收、处理、存储、告警判断、任务调度,支持 HA 高可用 |
| Zabbix Agent/Agent2 | 被监控端 | 部署在目标主机,采集系统 / 应用数据;Agent2 多线程、插件化,性能更强 |
| Zabbix Proxy | 分布式代理 | 转发采集数据,减轻 Server 负载,适配多机房 / 跨网络场景 |
| Database | 数据存储 | 存储配置、历史 / 趋势数据,支持 MySQL/MariaDB/PostgreSQL/Oracle |
| Web 界面 | 可视化控制台 | 基于 PHP,配置监控、查看数据、管理告警、生成报表 |
| 辅助工具 | 调试 / 自定义采集 | Zabbix Get(测试采集)、Zabbix Sender(推送自定义数据) |
关键概念速记
- 监控项(Item):最小采集单元(CPU、内存、流量等)
- 触发器(Trigger):监控项阈值规则,触发异常状态
- 动作(Action):异常后执行操作(发邮件、执行脚本)
- 模板(Template):预配置监控项 / 触发器集合,批量应用简化配置
- 主机(Host):被监控设备,需关联模板生效
三、生产环境部署:LNMP + Zabbix 6.0 全流程
本文以 CentOS 7 为例,搭建 LNMP 环境(Nginx+MariaDB+PHP),部署 Zabbix 6.0 LTS。
1. 基础环境准备
-
关闭防火墙与 SELinux
-
配置静态 IP,同步系统时区
-
主机名规划:
- Zabbix Server:192.168.108.50
- 被监控端:192.168.108.51
2. 部署 LNMP 环境
(1)安装 Nginx
# 配置 Nginx YUM 源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
# 安装并启动
yum install nginx -y
systemctl start nginx && systemctl enable nginx
# 开放 HTTP 端口
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
(2)安装 MariaDB 10.X(Zabbix 6.0 强制要求)
# 配置 MariaDB 源
vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name=MariaDB
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled=1
gpgcheck=0
# 安装并初始化
yum install mariadb-server mariadb -y
systemctl enable mariadb --now
# 设置 root 密码
mysql
DELETE FROM mysql.user WHERE User='';
ALTER USER root@localhost IDENTIFIED BY 'root123';
flush privileges;
quit
(3)安装 PHP 7.2 及扩展
# 安装依赖源
yum install epel-release -y
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装 PHP 组件
yum install php72w php72w-fpm php72w-mysqlnd php72w-gd -y
# 配置 PHP-FPM 运行用户为 nginx
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
# 优化 PHP 配置(适配 Zabbix)
vim /etc/php.ini
short_open_tag = On
max_execution_time = 300
memory_limit = 128M
date.timezone = Asia/Shanghai
# 启动服务
systemctl enable php-fpm --now
systemctl restart nginx
3. 配置 Zabbix 专用数据库
mysql -uroot -proot123
# 创建数据库
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
# 创建授权用户
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
flush privileges;
quit
4. 编译安装 Zabbix Server
# 安装编译依赖
yum install mysql-devel pcre-devel openssl-devel gcc gcc-c++ make -y
# 创建 Zabbix 用户
useradd -s /sbin/nologin -M zabbix
# 解压源码包并编译
tar zxvf zabbix-6.0.6.tar.gz
cd zabbix-6.0.6
export CFLAGS="-std=gnu99"
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp
make && make install
# 导入 Zabbix 初始数据库
cd database/mysql/
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
5. 配置 Zabbix Server 并启动
# 修改配置文件
vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix123
LogFile=/var/log/zabbix_server.log
# 创建日志文件并授权
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log
# 配置 systemd 服务
vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
# 启动服务
systemctl daemon-reload
systemctl start zabbix-server && systemctl enable zabbix-server
6. 部署 Web 前端
# 复制前端文件到 Nginx 目录
cp -r zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/
访问 http://192.168.108.50,按向导完成配置,默认账号:Admin,密码:zabbix。
7. 被监控端部署 Agent2
# 安装 Zabbix 源
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
# 安装 Agent2
yum install zabbix-agent2 -y
# 配置指向 Server
vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.108.50
ServerActive=192.168.108.50
Hostname=mysql001
# 启动服务
systemctl enable zabbix-agent2 --now
四、实战配置:邮件告警 + 业务监控
1. 配置 QQ 邮箱告警(mailx)
# 安装 mailx
yum install mailx -y
# 配置 mail.rc
vim /etc/mail.rc
set from=你的QQ邮箱
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=你的QQ邮箱
set smtp-auth-password=QQ邮箱授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
2. 编写告警脚本
# 创建脚本目录
mkdir -p /usr/lib/zabbix/alertscripts
chown zabbix.zabbix /usr/lib/zabbix/alertscripts
# 编写发送脚本
vim /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
# 授权
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
3. Web 端配置告警
- 管理 → 报警媒介类型 → 创建脚本类型
- 用户 → Admin → 添加报警媒介,填写收件邮箱
- 配置 → 动作 → 创建 Trigger 动作,设置告警 / 恢复消息模板
4. 验证监控
被监控端关闭 MySQL:systemctl stop mysqld,Zabbix 触发告警并发送邮件,完成闭环测试。
五、Zabbix 高频使用场景
- 服务器监控:Linux/Windows 系统资源、进程、日志、端口
- 网络设备监控:交换机 / 路由器 SNMP 监控、端口流量、状态
- 应用服务监控:Nginx、MySQL、Redis、Kafka、Tomcat、K8s
- 云平台监控:阿里云、AWS、VMware 虚拟机资源
- 分布式监控:多机房用 Proxy 代理采集,降低 Server 压力
- 故障自愈:触发器联动脚本,自动重启服务、清理磁盘
六、生产环境优化要点
- 数据库优化:定期分区历史表,避免单表过大;使用 SSD 提升 IO
- 采集优化:大规模环境用 Agent2 主动模式,降低 Server 负载
- Proxy 拆分:跨地域 / 网络隔离场景必须部署 Proxy
- 告警收敛:避免风暴告警,配置告警升级、合并规则
- 权限管控:按团队分配 Web 权限,防止误操作
七、Zabbix 6.0 常见问题排查清单
1、前端无法访问 / 安装失败
-
Nginx 未启动:
systemctl status nginx -
前端文件缺失:
ls /usr/share/nginx/html/index.php -
PHP 配置不满足:
- max_execution_time = 300
- memory_limit = 128M
- date.timezone = Asia/Shanghai
-
数据库连接失败:库不存在 / 密码错误 / 字符集非 utf8_bin
2、Zabbix Server 起不来 / 10051 未监听
- 看日志:
tail -f /var/log/zabbix_server.log - DBPassword 未配置 / 写错
- 日志文件权限不对:
chown zabbix:zabbix /var/log/zabbix_server.log - 数据库未导入:schema.sql/images.sql/data.sql
- 端口被占用:
netstat -ntlp | grep 10051
3、Agent 灰色不亮绿 / 监控不通
- 看 Agent 日志:
tail -f /var/log/zabbix/zabbix_agent2.log - Server / ServerActive 指向正确 IP
- Hostname 与 Web 端主机名完全一致
- 防火墙 / SELinux 关闭
- Server 端测试:
zabbix_get -s 客户端IP -p 10050 -k system.uname - 修改配置后必须重启:
systemctl restart zabbix-agent2
4、监控项无数据 / 不采集
- 主机已启用、模板已链接
- 监控项已启用、间隔合理
- 被动 / 主动模式匹配配置
- 用 zabbix_get 验证采集可用性
5、触发器告警但不发邮件
- 触发器变为 PROBLEM
- Action 已启用、条件匹配
- 用户已绑定报警媒介、邮箱正确
- AlertScriptsPath 路径正确
- 脚本可执行、属主 zabbix:zabbix
- 手动测试脚本:
./mailx.sh 邮箱 标题 内容 - 看邮件日志:
tail -f /tmp/mailx.log
6、数据库常见问题
- 连接失败:授权不全、bind-address 限制
- 性能差:历史数据未分区、未设置保留时长
- 空间暴涨:缩短历史 / 趋势存储天数
7、最常用排查命令
# Server 状态
systemctl status zabbix-server
# 端口监听
netstat -ntap | grep zabbix
# Server 日志
tail -f /var/log/zabbix_server.log
# Agent 日志
tail -f /var/log/zabbix/zabbix_agent2.log
# 测试客户端连通性
zabbix_get -s 192.168.108.51 -p 10050 -k system.uname
# 测试邮件告警
cd /usr/lib/zabbix/alertscripts
./mailx.sh your@qq.com "测试标题" "测试内容"
8、排查口诀
前端不行查 Nginx、PHP、权限
Server 挂了查日志、数据库、密码
Agent 灰色查配置、主机名、防火墙
无数据查 zabbix_get、模板、采集间隔
收不到告警查动作、媒介、脚本、权限
八、总结
Zabbix 是零成本、高灵活、全场景的企业级监控工具,从单机部署到分布式架构,从基础监控到业务指标,都能完美支撑。
对于生产环境,优先选择 LTS 版本,搭配 Proxy 分布式架构,做好数据库与告警优化,即可支撑大规模 IT 基础设施的稳定监控。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)