事件怎么变成告警
哨兵会在运行过程中产生大量事件:某实例连不上、达到法定票数被判客观下线、完成一次主从切换。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 | 实例角色发生变化 | 确认配置与拓扑符合预期 |
事件有级别差异,哨兵只为需要人工关注的那部分事件调用脚本,所以「某些事件没触发脚本」不一定是配置错了;上线后先用一次演练确认实际会到达哪些事件。
脚本报错或超时不会打断哨兵流程,只会在哨兵日志里留下记录,因此脚本自身要单独监控,否则告警链路断了也没人知道。