Zabbix 6.0 企业级监控解决方案部署与使用全总结
本文详细介绍了 Zabbix 6.0 LTS 版本的核心特性、架构组成,并基于 CentOS 7 系统的 LNMP 架构完成了从服务端部署(Nginx+MariaDB+PHP+Zabbix Server)、被监控端 Agent2 安装,到 Web 界面配置、邮件告警设置的完整流程。Zabbix 部署依赖 LNMP 环境,需严格匹配 PHP 版本(7.2+)、MariaDB 版本(10.5+)等依赖
Zabbix 6.0 企业级监控解决方案部署与使用全总结
一、Zabbix 概述
Zabbix 是由 Alexei Vladishev 创建、Zabbix SIA 维护的企业级开源分布式监控解决方案,基于 GNU GPL v2 许可证,源代码开放且完全免费。其核心功能包括监控网络参数、服务器 / 虚拟机 / 应用程序 / 数据库等 IT 资源的健康状态与完整性,提供灵活的邮件告警机制、强大的报表与数据可视化功能,支持轮询和捕获两种数据采集方式,通过 Web 前端可随时随地评估网络与服务器状态,适用于从小型组织到大型企业的各类 IT 基础设施监控场景。
支持版本与生命周期
| 版本 | 发布日期 | 全面支持截止时间 | 有限支持截止时间 |
|---|---|---|---|
| Zabbix 7.4 | 2025 年 7 月 1 日 | 2026 年 1 月 1 日 | Q3 2026 |
| Zabbix 7.2 | 2024 年 12 月 10 日 | 2025 年 6 月 30 日 | 2025 年 12 月 31 日 |
| Zabbix 7.0 LTS | 2024 年 6 月 4 日 | 2027 年 6 月 30 日 | 2029 年 6 月 30 日 |
| Zabbix 6.0 LTS | 2022 年 2 月 8 日 | 2025 年 2 月 28 日 | 2027 年 2 月 28 日 |
- LTS 版本:开发周期 1.5 年,全面支持 3 年(功能更新 + 安全修复),有限支持 2 年(仅限高危修复),总计 5 年生命周期。
- 标准版本:开发周期 6 个月,全面支持 6 个月,有限支持至少 6 个月(至下一个标准版发布)。
核心架构组件
| 组件 | 功能描述 |
|---|---|
| Zabbix Server | 核心组件,接收 Agent 上报的可用性、完整性信息与统计指标,存储所有配置、统计及运行数据 |
| 数据库存储 | 存储所有配置信息及 Zabbix 收集的监控数据 |
| Web 界面 | 基于 Web 的访问入口,与 Server 关联,支持跨平台远程访问 |
| Proxy | 可选组件,代理 Server 收集数据,分担 Server 负载 |
| Agent | 部署在监控目标上,主动采集本地资源 / 应用数据并上报,分为 C 语言编写的轻量版 Agent 和 Go 语言编写的可扩展版 Agent2(Zabbix 4.4 + 支持) |
核心数据流逻辑
创建告警需遵循固定流程:创建主机 → 创建监控项 → 创建触发器 → 创建动作。例如,实现 “服务器 X CPU 负载过高告警” 需依次完成:主机条目配置 → CPU 监控项创建 → CPU 高负载触发器设置 → 邮件告警动作配置。
二、Zabbix 6.0 部署步骤(基于 LNMP 架构)
环境说明
| 主机名 | IP 地址 | 功能 | 系统环境 |
|---|---|---|---|
| zabbix-server | 192.168.108.50 | 安装 Zabbix 服务端(Nginx+MariaDB+PHP+Zabbix Server) | CentOS 7 |
| mysql001 | 192.168.108.51 | 被监控端(安装 Zabbix Agent2) | CentOS 7 |
第一步:部署 LNMP 基础环境(zabbix-server 节点)
1. 安装 Nginx
# 1. 创建 Nginx YUM 源
[root@zabbix-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
# 2. 安装并启动 Nginx
[root@zabbix-server ~]# yum install nginx -y
[root@zabbix-server ~]# systemctl start nginx
[root@zabbix-server ~]# systemctl enable nginx
# 3. 防火墙开放 HTTP 服务
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public --permanent
[root@zabbix-server ~]# firewall-cmd --reload
# 测试 Nginx:访问 http://192.168.108.50 出现 Nginx 欢迎页即为成功
2. 安装 MariaDB(Zabbix 6.0 需 10.5 + 版本)
# 1. 配置 MariaDB YUM 源
[root@zabbix-server ~]# 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
# 2. 安装并启动 MariaDB
[root@zabbix-server ~]# yum -y install mariadb-server mariadb
[root@zabbix-server ~]# systemctl enable mariadb --now
# 3. 初始化数据库(设置 root 密码)
[root@zabbix-server ~]# mysql
MariaDB [(none)]> DELETE FROM mysql.user WHERE User=''; # 删除空用户
MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED BY 'root123'; # 设置密码
MariaDB [(none)]> quit
# 4. 测试数据库连接
[root@zabbix-server ~]# mysql -uroot -proot123 # 成功登录即为正常
3. 安装并配置 PHP(需 7.2 + 版本)
# 1. 配置 EPEL 与 Webtatic 源
[root@zabbix-server ~]# yum install -y epel-release
[root@zabbix-server ~]# sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 2. 安装 PHP 及依赖模块
[root@zabbix-server ~]# yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath
# 3. 配置 PHP-FPM(修改运行用户为 nginx)
[root@zabbix-server ~]# vim /etc/php-fpm.d/www.conf
user = nginx # 第8行
group = nginx # 第10行
# 4. 配置 Nginx 支持 PHP
[root@zabbix-server ~]# vim /etc/nginx/conf.d/default.conf
# 第9行:添加 index.php 为首页
index index.php index.html index.htm;
# 解除 PHP 配置块注释并修改(第29-35行)
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 5. 优化 PHP 配置(满足 Zabbix 要求)
[root@zabbix-server ~]# vim /etc/php.ini
short_open_tag = On # 202行:支持短标签
expose_php = Off # 359行:隐藏版本
max_execution_time = 300 # 368行:最长执行时间
max_input_time = 300 # 378行:数据接收等待时间
memory_limit = 128M # 389行:脚本最大内存
post_max_size = 16M # 656行:POST 数据大小
upload_max_filesize = 2M # 799行:上传文件大小
always_populate_raw_post_data = -1 # 800行:新增配置
date.timezone = Asia/Shanghai # 877行:设置时区
# 6. 启动 PHP-FPM 并重启 Nginx
[root@zabbix-server ~]# systemctl enable php-fpm --now
[root@zabbix-server ~]# systemctl restart nginx
# 7. 测试 PHP 环境
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php phpinfo(); ?>
# 访问 http://192.168.108.50/info.php 显示 PHP 信息即为成功
# 8. 测试 PHP 连接数据库
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','root','root123');
if ($link) echo "PHP 连接数据库成功";
else echo "PHP 连接数据库失败";
?>
# 访问 http://192.168.108.50/info.php 显示“成功”即为正常
第二步:创建 Zabbix 数据库与账号
[root@zabbix-server ~]# mysql -uroot -proot123
# 创建 Zabbix 数据库(UTF-8 编码)
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
# 创建 Zabbix 数据库用户并授权
MariaDB [(none)]> GRANT all privileges ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
MariaDB [(none)]> GRANT all privileges ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit
# 测试 Zabbix 账号连接
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix','zabbix123');
if ($link) echo "Zabbix 数据库连接成功";
else echo "Zabbix 数据库连接失败";
?>
# 访问 http://192.168.108.50/info.php 显示“成功”即为正常
第三步:安装并配置 Zabbix Server
1. 导入 Zabbix 数据库脚本
# 假设 Zabbix 源码包已下载至 /root 目录(版本 6.0.6)
[root@zabbix-server ~]# tar zxvf zabbix-6.0.6.tar.gz
[root@zabbix-server ~]# cd /root/zabbix-6.0.6/database/mysql/
# 按顺序导入数据库脚本
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < schema.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < images.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < data.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < double.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < history_pk_prepare.sql
# 验证数据库表(应显示 178 张表)
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix -e "show tables;" | wc -l
2. 编译安装 Zabbix Server
# 安装依赖包
[root@zabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
# 创建 Zabbix 系统用户
[root@zabbix-server ~]# useradd -s /sbin/nologin -M zabbix
# 编译配置(指定系统配置目录与依赖)
[root@zabbix-server ~]# export CFLAGS="-std=gnu99" # 指定 C99 编译标准
[root@zabbix-server ~]# cd zabbix-6.0.6/
[root@zabbix-server zabbix-6.0.6]# ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre
# 编译安装
[root@zabbix-server zabbix-6.0.6]# make install
# 验证版本
[root@zabbix-server ~]# zabbix_server --version
3. 配置 Zabbix Server
# 1. 修改配置文件(指定日志路径与数据库密码)
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix_server.log # 38行:日志文件路径
DBPassword=zabbix123 # 123行:Zabbix 数据库密码
# 2. 创建日志文件并授权
[root@zabbix-server ~]# touch /var/log/zabbix_server.log
[root@zabbix-server ~]# chown zabbix.zabbix /var/log/zabbix_server.log
# 3. 创建 systemctl 服务文件
[root@zabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
# 4. 启动 Zabbix Server 并验证端口(默认 10051)
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# systemctl enable zabbix-server
[root@zabbix-server ~]# netstat -ntap | grep 10051 # 应显示 LISTEN 状态
4. 部署 Zabbix Web 前端
# 复制 Web 前端文件至 Nginx 站点目录
[root@zabbix-server ~]# cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
# 授权给 Nginx 用户
[root@zabbix-server ~]# chown -R nginx:nginx /usr/share/nginx/html/
第四步:Web 界面初始化配置
- 访问 http://192.168.108.50,选择语言 “中文(CN)”,点击 “下一步”。
- 完成 “必要条件检测”(全部通过后点击 “下一步”)。
- 配置数据库连接:
- 数据库类型:MySQL
- 数据库主机:localhost
- 数据库名称:zabbix
- 用户名:zabbix
- 密码:zabbix123
- 点击 “下一步”。
- 配置 Zabbix 服务器名称(默认即可),点击 “下一步”。
- 确认安装汇总信息,点击 “下一步”,完成安装。
- 登录:默认用户名 Admin,密码 zabbix。
第五步:部署被监控端(mysql001 节点)
1. 安装 Zabbix Agent2
# 1. 关闭防火墙与 SELinux
[root@mysql001 ~]# systemctl stop firewalld.service
[root@mysql001 ~]# systemctl disable firewalld.service
[root@mysql001 ~]# setenforce 0
[root@mysql001 ~]# hostnamectl set-hostname mysql001 # 设置主机名
# 2. 配置 Zabbix YUM 源
[root@mysql001 ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
[root@mysql001 ~]# yum clean all && yum makecache
# 3. 安装并启动 Zabbix Agent2
[root@mysql001 ~]# yum install zabbix-agent2 -y
[root@mysql001 ~]# systemctl enable zabbix-agent2 --now
2. 配置 Zabbix Agent2
[root@mysql001 ~]# vim /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid # 13行
LogFile=/var/log/zabbix/zabbix_agent2.log # 32行
LogFileSize=0 # 43行:日志不轮转
Server=192.168.108.50 # 82行:指向 Zabbix Server IP
ServerActive=192.168.108.50 # 135行:主动上报 Server IP
Hostname=mysql001 # 146行:与 Zabbix Server 配置的主机名一致
Include=/etc/zabbix/zabbix_agent2.d/*.conf # 283行:包含自定义配置
# 重启 Agent2
[root@mysql001 ~]# systemctl restart zabbix-agent2
[root@mysql001 ~]# netstat -ntap | grep 10050 # Agent 默认端口 10050
三、Zabbix 监控配置与告警设置
第一步:添加监控主机
- 登录 Zabbix Web 前端(http://192.168.108.50)。
- 导航至【配置】→【主机】→【创建主机】。
- 配置主机信息:
- 主机名称:mysql001(与 Agent2 配置的 Hostname 一致)。
- 主机群组:选择或创建自定义群组(如 “数据库服务器”)。
- Interfaces:点击 “添加”,类型选择 “客户端”,IP 填写 192.168.108.51,端口 10050。
- 关联模板:在 “模板” 标签页,搜索并添加 “Template DB MySQL” 模板。
- 点击 “添加” 完成主机配置,等待几分钟后,主机 “可用性” 显示绿色即为正常。
第二步:配置邮件告警(基于 QQ 邮箱)
1. 配置 Zabbix Server 邮件服务(mailx)
# 1. 安装 mailx
[root@zabbix-server ~]# yum install mailx -y
# 2. 配置 QQ 邮箱 SMTP
[root@zabbix-server ~]# vim /etc/mail.rc
# 在文件末尾添加以下内容
set from=6946630@qq.com # 发件人邮箱
set smtp=smtps://smtp.qq.com:465 # QQ 邮箱 SMTP 地址(SSL 端口 465)
set smtp-auth-user=6946630@qq.com # 邮箱账号
set smtp-auth-password=lmsbtquhuzhqcage # QQ 邮箱 SMTP 授权码(需在邮箱设置中开启)
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
# 3. 获取 QQ 邮箱 SSL 证书
[root@zabbix-server ~]# mkdir -p /root/.certs/
[root@zabbix-server ~]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
[root@zabbix-server ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@zabbix-server ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@zabbix-server ~]# cd /root/.certs/
[root@zabbix-server .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
# 4. 测试邮件发送
[root@zabbix-server ~]# mailx -s "Zabbix 邮件测试"123456@qq.com
这是 Zabbix 邮件告警测试
EOT # 输入完成后按 Ctrl+D 发送
# 登录 QQ 邮箱查看是否收到邮件
2. 配置 Zabbix 告警脚本
# 1. 指定告警脚本目录(修改 Zabbix Server 配置)
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts # 548行
# 2. 创建脚本目录并授权
[root@zabbix-server ~]# mkdir -p /usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# systemctl restart zabbix-server
# 3. 编写邮件发送脚本
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
# 接收 Zabbix 传递的参数:$1=收件人,$2=主题,$3=消息内容
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
# 4. 脚本授权
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
[root@zabbix-server ~]# touch /tmp/mailx.log
[root@zabbix-server ~]# chown zabbix.zabbix /tmp/mailx.log
# 5. 测试脚本
[root@zabbix-server ~]# /usr/lib/zabbix/alertscripts/mailx.sh123456@qq.com "脚本测试" "这是告警脚本测试邮件"
3. Zabbix Web 配置告警媒介
- 导航至【管理】→【报警媒介类型】→【创建媒体类型】。
- 配置媒体类型:
- 名称:mail-test(自定义)。
- 类型:脚本。
- 脚本名称:mailx.sh。
- 脚本参数:
- {ALERT.SENDTO}(收件人)
- {ALERT.SUBJECT}(主题)
- {ALERT.MESSAGE}(消息内容)
- 点击 “添加” 完成。
4. 配置用户告警媒介
- 导航至【管理】→【用户】,点击 Admin 用户。
- 切换至【报警媒介】标签页,点击 “添加”。
- 配置:
- 类型:选择上述创建的 mail-test。
- 收件人:填写接收告警的邮箱(如123456@qq.com)。
- 点击 “添加”,并点击页面底部 “更新”。
5. 配置告警动作
-
导航至【配置】→【动作】→【Trigger actions】,删除默认动作。
-
点击 “创建动作”,配置动作名称(如 “MySQL 告警动作”)。
-
配置触发条件:默认 “触发器值 = 问题”(可自定义,如仅监控 MySQL 相关触发器)。
-
配置操作(告警触发时):
-
点击 “添加”,在 “操作” 标签页设置:
-
主题:
{TRIGGER.STATUS}:{TRIGGER.NAME} -
消息内容:
告警主机:{HOST.NAME} 告警 IP:{HOST.IP} 告警时间:{EVENT.DATE}-{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME}:{ITEM.VALUE} 事件 ID:{EVENT.ID}
-
-
-
配置恢复操作(告警恢复时):
-
切换至【恢复操作】标签页,点击 “添加”:
-
主题:
恢复:{TRIGGER.STATUS}:{TRIGGER.NAME} -
消息内容:
plaintext
恢复主机:{HOST.NAME} 恢复 IP:{HOST.IP} 恢复时间:{EVENT.DATE}-{EVENT.TIME} 恢复等级:{TRIGGER.SEVERITY} 恢复信息:{TRIGGER.NAME}:{ITEM.VALUE} 恢复 ID:{EVENT.ID}
-
-
-
点击 “添加” 完成动作配置。
第三步:测试告警功能
# 在被监控端(mysql001)停止 MySQL 服务,触发告警
[root@mysql001 ~]# systemctl stop mariadb
-
等待 1-5 分钟后,Zabbix Web 前端【监测】→【仪表板】会显示告警。
-
接收告警邮件,主题类似 “PROBLEM: MySQL: Service is down”。
-
恢复 MySQL 服务后,会收到恢复邮件:
[root@mysql001 ~]# systemctl start mariadb
四、总结
本文详细介绍了 Zabbix 6.0 LTS 版本的核心特性、架构组成,并基于 CentOS 7 系统的 LNMP 架构完成了从服务端部署(Nginx+MariaDB+PHP+Zabbix Server)、被监控端 Agent2 安装,到 Web 界面配置、邮件告警设置的完整流程。关键要点包括:
- Zabbix 部署依赖 LNMP 环境,需严格匹配 PHP 版本(7.2+)、MariaDB 版本(10.5+)等依赖要求。
- 数据流逻辑与告警配置需遵循 “主机→监控项→触发器→动作” 的顺序,模板功能可简化配置。
- 邮件告警需完成 mailx 工具配置、告警脚本编写、Web 媒介与动作配置三步,QQ 邮箱需启用 SMTP 授权码并获取 SSL 证书。
- 被监控端 Agent2 需正确配置 Server/ServerActive 指向服务端 IP,确保端口 10050 通信正常。
更多推荐


所有评论(0)