首页/数据/Redis 进阶速查/notification-script:状态变化告警
主从与哨兵51 条

notification-script:状态变化告警

sentinel notification-script <master-name> <script> 在发生重要事件(如切换、下线)时调用脚本,用于对接告警系统等场景。

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

事件怎么变成告警

哨兵会在运行过程中产生大量事件:某实例连不上、达到法定票数被判客观下线、完成一次主从切换。sentinel notification-script 提供一个本机脚本入口,哨兵把「需要人知道」的事件连同描述文本交给脚本,由脚本决定发到哪个告警渠道。

基本信息

配置项sentinel notification-script <master-name> <script-path>
传入参数第一个是事件类型,第二个是事件描述文本
执行位置由产生事件的哨兵在本机启动脚本
生效方式写入 sentinel.conf 或用 SENTINEL SET 在线调整

典型使用场景

  • 主库客观下线与切换完成时播报到值班渠道
  • 实例反复上下线(抖动)时提醒排查网络或负载
  • 把事件转发到工单系统,留下处理记录与责任链
  • 汇总事件时间线,事后复盘切换耗时与判定是否合理
  • 配合监控平台做告警去重与升级(一级告警转二级)

脚本骨架

脚本骨架
#!/bin/sh
# $1 事件类型(如 +sdown/-sdown/+odown/-odown/+switch-master)  $2 事件描述
EVENT=$1; DESC=$2
logger -t redis-sentinel "$EVENT $DESC"                     # 先落本机 syslog,便于与哨兵日志比对
curl -sf -m 3 -X POST http://alert/api/hook \
  -d "event=$EVENT&desc=$DESC" || true                     # 发送失败也不拖住哨兵流程

常见事件

事件含义建议动作
+sdown / -sdown单个哨兵判定的主观下线与恢复关注是否网络抖动或误判
+odown / -odown达到票数的客观下线与恢复准备并跟踪切换
+switch-master主库已经切换核对新主库与客户端配置
+failover-end / -failover切换流程结束或取消记录耗时,评估是否合理
+role-change实例角色发生变化确认配置与拓扑符合预期
事件有级别差异,哨兵只为需要人工关注的那部分事件调用脚本,所以「某些事件没触发脚本」不一定是配置错了;上线后先用一次演练确认实际会到达哪些事件。
脚本报错或超时不会打断哨兵流程,只会在哨兵日志里留下记录,因此脚本自身要单独监控,否则告警链路断了也没人知道。

易错点

  • 把 notification-script 当成切换联动的唯一手段 → 它只负责通知,不会修改业务侧地址 → 改配置要用 client-reconfig-script
  • 事件风暴(同一实例反复 +sdown/-sdown)直接转发 → 真实故障被噪音淹没 → 脚本内加静默窗口或按事件类型分级
  • 脚本里做慢操作(同步等待审批、长轮询) → 超时被杀,事件丢失 → 网络调用加 -m 超时,重活转异步
  • 脚本只装在一台哨兵上 → 事件是否上报取决于当时谁在观测 → 所有哨兵节点统一部署

数据来源与参考

  • Redis 官方文档:Sentinel notification-script 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌