mcpField
I
incident-runbook-generator

incident-runbook-generator

github.com/patricio0312rev云与 DevOps63214 次安装41 周前更新
代码仓库

关于 incident-runbook-generator

incident-runbook-generator 是一项用于编写常见事件操作手册的技能,面向运维和当班团队。内容涵盖症状、调查、缓解、回滚、沟通及预防措施。

主要功能

  1. 01记录症状与检测方法
  2. 02提供逐步缓解措施
  3. 03包含调查和回滚步骤
  4. 04附带事件沟通模板
  5. 05列出预防措施

适用场景

  1. 01编写数据库连接故障指南
  2. 02记录部署回滚流程
  3. 03规范事件状态更新

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/patricio0312rev/skills --skill incident-runbook-generator

安装后在 Claude Code 中输入/incident-runbook-generator确认已加载。

详细介绍

事件应急手册生成器

为常见事件创建可执行的应急手册。

应急手册模板

# Runbook: Database Connection Pool Exhausted

**Severity:** P1 (Critical)
**Estimated Time to Resolve:** 15-30 minutes
**Owner:** Database Team (On-call)

## Symptoms

- Application errors: "connection pool exhausted"
- Increased API latency (>5s)
- Failed health checks
- CloudWatch alarm: `DatabaseConnectionsHigh`

## Detection

- Alert: DatabaseConnectionPoolExhausted
- Metrics: `active_connections > max_connections * 0.9`
- Logs: "Error: connect ETIMEDOUT"

## Immediate Actions (5 min)

1. **Verify the issue**
   ```bash
   # Check current connections
   SELECT count(*) FROM pg_stat_activity;
   ```
  1. 找出长时间运行的查询

    SELECT pid, now() - pg_stat_activity.query_start AS duration, query
    FROM pg_stat_activity
    WHERE state = 'active'
    ORDER BY duration DESC
    LIMIT 10;
    
  2. 终止阻塞查询(确认安全后)

    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE state = 'idle in transaction'
    AND now() - state_change > interval '5 minutes';
    

缓解措施(10 分钟)

  1. 扩展连接池(临时)

    # Update RDS parameter group
    aws rds modify-db-parameter-group \
      --db-parameter-group-name prod-params \
      --parameters "ParameterName=max_connections,ParameterValue=200"
    
  2. 重启应用程序(如有需要)

    kubectl rollout restart deployment/api
    
  3. 监控恢复情况

    watch -n 5 'psql -c "SELECT count(*) FROM pg_stat_activity;"'
    

根本原因调查

检查以下情况:

  • 最近是否有部署(新代码存在连接泄漏)
  • 是否出现流量激增(正常流量或 DDoS)
  • 是否有慢查询占用连接
  • 连接池配置是否过小
  • 应用程序是否未释放连接

回滚步骤

如果由部署导致:

# Rollback to previous version
kubectl rollout undo deployment/api

# Verify
kubectl rollout status deployment/api

沟通模板

初始通知(5 分钟内):

🚨 INCIDENT: Database connection pool exhausted
Status: Investigating
Impact: API errors and slowness
ETA: 15-30 min
Next update: 10 min

更新(每 10 分钟):

UPDATE: Killed long-running queries
Status: Mitigating
Impact: Still degraded, improving
Actions: Scaling connection pool
Next update: 10 min

解决通知:

✅ RESOLVED: Database connections normalized
Duration: 25 minutes
Root cause: Connection leak in v2.3.4
Fix: Rolled back to v2.3.3
Follow-up: Bug fix PR #1234
Postmortem: [link]

预防措施

  • 在仪表板中添加连接池指标
  • 设置连接超时(30s)
  • 在测试中添加连接泄漏检测
  • 设置部署前负载测试
  • 检查连接池大小是否合适

相关应急手册

  • 数据库 CPU 使用率过高
  • 数据库查询缓慢
  • 应用程序内存不足

## Output Checklist

- [ ] Symptoms documented
- [ ] Detection criteria
- [ ] Step-by-step actions
- [ ] Owner assigned
- [ ] Rollback procedure
- [ ] Communication templates
- [ ] Prevention measures
ENDFILE

评论

支持 Markdown