incident-runbook-generator について
incident-runbook-generatorは、運用チームやオンコール担当者向けに、よくあるインシデントの実行可能な手順書を作るスキルです。症状、調査、緩和、ロールバック、連絡、予防策を扱います。
主な機能
- 01症状と検知方法の記録
- 02段階的な緩和策の提示
- 03調査とロールバック手順の記載
- 04インシデント連絡テンプレートの追加
- 05予防策の一覧化
活用シーン
- 01データベース接続障害の手順書作成
- 02デプロイのロールバック手順の記録
- 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;
```
-
長時間実行中のクエリを特定する
SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC LIMIT 10; -
ブロックしているクエリを終了する(安全な場合)
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle in transaction' AND now() - state_change > interval '5 minutes';
緩和策(10 分)
-
接続プールを一時的に拡大する
# Update RDS parameter group aws rds modify-db-parameter-group \ --db-parameter-group-name prod-params \ --parameters "ParameterName=max_connections,ParameterValue=200" -
アプリケーションを再起動する(必要な場合)
kubectl rollout restart deployment/api -
復旧状況を監視する
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
コメント
Markdown 対応