欢迎光临上海华金科技
马上发布信息
详情描述
搭建zabbix监控以及邮件报警的超级详细教学
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
  • 条件:触发器值 = 问题
操作标签:
  • 默认操作步骤持续时间:1h
  • 默认信息:
    告警主机:{HOST.NAME}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息:{TRIGGER.NAME}
    告警项目:{ITEM.NAME}
    问题详情:{ITEM.KEY}
    当前状态:{ITEM.VALUE}
    事件ID:{EVENT.ID}
恢复操作标签(可选配置恢复通知) 确认操作标签(可选配置确认通知)

第八部分:配置监控主机

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地址、密码、邮箱等均为示例,请根据实际环境进行修改。在生产环境中,请确保使用强密码并遵循安全最佳实践。