计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
write-incident-runbook【效率与协作】効果的なインシデント対応のために、診断手順、解決手順、エスカレーションパス、 コミュニケーションテンプレートを含む構造化されたインシデントランブックを作成する。 繰り返し発生するアラートの対応手順を文書化する場合、オンコールローテーション全体で インシデント対応を標準化する場合、明確な診断手順でMTTRを削減する場合、新しいチームメンバー のトレーニング資料を作成する場合、またはアラートアノテーションを解決手順に直接リンクする 場合に使用する。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
インシデントの診断と解決を通じて対応者をガイドするアクション可能なランブックを作成する。
完全なテンプレートファイルは拡張例を参照。
インシデントの種類と複雑さに基づいて適切なテンプレートを選択する。
基本的なランブックテンプレート構造:
# [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
# ... (完全なテンプレートはEXAMPLES.mdを参照)
主要なテンプレートコンポーネント:
期待結果: 選択されたテンプレートがインシデントの複雑さに一致し、サービスの種類に適したセクションがある。
失敗時:
完全な診断クエリと決定ツリーは拡張例を参照。
具体的なクエリを含む段階的な調査手順を作成する。
六ステップの診断チェックリスト:
サービスの健全性を確認: ヘルスエンドポイントチェックとアップタイムメトリクス
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からのRecentエラーとトップエラーメッセージ
{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つの解決オプションはすべて拡張例を参照。
段階的なロールバックオプション付きの修復を文書化する。
5つの解決オプション(簡単な概要):
デプロイのロールバック(最速): デプロイ後のエラーの場合
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
ユニバーサル検証チェックリスト:
ロールバック手順: 解決策が状況を悪化させる場合 → 一時停止/キャンセル → 元に戻す → 再評価する
期待結果: 解決手順が明確で、検証チェックを含み、各アクションのロールバックオプションを提供する。
失敗時:
インシデントをいつどのようにエスカレートするかを定義する。
完全なエスカレーションレベルと連絡先ディレクトリのテンプレートは拡張例を参照。
即座にエスカレートするタイミング:
5つのエスカレーションレベル:
エスカレーションプロセス:
連絡先ディレクトリ: プラットフォーム/データベース/セキュリティ/ネットワークチーム、インシデントコマンダー、外部ベンダー(AWS、データベースベンダー、CDNプロバイダー)のロール、Slack、電話、PagerDutyのテーブルを維持する
期待結果: エスカレーションの明確な基準、連絡先情報へのすぐのアクセス、組織構造に合ったエスカレーションパス。
失敗時:
インシデントの更新のための事前作成されたメッセージを提供する。
すべての社内・社外テンプレートと完全なフォーマットは拡張例を参照。
社内テンプレート(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は拡張例を参照。
アラートとダッシュボードにランブックを統合する。
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ダッシュボードパネルを作成(すべてのインシデントランブックをオンコールとエスカレーション情報とともに一覧表示するマークダウンパネルでランブックリンクを表示)
期待結果: 対応者がアラートやダッシュボードから直接ランブックにアクセスでき、診断クエリが事前入力され、関連ツールへのワンクリックアクセスが実現する。
失敗時:
configure-alerting-rules - インシデント中の即時アクセスのためにランブックをアラートアノテーションにリンクするbuild-grafana-dashboards - ダッシュボードと診断パネルにランブックリンクを埋め込むsetup-prometheus-monitoring - ランブック手順にPrometheusからの診断クエリを含めるdefine-slo-sli-sla - インシデントの重大度分類でSLOの影響を参照する