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 界面初始化配置

  1. 访问 http://192.168.108.50,选择语言 “中文(CN)”,点击 “下一步”。
  2. 完成 “必要条件检测”(全部通过后点击 “下一步”)。
  3. 配置数据库连接:
    • 数据库类型:MySQL
    • 数据库主机:localhost
    • 数据库名称:zabbix
    • 用户名:zabbix
    • 密码:zabbix123
    • 点击 “下一步”。
  4. 配置 Zabbix 服务器名称(默认即可),点击 “下一步”。
  5. 确认安装汇总信息,点击 “下一步”,完成安装。
  6. 登录:默认用户名 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 监控配置与告警设置

第一步:添加监控主机

  1. 登录 Zabbix Web 前端(http://192.168.108.50)。
  2. 导航至【配置】→【主机】→【创建主机】。
  3. 配置主机信息:
    • 主机名称:mysql001(与 Agent2 配置的 Hostname 一致)。
    • 主机群组:选择或创建自定义群组(如 “数据库服务器”)。
    • Interfaces:点击 “添加”,类型选择 “客户端”,IP 填写 192.168.108.51,端口 10050。
  4. 关联模板:在 “模板” 标签页,搜索并添加 “Template DB MySQL” 模板。
  5. 点击 “添加” 完成主机配置,等待几分钟后,主机 “可用性” 显示绿色即为正常。

第二步:配置邮件告警(基于 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 配置告警媒介
  1. 导航至【管理】→【报警媒介类型】→【创建媒体类型】。
  2. 配置媒体类型:
    • 名称:mail-test(自定义)。
    • 类型:脚本。
    • 脚本名称:mailx.sh。
    • 脚本参数:
      1. {ALERT.SENDTO}(收件人)
      2. {ALERT.SUBJECT}(主题)
      3. {ALERT.MESSAGE}(消息内容)
  3. 点击 “添加” 完成。
4. 配置用户告警媒介
  1. 导航至【管理】→【用户】,点击 Admin 用户。
  2. 切换至【报警媒介】标签页,点击 “添加”。
  3. 配置:
    • 类型:选择上述创建的 mail-test。
    • 收件人:填写接收告警的邮箱(如123456@qq.com)。
  4. 点击 “添加”,并点击页面底部 “更新”。
5. 配置告警动作
  1. 导航至【配置】→【动作】→【Trigger actions】,删除默认动作。

  2. 点击 “创建动作”,配置动作名称(如 “MySQL 告警动作”)。

  3. 配置触发条件:默认 “触发器值 = 问题”(可自定义,如仅监控 MySQL 相关触发器)。

  4. 配置操作(告警触发时):

    • 点击 “添加”,在 “操作” 标签页设置:

      • 主题:{TRIGGER.STATUS}:{TRIGGER.NAME}

      • 消息内容:

        告警主机:{HOST.NAME}
        告警 IP:{HOST.IP}
        告警时间:{EVENT.DATE}-{EVENT.TIME}
        告警等级:{TRIGGER.SEVERITY}
        告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
        事件 ID:{EVENT.ID}
        
  5. 配置恢复操作(告警恢复时):

    • 切换至【恢复操作】标签页,点击 “添加”:

      • 主题:恢复:{TRIGGER.STATUS}:{TRIGGER.NAME}

      • 消息内容:

        plaintext

        恢复主机:{HOST.NAME}
        恢复 IP:{HOST.IP}
        恢复时间:{EVENT.DATE}-{EVENT.TIME}
        恢复等级:{TRIGGER.SEVERITY}
        恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
        恢复 ID:{EVENT.ID}
        
  6. 点击 “添加” 完成动作配置。

第三步:测试告警功能

# 在被监控端(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 界面配置、邮件告警设置的完整流程。关键要点包括:

  1. Zabbix 部署依赖 LNMP 环境,需严格匹配 PHP 版本(7.2+)、MariaDB 版本(10.5+)等依赖要求。
  2. 数据流逻辑与告警配置需遵循 “主机→监控项→触发器→动作” 的顺序,模板功能可简化配置。
  3. 邮件告警需完成 mailx 工具配置、告警脚本编写、Web 媒介与动作配置三步,QQ 邮箱需启用 SMTP 授权码并获取 SSL 证书。
  4. 被监控端 Agent2 需正确配置 Server/ServerActive 指向服务端 IP,确保端口 10050 通信正常。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐