告警阈值怎么定
Redis 告警阈值没有通用答案,但有可用的起步参考:内存水位、连接使用率、延迟分位、复制偏移差、淘汰速率与慢日志速率。起步值用于快速搭起监控,之后必须用自己实例在低峰与高峰的基线数据逐步收敛,否则不是误报就是漏报。
起步阈值参考
| 告警项 | 指标 | 起步阈值 |
|---|---|---|
| 内存水位 | used_memory / maxmemory | 超过 85% 预警,超过 95% 严重 |
| 内存与物理 | RSS 与物理内存之比 | 超过 80% 需结合 fork 副本需求评估 |
| 连接使用率 | connected_clients / maxclients | 超过 80% 预警,防连接打满 |
| 命令延迟 | P99 命令延迟 | 超过 50ms 且持续,按业务基线调整 |
| 复制偏移差 | master_repl_offset 与 slave_repl_offset 差值 | 持续增长超过 10 秒量级 |
| 淘汰速率 | evicted_keys 增长速度 | 超过基线 3 倍并联动命中率下降 |
| 慢日志 | slowlog 新增速率 | 以 10ms 阈值为起点观察 |
采集命令
采集命令
redis-cli INFO memory | grep -E 'used_memory_human|maxmemory_human|mem_fragmentation_ratio' # 内存水位与碎片
redis-cli INFO clients | grep connected_clients # 连接使用率
redis-cli INFO stats | grep -E 'evicted_keys|keyspace_hits|keyspace_misses' # 淘汰与命中率
redis-cli INFO replication | grep -E 'master_repl_offset|slave_repl_offset' # 复制偏移差
redis-cli --latency-history -i 5 # 延迟分位历史
redis-cli SLOWLOG GET 10 # 最近慢命令典型使用场景
- 新实例接入监控:先套起步值,两周后按基线收敛
- 内存告警复盘:确认是真实增长还是碎片导致 RSS 偏高
- 连接打满的预防:在达到 maxclients 前提前预警
- 复制健康监控:用偏移差替代单看 link 状态
- 缓存性能监控:命中率与淘汰速率联动的趋势判断
阈值需要在低峰与高峰都有样本后再收敛:固定值如「延迟超过 10ms 就告警」在混合负载下会长期误报,噪声多了告警就失去意义。
告警项要覆盖可用性与容量两类:只盯 CPU 往往会漏掉内存、连接与复制这些更早暴露问题的指标。
阈值收敛的做法
- 上线初期只开严重级别,观察一周后再逐步收紧到预警级别
- 把告警与容量趋势图放在同一看板上,区分突增与缓慢增长
- 为每个实例记录基线值,扩容或业务变更后重新评估阈值
- 定期回看长期无人处理的告警,要么调整阈值要么补齐处置流程