Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アラートだけでここまで分析できるの!?AI Agentで切り開くアラート対応の新時代

Avatar for nutslove nutslove
November 18, 2025
170

アラートだけでここまで分析できるの!?AI Agentで切り開くアラート対応の新時代

Cloud Native Days Winter 2025の登壇資料です。
よろしくお願いします!

Avatar for nutslove

nutslove

November 18, 2025
Tweet

Transcript

  1. 自己紹介 2025/11/18 2 名前 李 俊起(イ ジュンギ) / Joonki Lee

    所属 KINTOテクノロジーズ株式会社 Platform Group / Platform Engineer 関心分野 Observability Kubernetes 生成AI
  2. 話す内容 2025/11/18 3 • アラート原因分析AI Agent導入背景 • アーキテクチャ & 処理フロー

    • Agentの機能追加/改善 • 実際の分析結果例 • 今後について • まとめ
  3. どういうAgentを作るか(最初の目標) 2025/11/18 7 • NewRelicからのアラート発報をトリガーに、原因分析を行い、 暫定対応のためのAWS CLIコマンドの提案から実行まで できるもの ➢ コマンドの実行は

    human-in-the-loop で人が介入 • アラートの通知から原因分析結果の通知、コマンド実行まで、 すべてSlack上で行えるようにする(ChatOps)
  4. AI Agentフレームワークの選定 2025/11/18 8 • 今はADKやOpenAI Agents SDKなど、様々なフレームワークが あるが、当時(2025年1月)はあまり選択肢がなく、 Bedrock

    AgentsとLangGraphを比較検討し、 以下の理由でLangGraphを採用 ➢ 簡単にReact Agentが作れる ➢ 細かなフローの制御が可能 ➢ LangSmithやLangfuseへのトレースの連携が可能
  5. 全体アーキテクチャ(Phase1 リリース時) 2025/11/18 10 • サーバーレス/イベント駆動型アーキテクチャで、コストを抑止 VPC API Gateway SlackBot

    Lambda SQS NewRelic Lambda CMDB Health Dashboard リカバリー基盤 SQS Recovery Lambda Agent Lambda 該当システムの HealthCheck Endpoint
  6. 処理の流れ 1/6 2025/11/18 11 VPC NewRelic Lambda CMDB Health Dashboard

    リカバリー基盤 SQS Recovery Lambda Agent Lambda 該当システムの HealthCheck Endpoint API Gateway SlackBot Lambda SQS アラートが発報されると、Lambdaが Slackにアラート内容の通知と 原因分析処理開始のお知らせをする。 それと同時に原因分析処理を 非同期で行うため、SQSキューに メッセージを送信する WebHook
  7. ※補足: なぜo11yツールのSlack通知を使わないのか 2025/11/18 12 • o11yツールからSlack Integrationで、直接Slackに通知し、 Slack投稿をトリガーに、処理を開始する方法もある • しかし、通知内容が1つのブロックに非構造化(plain

    text)データ に入っているため、データ抽出が困難 • Webhookの方がデータ整形とSlackへの通知の手間は増えるが、 構造化(json)データで連携されるため、必要なデータの抽出が 容易なので、Webhook方式を選択
  8. API Gateway SlackBot Lambda 処理の流れ 2/6 2025/11/18 13 VPC NewRelic

    Lambda リカバリー基盤 SQS Recovery Lambda CMDB Health Dashboard Agent Lambda 該当システムの HealthCheck Endpoint SQSからキューを取得し、AI Agentが処理を開始する。 Agentによる原因分析処理の前に、CMDBから取得した アラートが発生したシステムの情報(e.g. リソース一覧)や AWS Health Dashboardなどの情報をSystem Promptに入れる SQS
  9. CMDB Health Dashboard 該当システムの HealthCheck Endpoint SQS API Gateway SlackBot

    Lambda 処理の流れ 3/6 2025/11/18 14 VPC リカバリー基盤 SQS Recovery Lambda Agent Lambda NewRelic Lambda CloudWatch Aurora ECS ELB その他 リソース アラートが発生したシステムのリソース 『AWS CLI』と『NewRelicのクエリーを実行できるtool』を使って、 React Agentが、CMDBから取得したシステム情報を元に対象システム のアラートが発生したシステムのリソース(+関連するリソース)の状態や NewRelic上のメトリクス・ログ・トレースを確認しながら、 原因分析と暫定対応コマンドの生成を行う
  10. NewRelic Lambda CMDB Health Dashboard 該当システムの HealthCheck Endpoint SQS API

    Gateway SlackBot Lambda 処理の流れ 4/6 2025/11/18 15 VPC リカバリー基盤 SQS Recovery Lambda Agent Lambda 原因分析結果と暫定対応コマンドを Slackに通知
  11. Agent Lambda NewRelic Lambda CMDB Health Dashboard 該当システムの HealthCheck Endpoint

    SQS 処理の流れ 5/6 2025/11/18 16 VPC API Gateway SlackBot Lambda リカバリー基盤 SQS Recovery Lambda 人が コマンドの 実行を許可 処理開始の 通知 コマンドは リカバリー基盤上で 実行される
  12. API Gateway SlackBot Lambda リカバリー基盤 SQS Agent Lambda NewRelic Lambda

    CMDB Health Dashboard 該当システムの HealthCheck Endpoint SQS 処理の流れ 6/6 2025/11/18 17 VPC Recovery Lambda コマンド実行結果を Slackに通知
  13. Codebase AnalysisとしてClaude Codeを使用 2025/11/18 21 • Claude CodeをAPIとしてラッピングし、 AgentにToolとして追加 •

    実行有無/実行タイミング/関連性を調査するためのメッセージ (e.g. アプリーログ)はLLMが判断 • 調査対象のGithubリポジトリはCMDBから取得 • 初回リクエスト時にEFSにCloneしておき、2回目以降は更新が あった場合のみPullして更新
  14. Github issue起票 & Claude Code Actionsとの連携 2025/11/18 22 • SlackからGithub

    issue起票、さらにissue起票をトリガーに Claude Code Actionsの起動まで可能 Claude起動ありでGithub issueを起票すると Claudeメンション付きでissueが作成され、 Claude Code Actionsが起動される。 設定次第で自動PR作成まで可能。
  15. Codebase Analysis導入で別の課題が浮き彫りに 2025/11/18 24 • Lambdaの最大実行時間15分という制約で、 処理が途中で終わってしまうケースが出てきた • SQS →

    EventBridge Pipes → Step Fuctions → ECS Task の構成に変更し、サーバーレス/イベント駆動型アーキテクチャはそ のまま維持しつつ、最大実行時間の制約を解消
  16. CodeBase Analysis導入後の構成 2025/11/18 25 VPC API Gateway SlackBot Lambda SQS

    NewRelic Lambda CMDB Health Dashboard リカバリー基盤 SQS Recovery Lambda Agent ECS EventBridge Pipes Step Functions NLB EKS 該当システムの HealthCheck Endpoint EFS Github issue起票 Clone & Pull
  17. o11yツールの違いによる差分 2025/11/18 29 • 連携されるデータが異なる ➢ Grafanaからはアラートに設定されているクエリーが連携されず、直接 該当アラートに設定されているクエリーをGrafanaから取得 • AgentのToolの数

    ➢ NewRelicではAgentのToolとして2つだけだったが、Grafanaを始め とするOSS製のモニタリング基盤では、メトリクスはThanos、ログはLoki、 トレースはTempoみたいに多数のToolが必要
  18. Incident Managerのその他の機能(RAG連携) 2025/11/18 38 • Incidentのアラート内容と人のコメントをVectorStoreに取り込み、 AgentでRAGとして次の分析に活かす ➢ Agentの分析結果はGoodボタンが押されたものだけを取り込む •

    未完結のIncidentを含めるとノイズになってしまうため、 VectorStoreにはクローズ済みのIncidentのみを取り込む Agent ECS Incident Manager Aurora (Vector Store) ①アラート内容、分析結果を連携 (Incident登録) ②アラート内容、人のコメントを取り込む ③次のアラート発生時に参照
  19. Vector Storeの選定 1/2 2025/11/18 39 • 最初はOpenSearchをバックエンドとした、Bedrock KnowledgeBaseで実装 • その後、コストの観点からAurora

    Serverless(PostgreSQL)を バックエンドとした、 Bedrock KnowledgeBaseに変更 • PostgreSQLのBedrock KnowledgeBaseでは、一応ハイブリッ ト検索は使えるものの、日本語Tokenizerが存在せず、日本語の キーワード検索ができないことから、 Bedrock KnowledgeBase を使わず、素のpgvectorを利用する方法に変更
  20. Vector Storeの選定 2/2 2025/11/18 40 • pgvectorのセマンティック検索と、BM25によるキーワード検索を 組み合わせたハイブリッド検索 + Rerankを試すも期待通りの結果

    が得られず ➢ クエリーとログの内容的に類似度が高いものより、タイムスタンプが近いも のが上位に来たり • 結局、現在はpgvectorのセマンティック検索だけにしている ➢ 検索(取得)件数は10件など、多めにしている
  21. Chunking戦略(一般的なChunking) 2025/11/18 41 • Chunkを分割すると、不完全なデータがAgentに連携される可能 性がある Aurora (Vector Store) アラート情報

    ECS CPU使用率アラート 原因 ・・・ 対応履歴 ・・・ Incident情報 chunk1 chunk2 chunk3 Agent 「原因」と「対応履歴」、両方必要だけど、 片方だけ取得される可能性がある
  22. Chunking戦略(Parent-Child Chunking) 2025/11/18 42 • Parent-Child Chunkingは、 関連性の低いドキュメントが取得される可能性がある Aurora (Vector

    Store) アラート情報 ECS CPU使用率アラート 原因・対応履歴 <今回の事象と最も関連性の高い情報> アラート情報 ECS CPU使用率アラート 原因・対応履歴 <今回の事象と関連性の低い情報> Incident情報(1) chunk1 chunk2 Agent アラート情報で検索され る場合、どちらもECS CPUアラートなので、 (1)の方を取りたいのに、 (2)が取得される可能性 がある Incident情報(2) chunk1 chunk2 クエリーに使われる単位 Promptに含まれる単位
  23. Chunking戦略(Chunkingしない) 2025/11/18 43 • そのため、Chunkingをせず(Chunkを分割せず)、 1つのIncident情報を1つのChunkとして保存 Aurora (Vector Store) アラート情報

    ECS CPU使用率アラート 原因 ・・・ 対応履歴 ・・・ Incident情報 chunk1 Agent 検索もPromptに含めるのも全て、まと まった1つのChunkに対して行うので、 不完全なデータが含まれることなく、 関連性の低いものが検索される可能性 も低い
  24. データ検索のタイミング & クエリー (処理の最初に実施) 2025/11/18 44 • Agent処理の最初のステップで、アラート内容だけで検索をすると、 同じアラートの数あるIncidentから、現在のアラートと関連性の高 い履歴の検索ができない可能性がある

    Aurora (Vector Store) アラート情報 ECS CPU使用率アラート 原因・対応履歴 <今回の事象と最も関連性の高い情報> アラート情報 ECS CPU使用率アラート 原因・対応履歴 <今回の事象と関連性の低い情報> Incident情報(1) Agent まだ、アラートに関する情報が出 揃ってない処理の最初のタイミン グで、アラート内容だけ検索しても、 数多くの類似事象から関連性の 高い情報の検索が困難 Incident情報(2) “ECS CPU使用率”で検索
  25. データ検索のタイミング & クエリー (処理の最後に実施) 2025/11/18 45 • 最後のステップで行うと検索結果を踏まえた追加分析ができない Aurora (Vector

    Store) アラート情報 ・ALB Target Unhealthyアラート ・ALB Target Group : ECS Service ・Target ECS Service: hoge 原因・対応履歴 OpenSearch側で障害が発生し、 Logエージェントがログを送れず、 OOMが発生し、ECS Taskが落ちていた Incident情報 Agent 関連性が高そうな情報が取得 できたところで、さらにその情報を 元に調査を進めてほしいのに、 回答を生成してしまう ・ ・ “ALB Target Unhealthy、 Target ECS Service : hoge” で検索 前のステップでToolで確認した情報 + 検索で取得した原因・対応履歴を 元に回答を生成
  26. データ検索のタイミング & クエリー (処理の途中で実施) 2025/11/18 46 • そこで、検索(Retriever)をToolとしてAgentに追加し、 「検索タイミング」と「検索クエリー」はLLMに判断させる (Like

    “Agentic RAG”) ➢ ただ、検索クエリーにアラート内容は固定で入れる。 つまり、「クエリー = アラート内容(固定) + Context(変動)」 Aurora (Vector Store) アラート情報 ・・・ 原因・対応履歴 ・・・ Incident情報 Agent 過去類似情報検索 前のステップでToolで確認した情報 + 検索で取得した原因・対応履歴を 元に、さらに調査を進める
  27. ※補足: Rerankや検索件数の絞り込みはしなくて大丈夫? 2025/11/18 47 • Naive RAGでは、検索結果をそのままSystem Promptに埋め込 んで、LLMに回答をさせるので、関連性の低い内容を除外する必要 がある

    • 原因分析Agentでは、検索結果をそのまま使うのではなく、Agent にその中から今回の事象と関連するものだけを利用するよう、指示し ているので、関連性の低い履歴が混ざっていても影響が小さい ➢ 少しノイズとなるデータが混ざっていても、関連性の高いデータが漏れる より分析の質が高くなる可能性が高いため、取得件数を多めにしている • 追加で、システムIDをメタデータとして付与して、フィルタリングを することで対象システムの過去履歴だけを取得している
  28. 現在のアーキテクチャ(2025/11時点) 2025/11/18 48 VPC API Gateway SlackBot Lambda SQS NewRelic

    Lambda CMDB Health Dashboard リカバリー基盤 SQS Recovery Lambda Agent ECS EventBridge Pipes Step Functions NLB EKS 該当システムの HealthCheck Endpoint EFS CloudWatch Alarm o11y Lambda Incident Manager Aurora (Vector Store)
  29. 1. System Prompt ➢ 指示を具体的に、かつ順序を立てて書く ➢ Toolの使い方についてFew Shotを記載する 2. Context

    ➢ ToolやRAGから取得する動的なContextだけではなく、静的なContextも重要 ➢ 固定的に必要な情報は、事前に取得してSystem Promptに埋め込む方が効果的 3. Tool ➢ AgentがTool選択に迷わないよう、機能を明確に分ける ➢ Descriptionは、引数の説明も含めて詳細かつ明確に記載する (私が思う)AI Agent開発で最も重要な3要素 2025/11/18 56 1つでも欠けると期待した出力や行動を 安定して得ることは難しくなる。