基于Ubuntu 24.04与MariaDB构建Zabbix 7.0云服务器监控体系

张开发
2026/4/21 3:30:02 15 分钟阅读

分享文章

基于Ubuntu 24.04与MariaDB构建Zabbix 7.0云服务器监控体系
1. 为什么选择Zabbix 7.0监控云服务器最近在帮客户搭建服务器监控系统时发现很多运维团队还在用人工巡检的老方法。每次服务器出问题都得等用户投诉才发现这种被动响应模式在云时代实在太危险了。实测下来Zabbix 7.0这套开箱即用的监控方案特别适合中小规模的云环境。它不仅能实时抓取CPU、内存这些基础指标还能通过自定义项监控业务日志、API状态等特殊场景。我在阿里云ECS上实测对比过多种方案Zabbix有三大优势最打动我首先是协议兼容性好既支持Agent主动上报也能通过SNMP、JMX等协议监控网络设备其次是告警机制完善除了常规的邮件短信还能对接企业微信、钉钉等IM工具最重要的是数据可视化强大内置的Dashboard编辑器连非技术人员都能快速上手。2. 环境准备与架构设计2.1 硬件资源配置建议这次我们用的三台阿里云ECS都是4核8G配置实际测试发现这个规格带100个监控项毫无压力。有个容易踩坑的地方是磁盘IO性能——Zabbix的History表会持续写入监控数据建议给数据库单独挂载SSD云盘。我遇到过客户用普通云盘导致监控延迟的问题后来换成ESSD PL1性能立刻提升3倍。网络配置要特别注意两点一是确保安全组放行10050/10051这两个关键端口二是如果走内网通信最好把所有实例放在同一可用区。曾经有客户因为跨可用区部署导致监控数据延迟改成同区后P99延迟从800ms降到了200ms以内。2.2 操作系统优化技巧Ubuntu 24.04默认的swap配置可能不够用建议提前调整# 查看当前swap sudo swapon --show # 创建4GB swap文件 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab另外记得关闭Ubuntu的自动更新避免意外升级导致服务中断sudo apt-mark hold zabbix-* sudo systemctl mask unattended-upgrades3. MariaDB深度调优指南3.1 数据库初始化最佳实践安装MariaDB时有个细节容易被忽略——字符集设置。虽然Zabbix官方说utf8够用但我强烈建议用utf8mb4否则后面监控中文主机名时会出乱码。具体操作时要注意两点创建数据库时必须显式指定字符集CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;导入SQL文件时要指定字符集zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -p zabbix3.2 性能参数调优根据监控设备数量建议调整MariaDB的InnoDB缓冲池大小。这是我们线上环境的配置模板[mysqld] innodb_buffer_pool_size 2G innodb_log_file_size 256M innodb_flush_log_at_trx_commit 2 query_cache_size 0 max_connections 200重点说明下innodb_flush_log_at_trx_commit2这个参数默认值1虽然最安全但会导致大量磁盘IO。对于监控系统来说允许丢失最近1秒的数据换取性能提升是值得的。实测这个改动让我们的写入TPS从1500提升到了4200。4. Zabbix Server部署实战4.1 软件源配置的坑添加Zabbix仓库时要注意版本号陷阱。有次我手快输成了6.4的源结果装完发现界面全是404错误。正确的7.0仓库配置应该是wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1ubuntu24.04_all.deb sudo dpkg -i zabbix-release_7.0-1ubuntu24.04_all.deb安装组件时推荐用这个全能命令一次性解决依赖问题sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent zabbix-get -y4.2 配置文件精讲zabbix_server.conf里有几个关键参数直接影响性能StartPollers100 StartPollersUnreachable50 HistoryCacheSize128M TrendCacheSize32M这里分享个诊断技巧如果发现监控数据延迟可以看服务器日志里有没有delayed by关键字sudo tail -f /var/log/zabbix/zabbix_server.log | grep delayed5. Web界面配置秘籍5.1 PHP调优实战Zabbix前端对PHP配置非常敏感特别是处理大屏展示时。除了官方建议的参数我还会调整这些opcache.enable1 opcache.memory_consumption128 opcache.max_accelerated_files4000 realpath_cache_size4096K遇到过最诡异的bug是地图不显示的问题最后发现是PHP的GD库没装sudo apt install php-gd sudo systemctl restart apache25.2 初始登录的隐藏关卡首次登录用Admin/zabbix认证成功后系统会强制要求改密码。这里有个冷知识新密码必须包含大小写、数字和特殊字符而且不能包含用户名。建议直接用密码生成器openssl rand -base64 12 | sed s/[/]/#/g6. 分布式Agent部署技巧6.1 批量安装方案如果需要监控上百台服务器可以写个自动化脚本#!/bin/bash for IP in $(cat server_list.txt); do ssh root$IP wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1ubuntu24.04_all.deb dpkg -i zabbix-release_7.0-1ubuntu24.04_all.deb apt update apt install zabbix-agent -y done6.2 配置模板管理建议把通用配置做成模板文件# /etc/zabbix/zabbix_agentd.d/common.conf UserParameterdisk.health[*],smartctl -H /dev/$1 | grep -q PASSED echo 1 || echo 0 UserParameterservice.status[*],systemctl is-active $1 /dev/null 21 echo 1 || echo 0然后通过scp批量分发scp common.conf rootagent-server:/etc/zabbix/zabbix_agentd.d/7. 生产环境优化方案7.1 数据库分区策略Zabbix的历史数据表会无限增长必须做分区。这是我用的按月分区方案ALTER TABLE history PARTITION BY RANGE(clock) ( PARTITION p202301 VALUES LESS THAN (UNIX_TIMESTAMP(2023-02-01)), PARTITION p202302 VALUES LESS THAN (UNIX_TIMESTAMP(2023-03-01)) );配合crontab每月自动添加新分区0 3 1 * * mysql -uzabbix -p zabbix -e ALTER TABLE history ADD PARTITION...7.2 告警收敛方案避免告警风暴的关键是设置合理的触发条件。比如这个CPU告警就加了两次持续检测{Template OS Linux:system.cpu.util[,avg1].avg(5m)}80 and {Template OS Linux:system.cpu.util[,avg1].avg(10m)}808. 故障排查工具箱8.1 日志分析指南常见错误码速查表错误码含义解决方案32500数据库连接失败检查DBPassword配置127Agent不可达验证10050端口和防火墙规则-1监控项不支持检查item key拼写8.2 性能诊断命令快速定位瓶颈的黄金命令组合# 查看服务器状态 zabbix_server -R status # 检查活跃连接数 mysqladmin -uzabbix -p processlist # 实时监控队列 watch -n 1 zabbix_server -R internal | grep queue记得去年有次性能问题就是用这些命令发现是Housekeeper进程卡住了最后通过调整StartHousekeepers参数解决。监控系统本身也需要被监控这个道理花了我三年才真正理解透彻。

更多文章