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 使用率が高い場合
  • データベースクエリが遅い場合
  • アプリケーションの OOM

## Output Checklist

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

コメント