Zabbix 最佳实践
内容覆盖:架构、安装、性能、监控规范、告警、数据存储、Proxy、Agent、模板、触发器、维护等所有核心最佳实践。
适用:
- 多机房
- 设备数量 ≥ 300
- 网络复杂、跨地域
- 需要降低 Zabbix Server 压力
Proxy Benefits:
- 减少数据库压力
- 减轻 Server 采集压力
- 断网自动缓存数据
- 分布式架构更健壮
Zabbix = 重数据库应用,90% 的性能问题都源于 DB。
原因:
- 写入性能更强
- 原生支持分区
- TimescaleDB 插件极佳
提升:
- 写入 TPS
- 历史数据查询
- Housekeeper 速度
历史表自动分区 + 压缩,提升 10 倍性能。
shared_buffers = 25% 内存
work_mem = 32MB
maintenance_work_mem = 256MB
wal_buffers = 16MB
max_connections = 500
effective_cache_size = 50% 内存
HousekeepingFrequency=0
使用 TimescaleDB 或 cron 清理更高效。
核心并发配置:
StartPollers=50
StartIPMIPollers=10
StartPollersUnreachable=10
StartPingers=10
StartDiscoverers=10
StartHTTPPollers=20
减少网络延迟。
- 使用 Pacemaker/Keepalived 做 Server HA
- PostgreSQL 做主从复制(流复制)
提升稳定性。
更轻量;>5000 主机建议 PostgreSQL Proxy。
避免断网时写入堵塞。
优点:
- 性能更好
- 插件更丰富(MySQL、Redis、Nginx)
- 原生支持 Go 插件扩展
主动模式:
- 无需防火墙开 inbound 端口
- 更适合容器、多云环境
启用加密:
TLSConnect=psk
TLSAccept=psk
最佳实践:
- JSON 输出
- 一次脚本返回多指标(减少调用开销)
官方模板特点:
- 自动发现(LLD)
- 已含上百个监控项
- 已优化告警阈值
- CPU/内存/IO 都有图表
官方模板:
- Template OS Linux
- Template OS Windows
- Template DB MySQL
- Template DB PostgreSQL
- Template App Nginx
- Template App Redis
命名规范:
Template App XXX {CompanyName}
Template VM KVM {CompanyName}
模板内必须包含:
- 监控项(Item)
- 触发器(Trigger)
- LLD(自动发现)
- Item Prototype(自动创建)
- Graph(图表)
推荐:
- 30 秒:核心服务
- 60 秒:一般系统
- 300 秒:网络设备 SNMP
尽量使用:
- Zabbix agent 内置 key
- agent2 插件
- SNMP / HTTP Agent
减少触发器误报:
- JSONPath
- 正则过滤
- 数值过滤(discard below)
避免频繁上下波动告警。
示例:
{host:vfs.fs.size[/,pfree].last()}<20
{host:vfs.fs.size[/,pfree].last()}<25
avg(5m)
min(10m)
内存低到 10% 不代表不好,大量缓存是正常的。
推荐阈值:
- CPU load > (核心数 * 1.5)
- 内存可用 <20%
- 磁盘使用率 >85%
- inode 使用 >90%
- TCP CLOSE_WAIT > 100
优于邮件:
- 企业微信 WebHook
- 钉钉机器人
- 飞书机器人
- Telegram
级别:
- Disaster:必须立即处理(服务不可用)
- High:严重(磁盘 >95%)
- Average:一般
- Warning:轻微
- 同一事件不连续发送
- 禁止重复通知
- 使用维护窗口 suppress
- 历史数据:30 天
- 趋势数据:365 天
- 事件数据:90 天
减少 70% 存储空间。
Nginx + Let’s Encrypt。
避免中间人攻击。
不要给超级管理员 token。
组合监控:
- Zabbix + Prometheus(时序数据)
- Zabbix + Grafana (展示)
- Zabbix + ELK (日志)
- Zabbix + Jaeger(链路追踪)
自动发现删除停用设备。
过多 LLD -> 数据库存储暴涨。
优化慢脚本 / SNMP 延迟。
- PostgreSQL 全备
- Zabbix 配置备份(SQL dump + /etc/zabbix)
- 使用 Proxy 按地域/机房分布。
- 数据库必须使用 PostgreSQL + SSD。
- 使用 TimescaleDB 分区与压缩。
- 使用 Agent2 + 主动模式 + TLS。
- 尽量使用官方模板而不是自建。
- 监控周期最短 30s,不要太密。
- 使用趋势值与 hysteresis 避免震荡。
- 告警采用 Webhook,分级管理。
- 历史数据仅保留 30 天,趋势保留 1 年。
- 禁止使用大量外部脚本监控。
- Proxy 使用 SSD 缓存。
- 禁止自动 Housekeeping。
- 使用 Grafana 做可视化更美观。
- Zabbix Server 需要调高 poller 线程。
- 定期清理无效主机、失效 LLD、垃圾事件。