文章目录
-
- [一、Zabbix 核心基础信息](#一、Zabbix 核心基础信息)
-
- [1. 关键资源](#1. 关键资源)
- [2. 主流版本支持周期(LTS 更稳定)](#2. 主流版本支持周期(LTS 更稳定))
- [3. 核心优势](#3. 核心优势)
- [二、Zabbix 架构核心组件](#二、Zabbix 架构核心组件)
- [三、环境准备与 LNMP 搭建](#三、环境准备与 LNMP 搭建)
-
- [1. 服务器规划](#1. 服务器规划)
- [2. 安装 Nginx](#2. 安装 Nginx)
- [3. 安装 MariaDB 10.6](#3. 安装 MariaDB 10.6)
- [4. 安装 PHP 7.2(Zabbix 6.0 兼容版本)](#4. 安装 PHP 7.2(Zabbix 6.0 兼容版本))
- [5. 配置 Nginx 支持 PHP](#5. 配置 Nginx 支持 PHP)
- [四、Zabbix Server 安装与配置](#四、Zabbix Server 安装与配置)
-
- [1. 创建 Zabbix 数据库](#1. 创建 Zabbix 数据库)
- [2. 导入 Zabbix 数据库脚本](#2. 导入 Zabbix 数据库脚本)
- [3. 编译安装 Zabbix Server](#3. 编译安装 Zabbix Server)
- [4. 配置 Zabbix Server](#4. 配置 Zabbix Server)
- [5. 配置 Systemd 服务](#5. 配置 Systemd 服务)
- [6. 部署 Zabbix 前端页面](#6. 部署 Zabbix 前端页面)
- [7. Web 界面初始化配置](#7. Web 界面初始化配置)
- [五、被监控端 Agent2 安装配置](#五、被监控端 Agent2 安装配置)
- [六、Zabbix 监控配置(Web 界面)](#六、Zabbix 监控配置(Web 界面))
-
- [1. 添加监控主机](#1. 添加监控主机)
- [七、邮件告警配置(QQ 邮箱为例)](#七、邮件告警配置(QQ 邮箱为例))
-
- [1. 获取 QQ 邮箱授权码](#1. 获取 QQ 邮箱授权码)
- [2. 配置 Zabbix Server 邮件服务](#2. 配置 Zabbix Server 邮件服务)
- [3. 编写 Zabbix 告警脚本](#3. 编写 Zabbix 告警脚本)
- [4. Zabbix 前端配置告警](#4. Zabbix 前端配置告警)
- [5. 测试告警](#5. 测试告警)
一、Zabbix 核心基础信息
1. 关键资源
- 官网:Zabbix 官方网站
- 部署手册:Zabbix 下载中心
- 开源协议:GPL v2(免费商用,源代码开放)
2. 主流版本支持周期(LTS 更稳定)
| 版本 | 发布日期 | 全面支持截止 | 有限支持截止 |
|---|---|---|---|
| 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 |
3. 核心优势
- 监控范围广:覆盖服务器、数据库、云平台、网站等
- 告警灵活:支持邮件、短信等多渠道告警
- 可视化强:自带报表和图表,支持容量规划
- 架构分布式:支持 Proxy 分担负载,适合大规模部署
二、Zabbix 架构核心组件
| 组件 | 核心作用 |
|---|---|
| Zabbix Server | 核心中枢,接收 Agent 数据、存储配置和统计信息 |
| 数据库存储 | 存储监控数据和配置信息(本文用 MariaDB 10.6) |
| Web 界面 | 基于浏览器的操作入口,管理监控配置和查看数据 |
| Zabbix Agent2 | 部署在被监控端,采集本地资源数据(Go 语言编写,支持插件扩展) |
| Zabbix Proxy | 可选组件,分担 Server 负载(大规模监控场景用) |
数据流逻辑
创建主机 → 配置监控项 → 设置触发器(阈值)→ 配置动作(告警),模板功能可大幅简化重复配置。
三、环境准备与 LNMP 搭建
1. 服务器规划
| 主机名 | IP 地址 | 角色 | 系统 |
|---|---|---|---|
| zabbix-server | 192.168.108.50 | 监控服务端(LNMP + Zabbix Server) | CentOS 7 |
| mysql001 | 192.168.108.51 | 被监控端(Agent2 + MySQL) | CentOS 7 |
2. 安装 Nginx
bash
# 配置 yum 源
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
# 开放防火墙 HTTP 端口
firewall-cmd --add-service=http --permanent && firewall-cmd --reload
测试:访问 http://192.168.108.50,出现 Nginx 欢迎页即为成功。
3. 安装 MariaDB 10.6
bash
# 配置 yum 源
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 install mariadb-server mariadb -y
systemctl start mariadb && systemctl enable mariadb
# 初始化数据库(设置 root 密码 root123)
mysql -e "DELETE FROM mysql.user WHERE User=''; ALTER USER root@localhost IDENTIFIED BY 'root123';"
4. 安装 PHP 7.2(Zabbix 6.0 兼容版本)
bash
# 配置 EPEL 和 Webtatic 源
yum install epel-release -y
sed -i "s/#baseurl/baseurl/g; s/metalink/#metalink/g; s@download.*pub@repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装 PHP 及依赖
yum install php72w php72w-cli php72w-fpm php72w-mysqlnd php72w-gd php72w-mbstring php72w-ldap -y
# 关键配置(/etc/php.ini)
sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 300/" /etc/php.ini
sed -i "s/max_input_time = 60/max_input_time = 300/" /etc/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 128M/" /etc/php.ini
sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/" /etc/php.ini
echo "always_populate_raw_post_data = -1" >> /etc/php.ini
# 配置 PHP-FPM 运行用户为 nginx
sed -i "s/user = apache/user = nginx/" /etc/php-fpm.d/www.conf
sed -i "s/group = apache/group = nginx/" /etc/php-fpm.d/www.conf
# 启动 PHP-FPM
systemctl start php-fpm && systemctl enable php-fpm
5. 配置 Nginx 支持 PHP
修改 /etc/nginx/conf.d/default.conf:
nginx
index index.php index.html index.htm; # 添加 index.php
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;
}
重启 Nginx:systemctl restart nginx
测试 PHP:创建 /usr/share/nginx/html/info.php,写入 <?php phpinfo(); ?>,访问 http://192.168.108.50/info.php 能看到 PHP 信息即可。
四、Zabbix Server 安装与配置
1. 创建 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
2. 导入 Zabbix 数据库脚本
bash
# 下载并解压 Zabbix 安装包(官网下载 zabbix-6.0.6.tar.gz)
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
3. 编译安装 Zabbix Server
bash
# 安装依赖
yum install -y mysql-devel pcre-devel openssl-devel net-snmp-devel libcurl-devel gcc gcc-c++ make
# 创建 Zabbix 系统用户
useradd -s /sbin/nologin -M zabbix
# 编译配置
cd ../../
export CFLAGS="-std=gnu99"
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libcurl
# 编译安装
make install
4. 配置 Zabbix Server
修改 /etc/zabbix/zabbix_server.conf:
conf
LogFile=/var/log/zabbix_server.log
DBPassword=zabbix123 # 数据库密码
创建日志文件并授权:
bash
touch /var/log/zabbix_server.log
chown zabbix:zabbix /var/log/zabbix_server.log
5. 配置 Systemd 服务
bash
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server
After=syslog.target network.target mariadb.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server
User=zabbix
[Install]
WantedBy=multi-user.target
EOF
# 启动 Zabbix Server
systemctl start zabbix-server && systemctl enable zabbix-server
# 验证端口(默认 10051)
netstat -ntap | grep 10051
6. 部署 Zabbix 前端页面
bash
# 复制前端文件到 Nginx 根目录
cp -r zabbix-6.0.6/ui/* /usr/share/nginx/html/
chown -R nginx:nginx /usr/share/nginx/html/
7. Web 界面初始化配置
访问 http://192.168.108.50,按引导完成配置:
- 语言选择中文,检查依赖(全部 OK 下一步)
- 数据库配置:类型 MySQL,库名 zabbix,用户名 zabbix,密码 zabbix123
- 确认配置,完成安装
- 初始登录:用户名
Admin,密码zabbix
五、被监控端 Agent2 安装配置
以 mysql001 为例:
bash
# 配置 Zabbix yum 源
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
# 修改配置文件 /etc/zabbix/zabbix_agent2.conf
sed -i "s/Server=127.0.0.1/Server=192.168.108.50/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/ServerActive=127.0.0.1/ServerActive=192.168.108.50/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/Hostname=Zabbix server/Hostname=mysql001/" /etc/zabbix/zabbix_agent2.conf
# 启动 Agent2
systemctl start zabbix-agent2 && systemctl enable zabbix-agent2
# 关闭防火墙(或开放 10050 端口)
systemctl stop firewalld && setenforce 0
六、Zabbix 监控配置(Web 界面)
1. 添加监控主机
- 登录 Zabbix 前端 → 配置 → 主机 → 创建主机
- 主机名称:mysql001(与 Agent2 配置一致)
- 群组:选择 Linux 服务器(或自定义)
- 接口:添加 → 客户端 → 端口 10050
- 模板:搜索并添加
Template OS Linux(系统默认模板) - 点击更新,等待 1-2 分钟,主机可用性显示绿色即为正常
七、邮件告警配置(QQ 邮箱为例)
1. 获取 QQ 邮箱授权码
- 登录 QQ 邮箱 → 设置 → 账号 → 开启 POP3/SMTP 服务
- 生成授权码(如:lmsbtquhuzhqcage,保存备用)
2. 配置 Zabbix Server 邮件服务
bash
# 安装 mailx
yum install mailx -y
# 配置 /etc/mail.rc
cat >> /etc/mail.rc << EOF
set from=6946630@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=6946630@qq.com
set smtp-auth-password=lmsbtquhuzhqcage # 替换为你的授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF
# 测试邮件发送
echo "Zabbix 测试邮件" | mailx -s "测试" 6946630@qq.com
收到邮件说明配置成功。
3. 编写 Zabbix 告警脚本
bash
# 创建脚本目录(与 zabbix_server.conf 一致)
mkdir -p /usr/lib/zabbix/alertscripts
chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
# 编写脚本 mailx.sh
cat > /usr/lib/zabbix/alertscripts/mailx.sh << EOF
#!/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
EOF
# 授权
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
touch /tmp/mailx.log && chown zabbix:zabbix /tmp/mailx.log
4. Zabbix 前端配置告警
-
创建报警媒介类型:管理 → 报警媒介类型 → 创建媒体类型
- 名称:mail-test
- 类型:脚本
- 脚本名称:mailx.sh
- 脚本参数:
{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
-
配置用户告警媒介:管理 → 用户 → Admin → 报警媒介 → 添加
- 类型:mail-test
- 收件人:你的 QQ 邮箱
-
创建触发器动作:配置 → 动作 → 创建动作
-
触发条件:主机 = mysql001
-
操作主题:
{TRIGGER.STATUS}:{TRIGGER.NAME} -
操作消息:
plaintext
plaintext告警主机:{HOST.NAME} 告警IP:{HOST.IP} 告警时间:{EVENT.DATE}-{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME}:{ITEM.VALUE} -
恢复操作:同理配置恢复通知
-
5. 测试告警
在被监控端执行 systemctl stop mysqld,等待 1-2 分钟,查看 QQ 邮箱是否收到告警邮件;重启 mysqld 后查看恢复邮件。