计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
write-incident-runbook【效率与协作】创建包含诊断步骤、解决流程、升级路径和通信模板的结构化事故运行手册, 用于有效的事故响应。适用于为反复出现的告警记录响应流程、 在值班轮换中标准化事故响应、通过清晰的诊断步骤缩短 MTTR、 为新团队成员创建培训材料,或将告警注解直接链接到解决流程。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
创建可操作的运行手册,引导响应人员完成事故诊断和解决。
完整模板文件请参阅 Extended Examples。
根据事故类型和复杂程度选择合适的模板。
基础运行手册模板结构:
# [Alert/Incident Name] Runbook
## Overview | Severity | Symptoms
## Diagnostic Steps | Resolution Steps
## Escalation | Communication | Prevention | Related
高级 SRE 运行手册模板(摘录):
# [Service Name] - [Incident Type] Runbook
## Metadata
- Service, Owner, Severity, On-Call, Last Updated
## Diagnostic Phase
### Quick Health Check (< 5 min): Dashboard, error rate, deployments
### Detailed Investigation (5-20 min): Metrics, logs, traces, failure patterns
# ... (see EXAMPLES.md for complete template)
关键模板组件:
预期结果: 所选模板与事故复杂程度匹配,章节适合服务类型。
失败处理:
完整的诊断查询和决策树请参阅 Extended Examples。
创建带有具体查询的逐步调查流程。
六步诊断清单:
验证服务健康状态:健康端点检查和正常运行时间指标
curl -I https://api.example.com/health # Expected: HTTP 200 OK
up{job="api-service"} # Expected: 1 for all instances
检查错误率:当前错误百分比及按端点分解
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m])) * 100 # Expected: < 1%
分析日志:来自 Loki 的近期错误和主要错误消息
{job="api-service"} |= "error" | json | level="error"
检查资源利用率:CPU、内存和连接池状态
avg(rate(container_cpu_usage_seconds_total{pod=~"api-service.*"}[5m])) * 100
# Expected: < 70%
审查近期变更:部署、git 提交、基础设施变更
检查依赖项:下游服务健康状态、数据库/API 延迟
故障模式决策树(摘录):
预期结果: 诊断流程具体,包含预期值与实际值对比,引导响应人员完成调查。
失败处理:
完整命令和回滚流程的所有 5 个解决选项请参阅 Extended Examples。
记录带有回滚选项的逐步修复流程。
五种解决选项(简要摘要):
回滚部署(最快):针对部署后的错误
kubectl rollout undo deployment/api-service
验证 → 监控 → 确认解决(错误率 < 1%、延迟正常、无告警)
扩容资源:针对高 CPU/内存、连接池耗尽
kubectl scale deployment/api-service --replicas=$((current * 3/2))
重启服务:针对内存泄漏、连接卡死、缓存损坏
kubectl rollout restart deployment/api-service
功能标志/熔断器:针对特定功能错误或外部依赖故障
kubectl set env deployment/api-service FEATURE_NAME=false
数据库修复:针对数据库连接、慢查询、连接池耗尽
-- Kill long-running queries, restart connection pool, increase pool size
通用验证清单:
回滚流程:如果解决措施使情况恶化 → 暂停/取消 → 还原 → 重新评估
预期结果: 解决步骤清晰,包含验证检查,为每个操作提供回滚选项。
失败处理:
完整升级级别和联系目录模板请参阅 Extended Examples。
定义何时以及如何升级事故。
立即升级的情况:
五个升级级别:
升级流程:
联系目录:维护包含角色、Slack、电话、PagerDuty 的表格,涵盖:
预期结果: 升级标准清晰,联系信息易于获取,升级路径与组织结构一致。
失败处理:
包含完整格式的所有内部和外部模板请参阅 Extended Examples。
提供预先编写的事故更新消息。
内部模板(Slack #incident-response):
初始声明:
🚨 INCIDENT: [Title] | Severity: [Critical/High/Medium]
Impact: [users/services] | Owner: @username | Dashboard: [link]
Quick Summary: [1-2 sentences] | Next update: 15 min
进展更新(每 15-30 分钟):
📊 UPDATE #N | Status: [Investigating/Mitigating/Monitoring]
Actions: [what we tried and outcomes]
Theory: [what we think is happening]
Next: [planned actions]
缓解完成:
✅ MITIGATION | Metrics: Error [before→after], Latency [before→after]
Root Cause: [brief or "investigating"] | Monitoring 30min before resolved
解决:
🎉 RESOLVED | Duration: [time] | Root Cause + Impact + Follow-up actions
误报:无影响,无需跟进
外部模板(状态页面):
客户邮件模板:时间线、影响描述、解决方案、预防措施、赔偿(如适用)
预期结果: 模板在事故期间节省时间,确保通信一致,减少响应人员的认知负担。
失败处理:
完整的 Prometheus 告警配置和 Grafana 仪表板 JSON 请参阅 Extended Examples。
将运行手册与告警和仪表板集成。
向 Prometheus 告警添加运行手册链接:
- alert: HighErrorRate
annotations:
runbook_url: "https://wiki.example.com/runbooks/high-error-rate"
dashboard_url: "https://grafana.example.com/d/service-overview"
incident_channel: "#incident-platform"
在运行手册中嵌入快速诊断链接:
创建 Grafana 仪表板面板,包含运行手册链接(markdown 面板,列出所有事故运行手册及值班和升级信息)
预期结果: 响应人员可直接从告警或仪表板访问运行手册,诊断查询预填充,一键访问相关工具。
失败处理:
configure-alerting-rules - 将运行手册链接到告警注解以在事故期间立即访问build-grafana-dashboards - 在仪表板和诊断面板中嵌入运行手册链接setup-prometheus-monitoring - 在运行手册流程中包含来自 Prometheus 的诊断查询define-slo-sli-sla - 在事故严重程度分类中引用 SLO 影响