LLMを使ったインシデント対応支援
調査開始からの数分を削り、一次対応者の認知負荷を下げる。ログ・メトリクス・トレースの要約と仮説生成をLLMに任せつつ、ハルシネーションを前提にした検証設計まで原理から解説。
- 1.LLM支援の核は検索拡張生成(RAG)。大量ログ・過去インシデントをベクトル検索で絞り込み、その断片だけをプロンプトに入れて要約・仮説生成させることでコンテキスト長の壁を回避する。
- 2.類似インシデント検索は埋め込みの意味的近さで見つけるため、表面的な文言が違っても根本原因が同じ過去障害を引ける一方、時系列の因果は保証しない。
- 3.出力は必ず「未検証の仮説」として扱う。ハルシネーション(存在しないログ行やAPIの捏造)は原理的に排除できず、実行系への自動反映ではなく人間のレビューを介す設計が前提になる。
障害対応の一次対応者が最初に費やす時間の多くは、原因調査そのものより「大量のログ・メトリクス・過去チケットをかき集めて状況を把握する」作業に消えます。LLMをこの初動に組み込む「インシデントコパイロット」は、事後のポストモーテムとは別物で、対応が進行中の数分〜数十分に、要約・仮説生成・過去事例検索を肩代わりすることを狙います。本稿はその内部動作と、避けられない限界を原理から扱います。
なぜ生ログをそのままLLMに渡せないか
大規模障害では、数万行のログと数百系列のメトリクス、数千spanのトレースが同時に発生します。LLMの入力窓(コンテキストウィンドウ)はトークン数に上限があり、しかも長い入力ほど途中の情報を見落とす傾向(lost in the middle)が知られています。生データを丸ごと詰め込む方式は、コスト・レイテンシ・精度のすべてで破綻します。
そこで実務的な構成は、観測基盤から関連する断片だけを事前に絞り込み、要約済みの短い文脈をLLMに渡す検索拡張生成(RAG: Retrieval-Augmented Generation)です。
- 抽出:直近の異常時刻帯を中心に、該当サービス・該当traceのログ行やspanだけを取得する。
- 圧縮:定型的なログ行(ヘルスチェック成功など)を除去し、エラー・警告・状態変化のみを残す。
- 埋め込み検索:現在の症状(エラー文言・スタックトレース・影響範囲)をベクトル化し、過去インシデントの記録から意味的に近いものを検索する。
- プロンプト構築:圧縮ログ+類似インシデント要約+現在のアラート内容を1つのプロンプトにまとめ、LLMに仮説とドラフト対応手順を生成させる。
LLM自体は自社サービスの内部事情を学習していません。RAGが担うのは、無限にある社内ログ・過去チケットの中から今の障害に関連しそうな部分だけを検索で絞り込み、限られたコンテキスト窓に収めることです。生成の質は、モデルの推論力以上に、この検索精度に律速されます。
類似インシデント検索の仕組みと限界
過去インシデントとの類似検索は、テキストを高次元ベクトルに変換する埋め込みモデルを使い、コサイン類似度などでの意味的な近さで一致度を測ります。キーワード一致(全文検索)と違い、「connection refused」と「upstream unreachable」のように表現が違っても意味が近い事例を引き当てられるのが利点です。
ただしこの類似度は症状の言語的な近さを測っているだけで、根本原因が同じであることを保証しません。同じ「タイムアウト」という症状でも、原因が接続プール枯渇のこともあれば下流サービスの過負荷のこともあります。逆に、文言がまったく異なる過去事例(例えばDNS TTL切れとコネクションリーク)が、実は同じ「クライアント側の再接続ロジック不備」という共通原因を持つ場合、埋め込みが表層的な語彙差を拾いすぎると類似候補から漏れることもあります。
検索結果の上位に出た過去インシデントは、調査すべき仮説の候補であって確定した原因ではありません。特に埋め込みモデルは時系列の因果(Aが起きたからBが起きた)を表現しないため、「似ている」と「同じ原因」を混同すると誤った復旧策(/devops/deployment-strategies/ のロールバック等)を早まって選んでしまうリスクがあります。
仮説生成とドラフト作成が担う役割
LLMが生成するのは主に次の3種類です。
- 状況要約:バラバラなログ・メトリクスの変化点を、時系列に沿った自然文で圧縮する。人間が数百行を読む代わりに数行で把握できる。
- 仮説の列挙:類似インシデントと現在のシグナルから「考えられる原因」を複数提示する。可能性の順位付けは統計的な尤もらしさではなく、学習データ中の頻出パターンの反映に過ぎない点に注意が必要。
- 対応手順のドラフト:過去のランブックや対応履歴を参照し、「まず何を確認し、何を実行するか」の叩き台を生成する。
これらはいずれも初動の叩き台であり、最終形ではありません。特に対応手順のドラフトは、実運用のインフラ構成が過去事例と微妙に異なる場合、有害な手順(対象を誤ったロールバックやスケールダウン)を提案しうる点が実行前提の設計と決定的に違います。
ハルシネーションと人間の最終判断
LLM支援を導入する際に避けて通れないのが、ハルシネーション(存在しない事実をもっともらしく生成する現象) です。障害対応の文脈では次のような形で現れます。
- 実在しないログ行やメトリクス値を「引用」として提示する。
- 存在しないAPIエンドポイントやコマンドオプションを対応手順に含める。
- 類似インシデントの根本原因を、実際のポストモーテム記録と異なる内容で要約する。
これはモデルの学習不足ではなく、次のトークンを尤もらしく予測する生成の仕組みそのものに起因するため、プロンプト設計や検索精度の改善で低減はできても原理的に排除できません。したがって設計上の前提は次の2点になります。
- 出力を実行系に直結させない:生成された手順やコマンドを自動実行するのではなく、人間が内容を検証してから実行する経路のみを許可する。
- 根拠を検証可能にする:要約や仮説には、参照した元ログ・元チケットへのリンクを必ず併記させ、人間が一次情報に戻って裏取りできるようにする。
LLMの出力は文体が整っているほど信頼されやすいという認知バイアス(自動化バイアス)が働きます。障害対応のような時間的プレッシャーが強い場面ほど、この罠にはまりやすい。LLMは調査を速める補助であり、復旧の意思決定者ではないという役割分担を、ツール導入時に明文化しておく必要があります。
まとめ
- LLM支援の核はRAGによる文脈選別。生ログを直接渡さず、抽出・圧縮・埋め込み検索で絞った断片のみをプロンプトに載せることでコンテキスト長とlost in the middleの問題を回避する。
- 類似インシデント検索は意味的な近さを測るのみで、根本原因の同一性や時系列因果は保証しない。検索結果は仮説の候補として扱う。
- 状況要約・仮説列挙・手順ドラフトはいずれも初動の叩き台であり、ハルシネーションのリスクを踏まえて実行系には直結させず、根拠リンク付きで人間が検証・判断する設計が前提になる。
- 事後のポストモーテムやインシデント指揮系統と組み合わせることで、対応中の初動短縮と事後の学習資産化の両輪が揃う。
DevOps/インフラ Article
LLMを使ったインシデント対応支援を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
LLM
比較で見る軸
難易度: advanced / カテゴリ: DevOps/インフラ / タグ数: 5
導入後に効く点
類似インシデント検索は埋め込みの意味的近さで見つけるため、表面的な文言が違っても根本原因が同じ過去障害を引ける一方、時系列の因果は保証しない。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- DevOps/インフラ
- タグ数
- 5
判断チェックリスト
- 自社の用途が「LLM / インシデント対応」に近いか確認する。
- 強みである「LLM支援の核は検索拡張生成(RAG)。大量ログ・過去インシデントをベクトル検索で絞り込み、その断片だけをプロンプトに入れて要約・仮説生成させることでコンテキスト長の壁を回避する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。