3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

障害対応でAIを使うなら「原因を聞くな、切り分けを聞け」

3
Posted at

障害対応でAIを使うなら「原因を聞くな、切り分けを聞け」

障害対応で生成AI(ChatGPTなど)を使うとき、いちばん危ないのはこれです。

  • ログや状況を貼って「原因は何?」と聞く
  • AIの「もっともらしい答え」を信じて調査が偏る
  • 結果、遠回りする(最悪、復旧が遅れる)

この記事は、AIを"正解マシン"にせず、障害対応で安全に使うコツを、「原因ではなく、切り分け(調査計画)を引き出す」という型でまとめます。

なぜ「原因を聞く」のが危ないのか

障害対応の初期は、情報が不完全です。

  • ログは一部しかない
  • 影響範囲が未確定
  • 直前変更が複数ある
  • 二次障害(監視・リトライ・タイムアウト)が混ざる

この状態で「原因は?」と聞くと、AIは最も筋が良さそうな仮説を提示します。
でもそれは「正解」ではなく、仮説の一つです。

仮説を"結論"として扱うと、調査が偏って復旧が遅くなります。

目的を変える:AIは「切り分け担当」にする

障害対応でAIに求めるべきはこれです。

原因の断定ではなく、切り分けの観点と調査順を作ること

つまりAIは

  • 「何が原因か」ではなく
  • 「何から確認すべきか」
  • 「どんな観点で切り分けるべきか」

を出す役割にします。

実務で使える手順(テンプレ付き)

STEP 0:まず人間が"事実"だけを書く(推測禁止)

AIに渡す前に、人間が事実を短く整理します。
ここが雑だと、AIの提案も全部ズレます。

【発生】
- 発生日時:
- 影響範囲(ユーザ/機能/件数):
- 重大度(S1/S2…):
- 収束状況(継続/断続/終息):

【再現】
- 再現性:あり/なし/不明
- 再現条件(分かっている範囲):

【直前変更】
- リリース/設定変更/DB変更/依存サービス変更:
- 変更の有無が不明なもの:

【観測された事実(推測を書かない)】
- ログ抜粋:
- メトリクス(CPU/メモリ/DB接続数/キュー滞留/レイテンシ等):
- エラーコード/例外名:

コツ: 原因っぽい言葉(「たぶんDB」「おそらくネットワーク」)を書かない
→ AIがその方向に引っ張られます。

STEP 1:AIへの質問は「切り分け」と「優先順位」に固定する

このプロンプトをコピペで使えます。

あなたは障害対応の支援役です。
以下は事実情報です(推測は含まれていません)。

やってほしいこと:
1) 考えられる原因"カテゴリ"を列挙(断定しない)
2) それぞれについて「最短で否定/肯定する切り分け手順」を提案
3) 調査の優先順位を、根拠(影響×確度×確認コスト)付きで並べる
4) 追加で取るべきログ/メトリクス/確認事項を提案
5) まずやってはいけない行動(副作用が大きい、調査を壊す等)があれば指摘

【事実情報】
(ここにSTEP0の内容を貼る)

STEP 2:可能なら「役割を分けて」同じ情報を複数AIへ

1つのAIに聞いて終わるより、2〜3の視点を集めると安全です。

  • AI①:SRE/インフラ寄り(ネットワーク、DB、リソース)
  • AI②:アプリ寄り(例外、非同期、リトライ、整合性)
  • AI③:運用寄り(変更管理、監視、切り戻し、影響分析)

※同じAIでも、役割を明示するだけで観点が変わります。

STEP 3(キモ):AIの「答え」ではなく「共通の切り分け観点」を採用する

AIから出てきた内容を、次の形でまとめます。

【複数AIで共通して出た切り分け観点】(優先)
- 観点A:
- 観点B:

【AIによって割れた観点】(要判断)
- 観点C:Aはこう、Bはこう

【今回の調査順】(人間が決める)
1.
2.
3.

理由:
- 影響が大きい
- 確認コストが低い
- 早期に否定できる

複数AIが同じ観点を挙げたものは、見落としの可能性が低い=優先しやすい
割れた部分は、前提不足 or 価値判断領域=人間が裁く

よく使う「切り分けカテゴリ」例(チェックリスト)

AIに聞くときも、手元の観点としても使えます。

  • 直前変更(コード/設定/DB/依存先)
  • 依存サービス(API, MQ, 認証, 外部SaaS)
  • DB(接続枯渇、ロック、スロークエリ、プール)
  • 非同期/キュー(滞留、リトライ嵐、DLQ、タイムアウト)
  • タイムアウト(上流/下流、LB、HTTPクライアント、スレッド枯渇)
  • リソース(CPU/メモリ/FD/ディスク/GC)
  • デプロイ/環境差(特定AZ/Podだけ、設定差、シークレット)
  • データ起因(特定顧客/特定レコード/境界値)
  • 監視・運用起因(アラート遅延、ログ欠落、ローテーション)

AIに「原因を言わせない」ためのコツ

1) 断定禁止を明示する

「断定しない」「カテゴリで」「切り分けで」をプロンプトに入れる。

2) "推測ワード"を入力側から排除する

「たぶん」「おそらく」「怪しい」などの先入観はAIに渡さない。

3) 重要な前提は固定して渡す

例:

  • 「直前のDB変更はない」
  • 「リリースはxx時に実施済み」
  • 「影響はxx機能に限定」

逆に、AIに聞かない方がいいこと

  • 本番での操作手順を"そのまま"採用(副作用が怖い)
  • 法務/契約/対外報告の最終文面(レビュー前提ならOK)
  • セキュリティや個人情報を含むログの丸投げ(マスキング推奨)

まとめ

障害対応でAIを使うなら、これだけ覚えておけばOKです。

  • 原因を聞くな
  • 切り分けを聞け
  • 調査順は人間が決めろ
  • 複数AIの共通点を優先しろ

AIは「当てる」より、調査の抜け漏れを減らす/無駄打ちを減らすのに効きます。

おまけ:そのまま使える「障害対応AIプロンプト(短縮版)」

以下は障害の事実情報です。
原因の断定は不要です。

1) 原因カテゴリを列挙
2) それぞれの最短切り分け手順
3) 優先順位(影響×確度×確認コスト)と根拠
4) 追加で取るべきログ/メトリクス
5) やってはいけない行動

【事実情報】
(貼る)
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?