CentOS8环境下Zabbix 6.0 LTS部署与生产级配置实战
1. 环境准备与系统优化
在CentOS8上部署Zabbix 6.0 LTS之前,合理的系统配置能避免80%的后续问题。我遇到过不少案例都是因为基础环境没做好,导致监控系统运行不稳定。下面这些步骤都是经过生产环境验证的黄金配置方案。
1.1 使用国内镜像源加速部署
国内用户最头疼的就是软件包下载速度问题。实测用默认源安装Zabbix组件可能需要2小时以上,换成阿里云镜像后缩短到15分钟。具体操作时要注意几个细节:
# 备份原有源配置(重要!系统升级时可能需要还原) sudo mkdir /etc/yum.repos.d/backup && sudo mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/ # 获取阿里云CentOS8镜像源 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo # 特别处理epel源(很多依赖包在这里) sudo dnf install -y epel-release sudo sed -i 's|^#baseurl|baseurl|g' /etc/yum.repos.d/epel* sudo sed -i 's|^metalink|#metalink|g' /etc/yum.repos.d/epel* sudo sed -i 's|//download\.fedoraproject\.org/pub|//mirrors.aliyun.com|g' /etc/yum.repos.d/epel*更新缓存时如果遇到"package conflicts"错误,可以试试这个万能解法:
sudo dnf clean all && sudo rm -rf /var/cache/dnf sudo dnf -y update --allowerasing --skip-broken1.2 安全策略精细化配置
完全关闭防火墙和SELinux是新手常见错误,在生产环境应该采用白名单策略:
# 防火墙放行必要端口(Zabbix Server默认10051,Web80/443) sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=10050-10051/tcp sudo firewall-cmd --reload # SELinux策略调整(比完全关闭更安全) sudo setsebool -P httpd_can_network_connect_db on sudo setsebool -P httpd_can_connect_zabbix on建议创建专门的审计规则监控关键目录:
# 监控Zabbix配置目录变更 sudo auditctl -w /etc/zabbix/ -p wa -k zabbix_config2. LAMP环境深度优化
Zabbix官方推荐使用Nginx,但实测Apache在中小规模监控场景下更稳定。下面这套配置方案支撑过500+节点的监控系统。
2.1 数据库选型与调优
MariaDB 10.3+的性能比MySQL社区版更适合Zabbix,关键配置参数:
[mysqld] innodb_buffer_pool_size = 1G # 建议物理内存的50% innodb_log_file_size = 256M max_connections = 200 character-set-server = utf8mb4 collation-server = utf8mb4_bin transaction-isolation = READ-COMMITTED初始化时建议创建独立的表空间:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ComplexP@ssw0rd'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; ALTER DATABASE zabbix DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;2.2 PHP性能调优
Zabbix 6.0对PHP7.4+有硬性要求,这些参数直接影响页面加载速度:
memory_limit = 256M post_max_size = 32M upload_max_filesize = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Asia/Shanghai opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=603. Zabbix Server生产级部署
3.1 使用清华源加速安装
官方源在国内访问不稳定,推荐使用清华镜像源:
# 替换默认源 sudo rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm sudo sed -i 's|repo.zabbix.com|mirrors.tuna.tsinghua.edu.cn/zabbix|g' /etc/yum.repos.d/zabbix* # 安装核心组件(推荐使用Agent2) sudo dnf install -y zabbix-server-mysql zabbix-web-mysql \ zabbix-apache-conf zabbix-sql-scripts \ zabbix-selinux-policy zabbix-agent23.2 数据库初始化技巧
导入初始数据时容易卡死,这个命令加了超时和重试机制:
for i in {1..3}; do zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p'ComplexP@ssw0rd' zabbix --connect-timeout=30 && break sleep 10 done关键配置文件/etc/zabbix/zabbix_server.conf的优化项:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=ComplexP@ssw0rd DBSocket=/var/lib/mysql/mysql.sock StartPollers=20 StartPollersUnreachable=10 StartTrappers=15 StartPingers=10 CacheSize=256M HistoryCacheSize=128M TrendCacheSize=128M ValueCacheSize=256M Timeout=30 LogSlowQueries=30004. 安全加固与监控自保护
4.1 网络层防护
修改默认端口能减少90%的自动化攻击:
# 修改Agent2端口 sudo sed -i 's/# ListenPort=10050/ListenPort=21050/g' /etc/zabbix/zabbix_agent2.conf # Server端同步修改 sudo sed -i 's/# NodeAddress=/NodeAddress=0.0.0.0:21051/g' /etc/zabbix/zabbix_server.conf4.2 证书加密通信
自签名证书配置步骤:
# 生成CA证书 openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /etc/zabbix/zabbix_ca.key \ -out /etc/zabbix/zabbix_ca.crt \ -subj "/CN=Zabbix CA/O=My Company" # 生成服务器证书 openssl req -nodes -days 3650 -newkey rsa:2048 \ -keyout /etc/zabbix/zabbix_server.key \ -out /etc/zabbix/zabbix_server.csr \ -subj "/CN=zabbix-server/O=My Company" # 用CA签名 openssl x509 -req -in /etc/zabbix/zabbix_server.csr \ -CA /etc/zabbix/zabbix_ca.crt \ -CAkey /etc/zabbix/zabbix_ca.key \ -CAcreateserial \ -out /etc/zabbix/zabbix_server.crt在Agent2配置中启用加密:
TLSConnect=psk TLSAccept=psk TLSPSKIdentity=MyPSK TLSPSKFile=/etc/zabbix/zabbix_agent2.psk5. 高可用方案实施
5.1 数据库主从复制
主库配置:
[mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW binlog_row_image = FULL expire_logs_days = 7 sync_binlog = 1从库配置:
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='ReplP@ssw0rd', MASTER_PORT=3306, MASTER_AUTO_POSITION=1; START SLAVE;5.2 Zabbix Server集群
前端负载均衡配置示例(Nginx):
upstream zabbix { server 192.168.1.101:80; server 192.168.1.102:80; keepalive 16; } server { listen 80; location / { proxy_pass http://zabbix; proxy_set_header Host $host; } }6. 性能监控与调优
6.1 基础监控项配置
这些是必须监控的关键指标:
- 系统级:CPU负载、内存使用、磁盘IOPS、网络带宽
- 数据库级:连接数、查询缓存命中率、慢查询数量
- Zabbix自身:队列积压、缓存利用率、Housekeeper执行时间
6.2 自动化维护脚本
定期清理历史数据的脚本:
#!/bin/bash # 保留30天历史数据 mysql -uzabbix -p'ComplexP@ssw0rd' zabbix <<EOF DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); DELETE FROM history_uint WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY)); OPTIMIZE TABLE history, history_uint; EOF7. 故障排查指南
7.1 日志分析技巧
关键日志路径:
/var/log/zabbix/zabbix_server.log/var/log/httpd/error_log/var/log/mariadb/mariadb.log
常见错误速查:
- "database is down":检查DBPassword配置项和MySQL socket路径
- "frontend access denied":确认SELinux上下文
chcon -R -t httpd_sys_content_t /usr/share/zabbix - "agent unreachable":验证防火墙规则和Agent进程状态
7.2 性能瓶颈定位
使用这个命令实时监控Server状态:
watch -n 5 "zabbix_server -R config_cache_reload && mysql -uzabbix -p'ComplexP@ssw0rd' -e 'SHOW STATUS LIKE \"%onn%\"; SHOW PROCESSLIST;'"8. 生产环境验证清单
部署完成后务必检查这些项:
- [ ] Web界面所有菜单功能测试
- [ ] 模拟触发器告警测试
- [ ] 监控项数据采集间隔验证
- [ ] 备份策略实施验证
- [ ] 性能基准测试(建议用zabbix-bench工具)
最后提醒,Zabbix Server的Java网关如果需要监控JMX应用,要单独安装zabbix-java-gateway包,并确保10052端口通畅。实际使用中发现,对于大规模部署,将Proxy节点部署在被监控网络内能显著提升采集效率。
