本教程以 CentOS 7 为例:
# 设置主机名
hostnamectl set-hostname zabbix-server
# 编辑hosts文件
vi /etc/hosts
# 添加以下内容
192.168.1.100 zabbix-server
# 临时关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 安装必要的工具
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仓库
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
# 获取临时密码
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、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
# 编辑Zabbix Server配置文件
vi /etc/zabbix/zabbix_server.conf
# 修改以下内容:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@2023
# 其他保持默认
# 编辑PHP配置文件
vi /etc/httpd/conf.d/zabbix.conf
# 找到并修改(大约在第20行):
php_value date.timezone Asia/Shanghai
# 启动Apache和Zabbix服务
systemctl restart httpd
systemctl start zabbix-server
systemctl start zabbix-agent
# 设置开机自启
systemctl enable httpd
systemctl enable zabbix-server
systemctl enable zabbix-agent
http://服务器IP/zabbix
点击"Next step"开始安装
# 安装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
echo "Test email from Zabbix" | mail -s "Zabbix Test" recipient@example.com
名称:Email Alert
类型:Email
SMTP服务器:smtp.qq.com
SMTP服务器端口:465
SMTP HELO:qq.com
SMTP电邮:your_email@qq.com
连接安全:SSL/TLS
认证:用户名和密码
用户名:your_email@qq.com
密码:授权码
# 创建报警脚本目录
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"
名称:Send Email Script
类型:脚本
脚本名称:sendmail.sh
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
告警主机:{HOST.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
问题详情:{ITEM.KEY}
当前状态:{ITEM.VALUE}
事件ID:{EVENT.ID}
# 在被监控主机上执行
# 安装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
名称:CPU Load too high on {HOST.NAME}
严重性:警告
表达式:{Linux Server:system.cpu.load[all,avg1].last()}>2
# 在被监控主机上运行压力测试
stress --cpu 2 --timeout 60s
# 在Zabbix Agent配置中启用主动检查
vi /etc/zabbix/zabbix_agentd.conf
# 添加或修改:
StartAgents=0
ServerActive=192.168.1.100
Hostname=Linux-Server
名称:Custom Check
键值:system.run[ls -l /tmp | wc -l]
类型:Zabbix agent
信息类型:数字
更新间隔:60s
# 调整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
# 查看日志
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
# 创建备份脚本
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
# 服务管理
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));"
注意:本教程中的IP地址、密码、邮箱等均为示例,请根据实际环境进行修改。在生产环境中,请确保使用强密码并遵循安全最佳实践。