19.12.4 事件、问题与应急响应流程
4. 事件、问题与应急响应流程#
事件、问题与应急响应流程是运维协同体系的核心,目标是缩短MTTR、降低业务影响并持续改进系统可靠性。本节给出流程框架、分级标准、职责划分与可执行的应急示例、排错步骤和演练练习。
0. 流程原理草图(从发现到复盘闭环)
1. 事件管理流程与分级标准(含示例模板)
分级标准需与SLA/业务影响挂钩,并在工单系统固化。
- S0:全站/核心交易中断
- S1:关键功能受影响或核心服务性能严重下降
- S2:局部业务受影响或性能下降可绕过
- S3:单点故障或潜在风险
事件通报模板示例(工单或IM群公告):
【事件级别】S1
【影响范围】登录与下单延迟 > 5s
【开始时间】2024-05-01 10:12
【当前进展】确认Nginx 502,已切流到备用实例
【下一步计划】排查上游连接与数据库慢查询
【负责人】IC:张三 技术:李四 通讯:王五
2. 应急响应组织与职责(包含演练分工示例)
- 事件指挥官(IC):资源协调、决策、对外沟通
- 技术响应组:诊断、隔离、修复
- 通讯/客户组:公告、对外口径
- 记录与复盘组:时间线、证据整理
应急会议角色分工示例:
IC: 张三(整体指挥与升级)
Tech: 李四(负责Nginx与应用)
DBA: 赵六(数据库排查)
Comms: 王五(业务方沟通)
Recorder: 钱七(时间线与证据收集)
3. 响应流程与关键节点(含命令示例)
关键节点:首响应、升级、止损、恢复与验证、关闭。
示例:Nginx 502 事件快速止损与排错
# 1) 快速确认告警源与Nginx状态
systemctl status nginx --no-pager
journalctl -u nginx -n 50 --no-pager
# 2) 查看Nginx错误日志(路径按发行版调整)
tail -n 100 /var/log/nginx/error.log
# 3) 快速检查上游健康(示例上游为 app:8080)
curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/health
# 4) 止损:临时切流到备用上游(示例为上游配置)
nginx -t && nginx -s reload
# 5) 验证恢复
curl -I https://your.domain.tld/ | head -n 5
上游切流示例配置(/etc/nginx/conf.d/upstream.conf):
upstream app_backend {
server 10.0.0.11:8080 max_fails=2 fail_timeout=10s;
# 备用节点
server 10.0.0.12:8080 backup;
}
4. 问题管理与根因分析(含示例与工具命令)
触发条件:高频事件、重大故障复盘、监控趋势异常。
方法:5 Whys、鱼骨图、变更关联分析。
示例:慢查询导致应用超时
排查命令(MySQL):
# 查看慢查询日志是否开启
mysql -e "SHOW VARIABLES LIKE 'slow_query_log%';"
# 最近慢查询(需开启并配置日志路径)
tail -n 50 /var/log/mysql/slow.log
# 关联连接数和耗时
mysql -e "SHOW PROCESSLIST;"
输出:根因定位 + 变更修复 + 预防措施(如索引、限流、容量规划)。
5. 通报机制与协同规则(含审批与分级通报)
对内建立统一事件频道(含模板字段)。
对外通报必须审批,避免信息误导。
重大事件需阶段性通报:T+15min、T+60min。
对外通报示例:
【事件通报】部分用户访问延迟
【时间】10:12-10:36
【影响】部分区域访问延迟
【处理】已切换备用节点并恢复
【后续】将持续观察并完善自动切换机制
6. 事件记录与证据保全(含采集命令)
记录内容:时间线、关键操作、告警、日志、变更记录、监控曲线。
示例:采集日志与系统快照
# 保存系统与进程快照
date > /tmp/incident_snapshot.txt
uptime >> /tmp/incident_snapshot.txt
ss -s >> /tmp/incident_snapshot.txt
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 20 >> /tmp/incident_snapshot.txt
# 保存日志片段
journalctl -u nginx -S "2024-05-01 10:00" -U "2024-05-01 11:00" > /tmp/nginx_journal.log
7. 复盘机制与改进闭环(含模板与验收标准)
复盘问题:发生了什么、为何发生、为何未发现、如何防止再发生。
复盘输出:根因、改进措施、责任归属(流程/系统/人)、落地计划与验收标准。
复盘模板示例:
【事件摘要】Nginx 502导致登录不可用
【根因】上游应用线程池耗尽,触发连接超时
【检测缺失】未设置上游连接数与队列监控
【改进项】
1) 加入线程池监控告警(SLA: 5min)
2) Nginx上游配置健康检查
3) 压测覆盖峰值流量
【验收标准】连续两周无同类告警;压测通过并记录
8. 应急预案与自动化示例(含脚本与配置)
示例:一键切换Nginx到备用上游(/opt/runbook/switch_upstream.sh)
#!/usr/bin/env bash
set -euo pipefail
CONF="/etc/nginx/conf.d/upstream.conf"
BACKUP="server 10.0.0.12:8080;"
PRIMARY="server 10.0.0.11:8080;"
# 将primary标记为backup,切到备用
sed -i "s|${PRIMARY}|${PRIMARY} backup;|g" "$CONF"
nginx -t
nginx -s reload
echo "切流完成,当前上游:"
grep "server" "$CONF"
9. 排错清单(常见问题快速定位)
- 连接异常:ss -lntp、curl -v、检查DNS
- 资源瓶颈:top、iostat -x 1 5、free -h
- 日志异常:journalctl -u <svc>、tail -f
- 变更回滚:比对发布记录与配置差异
10. 练习与演练(可操作任务)
1) 演练S1事件:模拟Nginx上游异常,完成切流与通报。
2) 复盘练习:基于日志与时间线输出复盘报告。
3) 监控联动:编写脚本在告警触发时生成工单模板。
演练模拟命令:
# 模拟上游不可用(停止应用服务)
systemctl stop app.service
# 观察Nginx错误日志
tail -f /var/log/nginx/error.log
通过以上流程与示例,事件、问题与应急响应能形成“发现—处置—复盘—改进”的闭环,保障快速恢复与持续稳定。