Zabbix部署与实践指南
一、Zabbix概述与架构
Zabbix是由Alexei Vladishev创建,并由Zabbix SIA持续维护的企业级分布式监控解决方案。该软件专用于监控网络参数、服务器、虚拟机、应用程序、服务、数据库、网站及云平台等各类资源的健康状态与完整性。Zabbix提供灵活的告警机制,支持基于邮件的告警配置,便于快速响应故障。同时,其出色的报表与数据可视化功能也为容量规划提供了有力支持。
Zabbix支持轮询(Polling)和捕获(Trapping)两种数据采集方式,所有配置、报表及统计信息均可通过Web前端进行访问。Zabbix基于GNU通用公共许可证第2版发布,完全免费且开源,适用于从中小型组织到大型企业的各类IT基础设施监控场景。
Zabbix架构主要由以下核心组件构成:
- Zabbix Server:核心组件,负责接收Agent上报的数据,存储配置信息、监控数据与历史记录。
- Database Storage:用于存储所有配置信息及Zabbix收集的数据,支持MySQL、PostgreSQL等数据库。
- Web Interface:基于Web的管理界面,通常与Server部署在同一台服务器上,支持跨平台访问。
- Zabbix Proxy:可选组件,可用于分布式监控环境中代理数据收集,减轻Server负载。
- Zabbix Agent :部署在监控目标上,用于采集本地指标数据。自Zabbix 4.4起提供两种Agent:
- Zabbix Agent(C语言编写,轻量级,跨平台)
- Zabbix Agent2(Go语言编写,支持插件扩展,灵活性更高)
数据在Zabbix中的流动遵循"主机 → 监控项 → 触发器 → 动作"的层次结构,这种设计使得监控配置既灵活又可模板化,大幅提升部署效率。

二、Zabbix版本生命周期说明
Zabbix提供两种版本类型:长期支持版本(LTS)和标准版本。
长期支持版本(LTS)生命周期:
- 开发周期:约1.5年
- 全面支持期:3年(提供功能更新与安全修复)
- 有限支持期:2年(仅提供高危安全修复)
标准版本生命周期:
- 开发周期:6个月
- 全面支持期:6个月
- 有限支持期:至少6个月(直至下一标准版发布)
目前Zabbix官方支持的版本及其支持时间如下:
| 版本 | 发布日期 | 全面支持截止 | 有限支持截止 |
|---|---|---|---|
| Zabbix 7.4 | 2025-07-01 | 2026-01-01 | Q3 2026 |
| Zabbix 7.2 | 2024-12-10 | 2025-06-30 | 2025-12-31 |
| Zabbix 7.0 LTS | 2024-06-04 | 2027-06-30 | 2029-06-30 |
| Zabbix 6.0 LTS | 2022-02-08 | 2025-02-28 | 2027-02-28 |
三、Zabbix Server部署实战(基于LNMP环境)
环境说明
- 主机名:zabbix-server
- IP地址:192.168.108.50
- 操作系统:CentOS 7
- 架构:LNMP(Linux + Nginx + MariaDB + PHP)
1. 安装Nginx
bash
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/\$basearch/
enabled=1
gpgcheck=0
EOF
yum install nginx -y
systemctl start nginx
systemctl enable nginx
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
访问 http://192.168.108.50 确认Nginx已正常运行。

2. 安装MariaDB 10.5+
Zabbix 6.0要求MariaDB版本不低于10.5。
bash
cat > /etc/yum.repos.d/mariadb.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled = 1
gpgcheck = 0
EOF
yum -y install mariadb-server mariadb
systemctl enable mariadb --now
mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "ALTER USER root@localhost IDENTIFIED BY 'root123';"
测试数据库连接:
bash
mysql -uroot -proot123
3. 安装PHP 7.2
bash
yum -y install epel-release
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
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
4. 配置Nginx支持PHP
编辑PHP-FPM配置文件:
bash
vim /etc/php-fpm.d/www.conf
# 修改以下两行:
user = nginx
group = nginx
编辑Nginx默认站点配置:
bash
vim /etc/nginx/conf.d/default.conf
# 在server段中添加:
index index.php index.html index.htm;
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配置参数
bash
vim /etc/php.ini
# 修改以下参数:
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai
启动PHP-FPM并重启Nginx:
bash
systemctl enable php-fpm --now
systemctl restart nginx
创建PHP测试页面:
bash
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
访问 http://192.168.108.50/info.php 确认PHP运行正常。

6. 创建Zabbix数据库与用户
bash
mysql -uroot -proot123 <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
FLUSH PRIVILEGES;
EOF
测试Zabbix用户连接:
php
<?php
$link = mysqli_connect('127.0.0.1', 'zabbix', 'zabbix123');
if ($link) echo "Zabbix数据库连接成功";
else echo "Zabbix数据库连接失败";
?>

7. 导入Zabbix数据库结构
bash
tar zxvf zabbix-6.0.6.tar.gz
cd zabbix-6.0.6/database/mysql/
mysql -uroot -proot123 zabbix < schema.sql
mysql -uroot -proot123 zabbix < images.sql
mysql -uroot -proot123 zabbix < data.sql
mysql -uroot -proot123 zabbix < double.sql
mysql -uroot -proot123 zabbix < history_pk_prepare.sql
验证表是否导入成功:
bash
mysql -uroot -proot123 -e "use zabbix; show tables;"
8. 编译安装Zabbix Server
bash
yum install -y mysql-devel pcre-devel openssl-devel libxml2-devel \
net-snmp-devel libssh2-devel openipmi-devel libevent-devel \
openldap-devel libcurl-devel fping gcc gcc-c++ make
useradd -s /sbin/nologin -M zabbix
export CFLAGS="-std=gnu99"
cd 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
make install
9. 配置与启动Zabbix Server
编辑配置文件:
bash
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix-server.log
DBPassword=zabbix123
创建日志文件并设置权限:
bash
touch /var/log/zabbix-server.log
chown zabbix:zabbix /var/log/zabbix-server.log
创建Systemd服务文件:
bash
cat > /usr/lib/systemd/system/zabbix-server.service <<EOF
[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
EOF
systemctl start zabbix-server
systemctl enable zabbix-server
netstat -ntap | grep 10051
10. 部署Zabbix Web前端
bash
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/
访问 http://192.168.108.50 进入Zabbix安装向导。


按照向导提示完成配置:
- 检查前提条件
- 配置数据库连接(类型选择MySQL,输入数据库信息)
- 设置Zabbix Server详细信息
- 确认安装配置
- 完成安装
安装完成后,使用默认账号登录:
- 用户名:Admin
- 密码:zabbix

四、Zabbix Agent部署与主机监控
1. 被监控端环境准备
- 主机名:mysql001
- IP地址:192.168.108.51
- 操作系统:CentOS 7
bash
systemctl stop firewalld
setenforce 0
hostnamectl set-hostname mysql001
2. 安装Zabbix Agent2
bash
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install zabbix-agent2 -y
systemctl enable zabbix-agent2 --now
3. 配置Agent2
bash
vim /etc/zabbix/zabbix_agent2.conf
# 修改以下参数:
Server=192.168.108.50
ServerActive=192.168.108.50
Hostname=mysql001
重启Agent服务:
bash
systemctl restart zabbix-agent2
4. 在Zabbix Web中添加主机
- 登录Zabbix Web界面
- 进入 配置 → 主机 → 创建主机
- 填写主机信息:
- 主机名称:mysql001
- 可见名称:mysql001
- 群组:选择或创建群组(如Linux servers)
- 添加接口:
- IP地址:192.168.108.51
- 端口:10050
- 关联模板(如Template OS Linux by Zabbix agent)
- 保存配置
稍等片刻,主机可用性将显示为绿色,表示监控已生效。

五、邮件告警配置实战
1. 在Zabbix Server上配置邮件发送环境
安装mailx工具:
bash
yum install mailx -y
配置mailx(以QQ邮箱为例):
bash
vim /etc/mail.rc
# 在文件末尾添加:
set from=<个人qq邮箱>
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=<个人qq邮箱>
set smtp-auth-password=lnsbtyuhuzhqcage
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
创建证书目录并下载QQ邮箱SSL证书:
bash
mkdir -p /root/.certs/
echo -n | openssl s_client --connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
测试邮件发送:
bash
echo "测试邮件正文" | mailx -s "邮箱测试" <个人qq邮箱>
2. 配置Zabbix告警脚本
创建告警脚本目录:
bash
vim /etc/zabbix/zabbix_server.conf
# 确保以下配置存在:
AlertScriptsPath=/usr/lib/zabbix/alertscripts
mkdir -p /usr/lib/zabbix/alertscripts
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
systemctl restart zabbix-server
编写邮件发送脚本:
bash
vim /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
#send mail
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
touch /tmp/mailx.log
chown zabbix:zabbix /tmp/mailx.log
测试脚本:
bash
cd /usr/lib/zabbix/alertscripts/
./mailx.sh <个人qq邮箱> "测试主题" "测试消息内容"
3. 配置Zabbix告警媒介
- 进入 管理 → 报警媒介类型 → 创建媒体类型
- 填写信息:
- 名称:Mail-Test
- 类型:脚本
- 脚本名称:mailx.sh
- 脚本参数:
{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
- 保存配置
4. 为用户配置告警媒介
- 进入 管理 → 用户 → Admin(点击用户名)
- 切换到 报警媒介 标签页
- 点击 添加
- 选择类型:Mail-Test
- 收件人:填写接收告警的邮箱地址
- 保存并更新用户信息
5. 创建告警动作
- 进入 配置 → 动作 → Trigger actions
- 删除默认动作(可选),点击 创建动作
- 填写动作名称,如:Send email on problem
- 条件配置(示例:触发器状态=问题)
- 操作配置:
- 步骤持续时间:0
- 操作类型:发送消息
- 发送到用户:选择Admin
- 仅送到:Mail-Test
- 定义消息内容:
问题通知消息:
主题:{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}
消息:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
- 保存动作配置
6. 测试告警功能
在被监控主机上停止MySQL服务以触发告警:
bash
systemctl stop mysqld
等待几分钟后,配置的邮箱将收到告警邮件。恢复服务后,也会收到恢复通知邮件。
六、监控仪表盘与日常管理
Zabbix提供丰富的仪表盘功能,可自定义监控视图。登录后默认显示的系统仪表盘已包含主机可用性、最新问题、系统状态等关键信息。通过 监测 → 仪表盘 可创建个性化监控面板,添加图形、聚合图形、最新数据等各类组件。
对于MySQL数据库监控,可导入或创建专门的数据库监控模板,监控连接数、查询性能、缓冲池使用率等关键指标。
总结
本文详细介绍了Zabbix监控平台的架构、部署流程、Agent配置、邮件告警集成等核心内容。Zabbix作为成熟的企业级监控解决方案,其灵活的架构和丰富的功能可满足不同规模的监控需求。通过合理的配置与模板化部署,能够快速构建起覆盖服务器、应用、服务、网络等全方位的监控体系。
实际部署中需注意版本兼容性、数据库性能优化、告警策略细化等环节。Zabbix社区活跃,文档齐全,遇到问题时可通过官方文档或社区论坛获取支持。随着监控规模的扩大,可进一步探索Zabbix Proxy分布式部署、API自动化集成、自定义监控项等高级功能,以提升监控系统的可扩展性与自动化水平。