首页/数据/Redis 进阶速查/哨兵日志定位问题
主从与哨兵51 条

哨兵日志定位问题

sentinel 的关键状态变化全部落日志:+sdown/+odown/+new-epoch/+try-failover/+failover-end/+switch-master,按时间轴读日志是定位切换问题的主线。

Redis 进阶速查数据更新于 2026-10-13

按时间轴读日志

哨兵把关键状态变化全部写进日志,并给事件加上前缀符号:主观下线、客观下线、纪元更新、开始尝试切换、切换完成、主库切换通知等等。排查切换问题的正确姿势是按时间轴读这些标记:先找到第一个异常标记,再往后确认动作链是否完整,比从后往前逐条猜要高效得多,也更容易发现卡在哪一步。

基本信息

日志位置配置文件中的日志路径,或标准输出
关键前缀带符号的事件行,如主观与客观下线标记
阅读方式先定位首个异常标记,再顺时间向后续读
常见异常尝试切换反复出现说明切换失败
多节点视角多台哨兵的日志要按时间对齐看

典型使用场景

  • 切换没有发生或没有完成,需要确认卡在哪个阶段
  • 复盘一次切换的完整耗时,为 SLA 评估提供数据
  • 怀疑某个实例被误判下线,从日志里确认判定依据与时间点
  • 排查主库地址反复漂移,找出触发源
  • 把关键事件接入监控告警,日志配置需要保证长期留存

常用查看方式

常用查看方式
grep -E '\+|-|#' /var/log/redis/sentinel.log | tail -50    # 事件行集中在带符号的记录
grep -c 'try-failover' /var/log/redis/sentinel.log         # 尝试切换的次数统计
grep -iE 'odown|sdown' /var/log/redis/sentinel.log | tail -20
tail -f /var/log/redis/sentinel.log                        # 演练时实时跟踪

标记与应对

标记类型含义应对方向
主观下线单个哨兵认为实例不可达先确认是否网络抖动,可暂时观察
客观下线达到票数的哨兵共同判定不可达准备切换,检查副本可用性
尝试切换领导者开始执行切换频繁出现要查切换失败原因
主库切换通知新主库地址已确定核对应用侧指向是否同步更新
切换中止本次切换被放弃结合后续记录看是否重试或原因分支
日志只留标准输出且被进程重定向覆盖时,问题窗口的记录可能已经丢失,配置独立日志文件更稳。
单台哨兵的日志只能反映它的视角,判断谁先发起、谁在拖延,需要把多台哨兵的日志按时间对齐一起看。

易错点

  • 不配置独立日志文件,切换发生时日志已被覆盖,事后无法复盘
  • 只看一台哨兵的日志就下结论,误判谁先触发与谁在影响进度
  • 忽略主观下线的早期记录,只从客观下线看起,错过了最初的异常信号
  • 日志轮转策略过于激进,超过一天的历史记录全部丢失

数据来源与参考

  • Redis 官方文档:Sentinel 日志事件说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌