Zabbix 监控系统搭建及邮件报警详细教程
第一部分:环境准备
1.1 系统要求
- 操作系统:CentOS 7/8 或 Ubuntu 18.04/20.04
- 硬件配置:至少2核CPU,4GB内存,20GB硬盘
- 网络要求:能访问外网下载软件包
1.2 环境说明
本教程以 CentOS 7 为例:
- Zabbix版本:5.0 LTS
- 数据库:MySQL 8.0
- Web服务器:Apache
- 邮件服务:使用QQ邮箱SMTP服务
第二部分:安装Zabbix服务器
2.1 配置主机名和hosts
# 设置主机名
hostnamectl set-hostname zabbix-server
# 编辑hosts文件
vi /etc/hosts
# 添加以下内容
192.168.1.100 zabbix-server
2.2 关闭防火墙和SELinux
# 临时关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
2.3 安装Zabbix仓库
# 安装必要的工具
yum install -y wget vim net-tools
# 下载Zabbix仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 清理并重建缓存
yum clean all
yum makecache
第三部分:安装和配置MySQL数据库
3.1 安装MySQL 8.0
# 下载MySQL仓库
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL
yum install -y mysql-server mysql-client
# 启动MySQL
systemctl start mysqld
systemctl enable mysqld
3.2 配置MySQL
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 运行安全配置
mysql_secure_installation
# 登录MySQL
mysql -u root -p
# 创建Zabbix数据库和用户
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@2023';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
第四部分:安装Zabbix Server
4.1 安装Zabbix组件
# 安装Zabbix Server、Web前端和Agent
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
# 导入数据库schema
cd /usr/share/doc/zabbix-server-mysql*/
gunzip create.sql.gz
mysql -uzabbix -pZabbix@2023 zabbix < create.sql
4.2 配置Zabbix Server
# 编辑Zabbix Server配置文件
vi /etc/zabbix/zabbix_server.conf
# 修改以下内容:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@2023
# 其他保持默认
4.3 配置PHP时区
# 编辑PHP配置文件
vi /etc/httpd/conf.d/zabbix.conf
# 找到并修改(大约在第20行):
php_value date.timezone Asia/Shanghai
4.4 启动服务
# 启动Apache和Zabbix服务
systemctl restart httpd
systemctl start zabbix-server
systemctl start zabbix-agent
# 设置开机自启
systemctl enable httpd
systemctl enable zabbix-server
systemctl enable zabbix-agent
第五部分:Web界面安装配置
5.1 访问Web安装界面
打开浏览器访问:
http://服务器IP/zabbix
点击"Next step"开始安装
5.2 安装步骤
检查前提条件:确保所有项目都是"OK"
配置数据库连接:
- Database type: MySQL
- Database host: localhost
- Database port: 3306
- Database name: zabbix
- User: zabbix
- Password: Zabbix@2023
配置服务器信息:
- Server name: Zabbix Server
- Default timezone: Asia/Shanghai
- Theme: 默认
安装完成:显示配置摘要,确认无误后完成安装
登录:默认用户Admin,密码zabbix
第六部分:配置邮件报警
6.1 安装邮件发送工具
# 安装mailx
yum install -y mailx
# 配置mailx使用SMTP
vi /etc/mail.rc
# 在文件末尾添加(以QQ邮箱为例):
set from=your_email@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=your_email@qq.com
set smtp-auth-password=your_auth_code # 这里是授权码,不是QQ密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
6.2 测试邮件发送
echo "Test email from Zabbix" | mail -s "Zabbix Test" recipient@example.com
6.3 Zabbix Web配置媒体类型
登录Zabbix Web界面
进入
管理 → 媒体类型
点击右上角
创建媒体类型
配置如下:
名称:Email Alert
类型:Email
SMTP服务器:smtp.qq.com
SMTP服务器端口:465
SMTP HELO:qq.com
SMTP电邮:your_email@qq.com
连接安全:SSL/TLS
认证:用户名和密码
用户名:your_email@qq.com
密码:授权码
6.4 配置报警脚本(可选方法)
# 创建报警脚本目录
mkdir -p /usr/lib/zabbix/alertscripts
# 创建邮件脚本
vi /usr/lib/zabbix/alertscripts/sendmail.sh
# 脚本内容:
#!/bin/bash
to=$1
subject=$2
body=$3
echo "$body" | mail -s "$subject" "$to"
# 设置权限
chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh
chown zabbix:zabbix /usr/lib/zabbix/alertscripts/sendmail.sh
# 测试脚本
/usr/lib/zabbix/alertscripts/sendmail.sh "test@example.com" "Test Subject" "Test Body"
6.5 创建报警媒介
进入
管理 → 报警媒介类型
点击
创建媒体类型
配置脚本类型:
名称:Send Email Script
类型:脚本
脚本名称:sendmail.sh
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
第七部分:配置用户和报警动作
7.1 创建接收报警的用户
进入
管理 → 用户
点击
创建用户
配置用户信息:
- 用户名:AlertUser
- 群组:选择"Zabbix administrators"
- 密码:设置密码
切换到
报警媒介 标签:
- 添加 → 类型选择"Email Alert"
- 收件人:填写接收报警的邮箱
- 其他选项保持默认
7.2 创建触发器动作
进入
配置 → 动作
点击右上角
创建动作
动作标签:
- 名称:Send email alert
- 条件:触发器值 = 问题
操作标签:
恢复操作标签(可选配置恢复通知)
确认操作标签(可选配置确认通知)
第八部分:配置监控主机
8.1 添加被监控主机
进入
配置 → 主机
点击
创建主机
配置主机信息:
- 主机名称:Linux Server
- 可见的名称:Linux Server
- 群组:选择或创建新群组
- IP地址:填写被监控主机的IP
- 端口:10050
8.2 链接监控模板
在主机配置页面,切换到
模板 标签
链接新模板:搜索并选择"Template OS Linux by Zabbix agent"
点击
添加 然后
更新
8.3 安装Zabbix Agent(在被监控主机上)
# 在被监控主机上执行
# 安装Agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install -y zabbix-agent
# 配置Agent
vi /etc/zabbix/zabbix_agentd.conf
# 修改以下参数:
Server=192.168.1.100 # Zabbix Server IP
ServerActive=192.168.1.100
Hostname=Linux-Server # 与Zabbix Web中配置一致
# 启动Agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
# 开放防火墙端口
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload
第九部分:测试监控和报警
9.1 创建测试触发器
进入
配置 → 主机
选择已添加的主机
点击
触发器 →
创建触发器
配置测试触发器:
名称:CPU Load too high on {HOST.NAME}
严重性:警告
表达式:{Linux Server:system.cpu.load[all,avg1].last()}>2
9.2 触发报警
# 在被监控主机上运行压力测试
stress --cpu 2 --timeout 60s
9.3 验证报警
在Zabbix Web查看
监控 → 问题
检查是否收到邮件报警
第十部分:高级配置和优化
10.1 配置主动监控
# 在Zabbix Agent配置中启用主动检查
vi /etc/zabbix/zabbix_agentd.conf
# 添加或修改:
StartAgents=0
ServerActive=192.168.1.100
Hostname=Linux-Server
10.2 配置自定义监控项
进入
配置 → 主机 → 选择主机 →
监控项
点击
创建监控项
配置自定义监控项:
名称:Custom Check
键值:system.run[ls -l /tmp | wc -l]
类型:Zabbix agent
信息类型:数字
更新间隔:60s
10.3 配置图形和聚合图形
配置 → 主机 → 选择主机 →
图形
创建图形展示监控数据
监测 → 聚合图形 → 创建仪表盘
10.4 性能优化建议
# 调整Zabbix Server配置
vi /etc/zabbix/zabbix_server.conf
# 根据监控规模调整以下参数:
StartPollers=100
StartPollersUnreachable=50
StartTrappers=20
StartPingers=50
StartDiscoverers=15
CacheSize=512M
HistoryCacheSize=256M
TrendCacheSize=128M
ValueCacheSize=512M
第十一部分:故障排除
11.1 常见问题排查
问题1:Zabbix Server无法启动
# 查看日志
tail -f /var/log/zabbix/zabbix_server.log
# 检查数据库连接
mysql -uzabbix -p -e "show databases;"
# 检查端口是否监听
netstat -tlnp | grep 10051
问题2:Agent无法连接
# 在Agent端测试连接
zabbix_get -s 127.0.0.1 -k system.uname
# 检查防火墙
firewall-cmd --list-all
# 检查SELinux状态
getenforce
问题3:邮件发送失败
# 测试邮件发送
echo "Test" | mail -s "Test" your_email@qq.com
# 查看邮件日志
tail -f /var/log/maillog
# 检查mailx配置
cat /etc/mail.rc
11.2 监控Zabbix自身
在Zabbix Server主机上链接"Template App Zabbix Server"
监控Zabbix Server的性能指标
第十二部分:备份和恢复
12.1 定期备份
# 创建备份脚本
vi /root/zabbix_backup.sh
# 脚本内容:
#!/bin/bash
BACKUP_DIR="/backup/zabbix"
DATE=$(date +%Y%m%d)
# 备份数据库
mysqldump -uzabbix -pZabbix@2023 zabbix > $BACKUP_DIR/zabbix_db_$DATE.sql
# 备份配置文件
tar -czf $BACKUP_DIR/zabbix_config_$DATE.tar.gz /etc/zabbix /etc/httpd
# 保留最近30天的备份
find $BACKUP_DIR -type f -mtime +30 -delete
# 设置权限
chmod +x /root/zabbix_backup.sh
# 添加到crontab
crontab -e
# 添加:0 2 * * * /root/zabbix_backup.sh
附录
A. 常用命令参考
# 服务管理
systemctl status zabbix-server
systemctl restart zabbix-agent
systemctl reload httpd
# 日志查看
tail -f /var/log/zabbix/zabbix_server.log
journalctl -u zabbix-server -f
# 数据清理(谨慎使用)
mysql -uzabbix -p -e "use zabbix; DELETE FROM alerts WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));"
B. 安全建议
修改默认密码
配置HTTPS访问
限制Zabbix Agent访问
定期更新系统
配置数据库定期备份
C. 扩展功能
短信报警(使用第三方API)
微信/钉钉报警
分布式监控
自动发现
API集成
注意:本教程中的IP地址、密码、邮箱等均为示例,请根据实际环境进行修改。在生产环境中,请确保使用强密码并遵循安全最佳实践。