企业级开源监控解决方案:Zabbix 6.0 部署与配置全流程详解

从零搭建企业级 Zabbix 6.0 监控系统(LNMP + MariaDB + Agent2 + 邮件告警)

本文基于 CentOS 7 环境,使用 Zabbix 6.0.6 + Nginx + PHP + MariaDB 10.6 + Zabbix Agent2,完整演示:

  • LNMP 环境搭建
  • Zabbix Server 源码编译安装
  • 被监控主机接入
  • MySQL 监控
  • 邮件告警全流程

一、Zabbix 是什么?

Zabbix 是一款企业级开源分布式监控解决方案,由 Alexei Vladishev 创建,目前由 Zabbix SIA 维护。

它不仅可以监控:

  • 服务器(CPU / 内存 / 磁盘 / 网络 / 进程)
  • 网络设备(交换机、路由器、防火墙,通过 SNMP)
  • 数据库(MySQL / PostgreSQL / Oracle)
  • 中间件(Redis / Kafka / Tomcat)
  • 容器与云平台(Docker / K8s / 阿里云 / AWS)
  • 业务指标(订单量、接口成功率等)

还具备:

✅ 灵活告警(邮件 / 脚本 / 自愈)

✅ 图形化展示

✅ 容量规划与趋势分析

✅ 支持大规模分布式部署(Proxy)

License:GPL v2,完全免费。


二、Zabbix 核心组件

组件 作用
Zabbix Server 大脑:采集、处理、存储、告警、调度
Zabbix Agent / Agent2 被监控端数据采集
Zabbix Proxy 分布式代理,不存数据,只转发
Database 存配置、历史、趋势(MySQL/MariaDB/PG)
Web 前端 PHP 写的管理界面
Sender / Get 手动推数据 / 调试工具

核心概念

  • Item(监控项):CPU 使用率、内存占用等
  • Trigger(触发器):如 CPU > 90% 持续 5 分钟
  • Action(动作):发邮件、执行脚本
  • Template(模板):批量监控配置
  • Host(主机):被监控设备
  • 主动 / 被动模式
    • 主动:Agent → Server
    • 被动:Server → Agent(默认)

三、环境规划

主机名 IP 角色
zabbix-server 192.168.108.50 Zabbix Server + Web
mysql001 192.168.108.51 被监控主机(MySQL)

四、搭建 LNMP 环境

1️⃣ 安装 Nginx

bash

bash 复制代码
vim /etc/yum.repos.d/nginx.repo

ini

bash 复制代码
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0

bash

bash 复制代码
yum install nginx -y
systemctl start nginx
systemctl enable nginx

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

2️⃣ 安装 MariaDB 10.6

⚠️ Zabbix 6.0 不支持低版本 MySQL/MariaDB

bash

bash 复制代码
vim /etc/yum.repos.d/mariadb.repo

ini

bash 复制代码
[mariadb]
name=MariaDB
baseurl=https://mirrors.aliyun.com/mariadb/yum/10.6/rhel7-amd64/
enabled=1
gpgcheck=0

bash

bash 复制代码
yum -y install mariadb-server mariadb
systemctl enable mariadb --now

初始化密码:

sql

bash 复制代码
DELETE FROM mysql.user WHERE User='';
ALTER USER root@localhost IDENTIFIED BY 'root123';

3️⃣ 安装 PHP(PHP 7.2)

bash

bash 复制代码
yum -y install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

yum -y install php72w php72w-fpm php72w-mysqlnd \
php72w-gd php72w-mbstring php72w-ldap php72w-bcmath
PHP 关键配置

ini

bash 复制代码
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
date.timezone = Asia/Shanghai

bash

bash 复制代码
systemctl enable php-fpm --now
systemctl restart nginx

五、Nginx 支持 PHP

nginx

bash 复制代码
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;
}

测试:

php

bash 复制代码
<?php phpinfo(); ?>

六、创建 Zabbix 数据库

sql

bash 复制代码
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;

七、源码安装 Zabbix Server

1️⃣ 安装依赖

bash

bash 复制代码
yum install -y mysql-devel pcre-devel openssl-devel \
net-snmp-devel libxml2-devel libevent-devel \
openldap-devel libcurl-devel fping gcc gcc-c++ make

bash

bash 复制代码
useradd -s /sbin/nologin -M zabbix
export CFLAGS="-std=gnu99"

2️⃣ 编译安装

bash

bash 复制代码
tar zxvf zabbix-6.0.6.tar.gz
cd zabbix-6.0.6

./configure \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-openssl \
--with-ldap \
--with-libcurl

make install

3️⃣ 导入数据库

bash

bash 复制代码
cd 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

4️⃣ 配置 Server

conf

bash 复制代码
LogFile=/var/log/zabbix_server.log
DBPassword=zabbix123

bash

bash 复制代码
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log
systemd 管理

ini

bash 复制代码
[Unit]
Description=Zabbix Server
After=network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target

bash

bash 复制代码
systemctl start zabbix-server
netstat -ntap | grep 10051

八、部署 Zabbix 前端

bash

bash 复制代码
cp -r zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/
systemctl restart nginx

浏览器访问:

纯文本

bash 复制代码
http://192.168.108.50

默认账号:

  • 用户名:Admin
  • 密码:zabbix

九、被监控端(Agent2)

bash

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

conf

bash 复制代码
Server=192.168.108.50
ServerActive=192.168.108.50
Hostname=mysql001

bash

bash 复制代码
systemctl enable zabbix-agent2 --now

十、Zabbix 监控 MySQL

步骤:

  1. 配置 → 主机 → 创建主机
  2. 群组:MySQL
  3. 模板:MySQL by Zabbix agent2
  4. 宏:
    • {$MYSQL.DSN} = 127.0.0.1
    • {$MYSQL.USER} = root
    • {$MYSQL.PASSWORD} = root123
  5. 接口:Agent,端口 10050

✅ 停止 MySQL:

bash

bash 复制代码
systemctl stop mysqld

→ Zabbix 立刻产生告警

→ 启动后自动恢复


十一、配置邮件告警(QQ 邮箱)

1️⃣ 安装 mailx

bash

bash 复制代码
yum install mailx -y

2️⃣ 配置 /etc/mail.rc

ini

bash 复制代码
set from=6946630@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=6946630@qq.com
set smtp-auth-password=邮箱授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

3️⃣ 获取 QQ 邮箱证书

bash

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

十二、Zabbix 报警脚本

bash

bash 复制代码
mkdir -p /usr/lib/zabbix/alertscripts
vim /usr/lib/zabbix/alertscripts/mailx.sh

bash

bash 复制代码
#!/bin/bash
message=$(echo $3 | tr '\r\n' '\n')
subject=$(echo $2 | tr '\r\n' '\n')
echo "$message" | mail -s "$subject" $1

bash

bash 复制代码
chmod +x mailx.sh
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts

十三、Zabbix 告警配置

1️⃣ 报警媒介类型

  • 类型:脚本
  • 参数:
    • {ALERT.SENDTO}
    • {ALERT.SUBJECT}
    • {ALERT.MESSAGE}

2️⃣ 用户绑定邮箱

复制代码
Admin → 报警媒介 → 添加邮箱

3️⃣ 动作(Trigger actions)

告警消息:

text

text 复制代码
告警主机:{HOST.NAME}
告警IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME} : {ITEM.VALUE}

恢复消息:

text

text 复制代码
恢复主机:{HOST.NAME}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复信息:{TRIGGER.NAME} : {ITEM.VALUE}

十四、最终效果

✅ MySQL 停止 → 仪表盘变红

✅ 邮箱收到告警

✅ MySQL 启动 → 恢复邮件到达

✅ 系统资源、连接数、查询量全可视化

相关推荐
不是万能的豆学长1 小时前
开发者分化与开源生态观察
开源
Flynt1 小时前
开源"间谍卫星"说数据全是真的,我把它的免key数据源挨个试了一遍
前端·开源·数据可视化
冬奇Lab2 小时前
开源项目第235期:REA — 让 AI Agent 逆向任何东西,从网站/Electron 应用一路分析到二进制层
人工智能·开源·资讯
阿里云云原生6 小时前
HiRoute 开源:让 Agent 更能干,让模型订阅更耐用
开源
分布式存储与RustFS6 小时前
rclone 与 mc mirror:S3 对象存储同步,限速、过滤、断点续传实测对比
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
小弥儿8 小时前
GitHub今日热榜 | 2026-10-12:pytorch 上升四位
人工智能·pytorch·学习·开源·github
TTATTC9 小时前
Android 浏览器死活不弹证书框的那天,我用 .NET MAUI 给 WebView 写了一个 mTLS 拦截器
docker·开源
魔众9 小时前
1GB 显存跑声音克隆,LuxTTS 上了 AIGCPanel
开源
TTATTC9 小时前
百万行 Trace 交给 AI,方向和验证留给人,一套还原自定义 VMP 保护的分工方法
docker·开源