告警之后做什么:写一份真正能用的 Runbook

阿远
2026-10-29 / 0 评论 / 1 阅读 / 正在检测是否收录...

收到告警后,需要一份能直接照着查的处理手册,而不只是一张空白模板。下面以本站 WebsiteProbeFailed 为例整理 Runbook;描述的是处理流程,不声称已经人为制造线上故障。

告警是什么

probe_success{job="blackbox_http"} == 0 持续达到规则中的 for 时间后触发。先确认实际标签、实例与开始时间;它说明指定模块的探测失败,不直接说明 Nginx 已停止。Prometheus 与 Alertmanager 同机运行,整机故障仍需外部监测弥补。

第一轮:只读确认

systemctl status blackbox_exporter nginx php-fpm mysqld --no-pager
curl -fsSG --max-time 10 http://127.0.0.1:9115/probe \
  --data-urlencode 'module=http_2xx' \
  --data-urlencode 'target=https://yuanty.ltd/typecho/'
journalctl -u blackbox_exporter -u nginx --since '15 minutes ago' --no-pager

模块名以实际配置为准。关注 probe_success、状态码与耗时;没有状态码可能尚未进入 HTTP 阶段。up 为 0 时先处理采集器或抓取链路,up 为 1 且 probe_success 为 0 时再查被测网站。

第二轮:按证据定位

DNS 失败查解析与来源;TLS 失败查域名、证书链、有效期及系统时间;502/504 查 Nginx 错误日志与上游;网站返回错误内容但状态 200 时,需检查应用日志和响应校验,不能只看状态码。

再用保持域名校验的本机请求区分内外链路:

curl --resolve yuanty.ltd:443:127.0.0.1 --max-time 10 \
  https://yuanty.ltd/typecho/ -o /dev/null -sS -w '%{http_code}\n'

本机成功而普通域名请求失败,继续查外部路径;两者都失败,结合本机日志排查。此命令不是公网用户体验证明。

恢复与升级

先保存报错和近期变更记录。若确认由刚刚发布的配置引起,恢复该次原配置,语法检查通过后按计划重载;不明确原因时不要反复重启数据库。出现数据损坏、备份不明、持续业务错误或权限越界时停止试错,保留证据并升级处理。

验收

原失败请求恢复、probe_success 为 1、规则恢复并收到恢复通知,分别记录。观察覆盖至少两个正常采集与评估周期,确认无反复波动。记录发现、定位、恢复时间及未解决事项,不能只写“重启好了”。

演练安排

只在隔离环境一次制造一个故障,事先准备恢复方法。不要在生产环境填满磁盘或停止数据库来验证一封邮件。测试环境、操作人、影响范围与结束验收都应明确。

内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
1

评论 (0)

取消