redis哨兵不提供专用同步报警配置,因其设计目标是故障转移而非实时性能监控;它仅在主观下线或同步滞后影响选举时介入,同步延迟告警需依赖外部工具解析info replication指标并结合趋势分析。

Redis哨兵本身不直接提供“同步报警阈值”的配置项,但可通过组合 down-after-milliseconds、min-slaves-to-write 和外部监控手段实现等效效果。
为什么哨兵没有 dedicated 的 sync-alert 配置?
哨兵的设计目标是故障转移,不是实时性能告警。它只在主节点主观下线(down-after-milliseconds)或从节点同步滞后超限(影响选举)时才介入判断,不持续上报“当前 lag 是 82ms”这类指标。
真正需要报警的同步延迟(如 master_repl_offset - slave_repl_offset > 100000),得靠外部工具抓取 INFO replication 输出来计算。
- 哨兵只在故障转移前检查偏差是否满足候选资格(例如:偏移量差
-
min-slaves-to-write和min-slaves-max-lag是写保护机制,触发的是拒绝写入(返回MASTERDOWN错误),不是发报警 - 所谓“同步报警”,本质是监控 + 告警策略,不在哨兵职责范围内
用 INFO replication 抓取真实同步 lag 并报警
每个从节点的 INFO replication 返回中包含 slave_repl_offset,主节点返回中含 master_repl_offset;两者差值就是当前复制延迟字节数。
实操建议:
- 用定时脚本(如每 5 秒)调用
redis-cli -h $host -p $port INFO replication,解析出master_repl_offset和所有slaveX_repl_offset - 对每个从节点计算
abs(master_repl_offset - slaveX_repl_offset),若超过阈值(比如 50000 字节 ≈ 几百毫秒),触发告警 - 注意:仅靠 offset 差不能完全反映时间延迟(受网络、从节点处理速度影响),但它是唯一可量化、可采集的指标
- 避免只监控单个从节点——应检查所有在线从节点,取最大 lag 值作为报警依据
min-slaves-max-lag 不是报警开关,而是写入熔断开关
设置 min-slaves-max-lag 10 意味着:当所有从节点中,**没有任何一个**的复制延迟 ≤ 10 秒时,主节点将拒绝写命令,返回 MASTERDOWN。
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
这不是报警,是服务降级。常见误用点:
- 把它当成“延迟超 10 秒就发邮件”,实际它不发任何通知,只阻塞写入
- 搭配
min-slaves-to-write 1使用才有意义,否则该配置无效 - 该参数单位是秒,不是毫秒,且只对在线从节点生效;已断连的从节点不参与计算
- 一旦触发,客户端需捕获
MASTERDOWN错误并做重试或降级处理,否则业务会卡住
真正可用的报警入口:sentinel 的主观下线日志 + 自定义监控
哨兵自身会在日志中记录主观下线事件,例如:
sentinel.conf 中配置了 sentinel down-after-milliseconds mymaster 30000
当某个从节点连续 30 秒未响应 PING,哨兵会记一条日志:+sdown slave 192.168.1.10:6380 @ mymaster。这可以作为“同步彻底中断”的信号。
更实用的做法:
- 把 Redis 实例的
INFO replication和哨兵的INFO sentinel一起接入 Prometheus + Grafana - 用
redis_replication_lag_seconds(需 exporter 支持)或自定义 exporter 计算 lag - 设置告警规则:当
max(redis_replication_lag_seconds) > 5持续 2 分钟,触发 Slack/邮件通知 - 不要依赖哨兵日志做实时告警——日志轮转、权限、解析成本高,不如走 metrics 通道
最易被忽略的一点:同步 lag 报警必须区分“瞬时抖动”和“持续恶化”。单纯看单次 offset 差毫无意义,要结合趋势(如 5 分钟内 lag 持续上升)才能避免误报。










