Zabbix Server 7 + MySQL 8.4 单机版生产环境部署指南
1. 系统准备与环境配置
1.1 系统要求检查
# 检查系统版本
cat /etc/centos-release
# 更新系统
sudo dnf update -y
sudo reboot
# 安装基础依赖
sudo dnf install -y curl wget vim tel*** ***-tools
1.2 防火墙配置
# 开放必要端口
sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --permanent --add-port=10050/tcp
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --reload
2. MySQL 8.4 安装与配置
2.1 安装 MySQL 8.4
# 添加 MySQL 8.4 官方仓库
sudo rpm -Uvh https://dev.mysql.***/get/mysql84-***munity-release-el9-1.noarch.rpm
sudo dnf module disable mysql -y
# 安装 MySQL
sudo dnf install -y mysql-***munity-server mysql-***munity-client mysql-***munity-devel
# 启动 MySQL
sudo systemctl enable --now mysqld
sudo systemctl status mysqld
2.2 安全配置与初始化
# 获取临时 root 密码
sudo grep 'temporary password' /var/log/mysqld.log
# 运行安全配置脚本(使用上一步获取的临时密码)
sudo mysql_secure_installation
# 创建 Zabbix 数据库和用户
mysql -u root -p <<EOF
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ZabbixSecurePassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
SET GLOBAL log_bin_trust_function_creators = 1;
EOF
2.3 MySQL 性能优化配置
sudo vi /etc/my.***f.d/mysql-server.***f
在 [mysqld] 部分添加以下优化配置:
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 内存优化
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 2
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
# 性能优化
innodb_flush_log_at_trx_***mit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = ON
max_connections = 200
thread_cache_size = 20
# 查询优化
query_cache_size = 0
query_cache_type = 0
table_open_cache = 2000
# 分区支持
log_bin_trust_function_creators = 1
重启 MySQL 应用配置:
sudo systemctl restart mysqld
3. Zabbix Server 7 安装与配置
3.1 安装 Zabbix 仓库
# 安装 Zabbix 7 仓库
sudo rpm -Uvh https://repo.zabbix.***/zabbix/7.0/centos/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
sudo dnf clean all
3.2 安装 Zabbix 组件
sudo dnf install -y \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-apache-conf \
zabbix-sql-scripts \
zabbix-agent \
zabbix-get
3.3 导入数据库架构
# 导入初始数据库架构
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p'ZabbixSecurePassword123!' zabbix
3.4 配置 Zabbix Server
sudo vi /etc/zabbix/zabbix_server.conf
修改以下配置项:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=ZabbixSecurePassword123!
# 性能优化配置
StartPollers=20
StartPreprocessors=10
StartHistoryPollers=10
StartDiscoverers=5
StartHTTPPollers=5
# 缓存配置
HistoryCacheSize=256M
HistoryIndexCacheSize=128M
TrendCacheSize=128M
ValueCacheSize=256M
# Housekeeping 配置
HousekeepingFrequency=1
MaxHousekeeperDelete=50000
4. Web 服务与 PHP 配置
4.1 安装 PHP 及相关组件
sudo dnf install -y \
httpd \
php php-mysqlnd php-gd php-bcmath php-mbstring php-ldap php-xml
4.2 配置 PHP
sudo vi /etc/php.ini
修改以下参数:
max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
max_input_time = 300
date.timezone = Asia/Shanghai
4.3 配置 Apache
# 启用 Zabbix 前端配置
sudo ln -s /etc/zabbix/web/zabbix.conf /etc/httpd/conf.d/zabbix.conf
# 启动服务
sudo systemctl enable --now httpd
sudo systemctl status httpd
5. 启动与验证服务
5.1 启动所有服务
sudo systemctl enable --now zabbix-server zabbix-agent httpd
sudo systemctl status zabbix-server zabbix-agent httpd
5.2 验证服务状态
# 检查端口监听
sudo ss -tulpn | grep -E '10050|10051|80'
# 检查服务日志
sudo tail -f /var/log/zabbix/zabbix_server.log
sudo tail -f /var/log/httpd/error_log
6. 基本分区配置(可选)
6.1 简单分区策略
-- 登录 MySQL
mysql -u zabbix -p'ZabbixSecurePassword123!' zabbix
-- 创建基本分区管理存储过程
DELIMITER $$
CREATE PROCEDURE `simple_partition_maintenance`(IN schema_name VARCHAR(64))
BEGIN
-- 历史数据保留30天,每天一个分区
CALL partition_maintenance(schema_name, 'history', 30, 24, 7);
CALL partition_maintenance(schema_name, 'history_uint', 30, 24, 7);
CALL partition_maintenance(schema_name, 'history_str', 30, 24, 7);
-- 趋势数据保留2年,每周一个分区
CALL partition_maintenance(schema_name, 'trends', 730, 168, 4);
CALL partition_maintenance(schema_name, 'trends_uint', 730, 168, 4);
END$$
DELIMITER ;
-- 执行分区
CALL simple_partition_maintenance('zabbix');
6.2 自动化分区维护
# 创建每日维护脚本
sudo vi /etc/cron.daily/zabbix-partition-maintenance
#!/bin/bash
mysql -uzabbix -p'ZabbixSecurePassword123!' zabbix -e "CALL simple_partition_maintenance('zabbix');"
# 设置执行权限
sudo chmod +x /etc/cron.daily/zabbix-partition-maintenance
7. 访问与初始配置
7.1 访问 Zabbix Web 界面
http://服务器IP地址/zabbix
7.2 按照安装向导完成配置:
- 检查所有前提条件是否满足
- 配置数据库连接:
- Database type: MySQL
- Database host: localhost
- Database name: zabbix
- User: zabbix
- Password: ZabbixSecurePassword123!
- 设置服务器详情
- 预览配置并完成安装
7.3 登录默认账户:
用户名: Admin
密码: zabbix
8. 基本监控配置
8.1 配置自监控
# 编辑 Agent 配置
sudo vi /etc/zabbix/zabbix_agentd.conf
# 修改以下参数:
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix-server
# 重启 Agent
sudo systemctl restart zabbix-agent
8.2 添加本地主机监控
- 在 Web 界面中进入 “Configuration” → “Hosts”
- 点击 “Create host”
- 添加本地主机:
- Host name: Zabbix server
- Visible name: Zabbix server
- Groups: Linux servers
- Agent interfaces: IP 127.0.0.1, Port 10050
- 链接模板:Template OS Linux by Zabbix agent
9. 备份与维护
9.1 数据库备份脚本
sudo vi /opt/scripts/zabbix-backup.sh
#!/bin/bash
# Zabbix 数据库备份脚本
BACKUP_DIR="/backup/zabbix"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
mysqldump -uzabbix -p'ZabbixSecurePassword123!' \
--single-transaction --routines zabbix \
> $BACKUP_DIR/zabbix_backup_$DATE.sql
# 压缩备份
gzip $BACKUP_DIR/zabbix_backup_$DATE.sql
# 清理旧备份
find $BACKUP_DIR -name "*.gz" -mtime +$RETENTION_DAYS -delete
# 设置定时任务(每天凌晨2点执行)
sudo echo "0 2 * * * root /opt/scripts/zabbix-backup.sh" > /etc/cron.d/zabbix-backup
9.2 配置文件备份
# 备份重要配置文件
sudo tar -czf /backup/zabbix-config-$(date +%Y%m%d).tar.gz \
/etc/zabbix \
/etc/httpd/conf.d/zabbix.conf \
/etc/php.ini \
/etc/my.***f.d/mysql-server.***f
10. 故障排查与监控
10.1 常见问题排查
# 检查服务状态
sudo systemctl status zabbix-server zabbix-agent httpd mysqld
# 检查日志错误
sudo tail -f /var/log/zabbix/zabbix_server.log | grep -i error
sudo tail -f /var/log/httpd/error_log
# 测试数据库连接
mysql -uzabbix -p'ZabbixSecurePassword123!' -e "SELECT version();"
# 测试前端连接
curl -I http://localhost/zabbix
10.2 性能监控项目
在 Zabbix 中添加以下监控项:
- MySQL 连接数: mysql.get_status[Connections]
- Zabbix 队列: zabbix[queue,10m]
- 服务器内存使用: vm.memory.size[available]
- 磁盘空间: vfs.fs.size[/,pfree]
这个单机版部署方案提供了稳定可靠的 Zabbix 监控环境,适合大多数中小型生产环境使用。方案包含了必要的性能优化和安全配置,同时保持了简单易维护的特点。