1.2K Views
February 24, 26
スライド概要
JDDUG #15
https://datadog-jp.connpass.com/event/378380/
Zenn記事: https://zenn.dev/tatsuo48/articles/c2e6bb3064cb40
障害対応Bot「Sherlock」のご紹介 J D D U G # 1 5 よこやまたつお(tatsu048)
自己紹介 • Money Forward ◦ SRE/テックリード/副部長 ◦ SRE NEXT ▪ コアスタッフ(2023,24,25,26) • AWSとDatadogが得意です。 • 家計簿歴:14年 • SREの知識地図という本を書きました 基礎知識から現場での実践まで SRE 知識地図 北野勝久 近藤健司 小林良太郎 渡部龍一 齊藤拓弥 柘植翔太 横山達男 あふれる資料 から厳選した 「情報のハブ」 としての 入門書 技術評論社 システムの観測、障害対応、自動化、 組織運用までの1冊で学ぶ 第一線のエンジニアに、最短で学ぶための道しるべ
障害対応の"あるある"
障害対応の"あるある" • 突然のアラート対応 ◦ Datadogを開く。がなにをどうみたらいいかわからない • 有識者やキーマン以外による初動調査の難しさ ◦ すべてのケースを想定してrunbookを整備し切るのは難しい
AIに任せてみよう!
Sherlockとは • Slackに住むAIインシデント対応アシスタント • 調査と記録の専門家 (システム変更は絶対にしない) • Datadog・Rollbarのアラートを調査し、Gleanで社内知識も参照可能 SHERLOCK AI
Sherlockとは
• Slackに住むAIインシデント対応アシスタント
• 調査と記録の専門家 (システム変更は絶対にしない)
• Datadog・Rollbarのアラートを調査し、Gleanで社内知識も参照可能
Tran B. V. Son 1次
ex-CTO @ Money Forward | michii.dev
1ヶ月前・編集済み・
One of the internal projects we're building at Money Forward
(mainly by our Staff Engineer, tatsuo yokoyama) is called
Sherlock, an AI SRE. It's essentially built on the …さらに表示
翻訳を表示
Slack
"Can you help me fix this bugalert?"
"What's the infra cost for service X this month?"
"How many incidents do we have this month?"
...etc
Claude
AI SRE: Agentic Loop
Search service's logs, metrics...etc
Datadog
Search info about product/business, previous incidents...etc
Glean
Create postmortem...etc
Jira
Search code, commits, PRs...etc
GitHub
Custom Tools
©© あなたと他769人
58件のコメント・18件の再投稿
いいね!
コメント
再投稿
送信
Sherlockとは
• Slackに住むAIインシデント対応アシスタント
• 調査と記録の専門家 (システム変更は絶対にしない)
• Datadog・Rollbarのアラートを調査し、Gleanで社内知識も参照可能
Tran B. V. Son 1次
ex-CTO @ Money Forward | michii.dev
1ヶ月前・編集済み・
One of the internal projects we're building at Money Forward
(mainly by our Staff Engineer, tatsuo yokoyama) is called
Sherlock, an AI SRE. It's essentially built on the …さらに表示
翻訳を表示
Slack
"Can you help me fix this bugalert?"
"What's the infra cost for service X this month?"
"How many incidents do we have this month?"
...etc
Claude
AI SRE: Agentic Loop
Search service's logs, metrics...etc
Datadog
Search info about product/business, previous incidents...etc
Glean
Create postmortem...etc
Jira
Search code, commits, PRs...etc
GitHub
Custom Tools
©© あなたと他769人
58件のコメント・18件の再投稿
いいね!
コメント
再投稿
送信
3つの起動方法 • @sherlock でメンション / リアクションスタンプ → 対話的に調査 • DatadogやRollbarからの通知アラート → 自動で調査開始 • /start-incident → インシデントチャネル作成+初動調査
アーキテクチャ概要 • ベースとしてはSlack Bolt for JavaScriptを利用したSlack Bot • 処理の中でClaude Agent SDKを使っている Bolt + ClaudeAgent SDK MCP MCP
Claude Claude Agent SDK • Anthropic社が提供するAIエージェント開発用SDK • Claude Codeをローカルで使う際と機能面で大きな違いがない ◦ MCPサーバーに関しても、ローカル同様 .mcp.json に記載するだけ • CustomToolsで自作のMCPツールも簡単に追加できる
設計上のポイント: Slackスレッド = 会話コンテキスト • セッション管理はせずに、毎回Slackスレッドをプロンプトに含めるステートレス設計 メリット: • 人間が途中で書き込んだメッセージも自然にコンテキストに入る • セッション管理の複雑さがゼロになる • EKS Podsを簡単にスケール可能
設計上のポイント: 公式MCP + 自作ツールのハイブリッド構成 • 公式MCP → Datadogデータの取得、Gleanで社内ナレッジ検索 • CustomToolsによる自作ツール → Investigation Memory、Slack操作 • MCPという標準プロトコルだからこそ、公式と自作をフラットに組み合わせられる Datadogの監視データ x Gleanの社内知識 x 自作Memoryの調査履歴 → 複数のデータソースを横断した調査が可能に
開発で直面した3つの課題と解決
課題1: 大量のアラートによるコスト増 問題: Datadogアラートが1日に何十件も飛ぶ。全部AIで調査したらAPI代が爆発する • 弊社のサービスは100以上のマイクロサービスで構成 • Datadogモニタは1日に数百件のアラートが発生 • すべてをsherlockで調査するとAPIコストで破産する
課題1: 大量のアラートによるコスト増 問題: Datadogアラートが1日に何十件も飛ぶ。全部AIで調査したらAPI代が爆発する 解決: 多段フィルタ + モデル使い分け
課題1: 大量のアラートによるコスト増 問題: Datadogアラートが1日に何十件も飛ぶ。全部AIで調査したらAPI代が爆発する 解決: 多段フィルタ + モデル使い分け Alert着信 → ① Recovery除外 ("Recovered"なら即スキップ) → ② レートリミット (5分間に同一Botから5件超えたらスキップ) → ③ カスタムフィルタ (チャネルごとのパターンマッチ、AND/OR/NOT論理式) → ④ AIプリフィルタ (Haikuで高速トリアージ → 調査すべきか判断) → 本調査 (通過したものだけ)
課題1: 大量のアラートによるコスト増 コストの壁を以下の2つの工夫で解決 1. 呼ばない判断 — 多段フィルタで大半のノイズを除外 2. 安いモデルによるフィルタ — Haikuで高速トリアージ
課題2: 調査品質 — AIが的外れな調査をする 問題: 「サービスの状況を調査して」だけだとAIは漫然とデータを眺めるだけ • Datadogを使ってなにをどう調査すればいいか、AIは知らない • ユーザからのの指示は曖昧すぎて、明後日の方向に走り出してしまう可能性 • LLMは現在時刻を正確に把握できていない。モデルのカットオフ時点を現在と認識しがち ◦ メトリクスの調査ではこの誤解は致命的
課題2: 調査品質 — AIが的外れな調査をする 問題: 「サービスの状況を調査して」だけだとAIは漫然とデータを眺めるだけ 解決: 構造化された調査とヒューマンインザ・ループ、動的プロンプト
課題2: 調査品質 — AIが的外れな調査をする 問題: 「サービスの状況を調査して」だけだとAIは漫然とデータを眺めるだけ 解決: 構造化された調査とヒューマンインザ・ループ、動的プロンプト • ツールを使ってどのように調査すべきか?の知見をプロンプトに込める • ユーザからの指示が曖昧な場合は追加の情報提供を促す • 現在時刻を動的にプロンプトに埋め込む
課題2: 調査品質 — AIが的外れな調査をする 調査の知見をプロンプトに込める • 770行に及ぶ調査知見をプロンプトに構造化 • タイムライン確定 → 変更相関 → 症状深掘り → モニター確認 → レポート作成 • 各ステップで使うべきDatadogツールと調査方針を詳細に指示
課題2: 調査品質 — AIが的外れな調査をする ヒューマンインザループ • ユーザからの指示が曖昧な場合、追加情報を求めるようにプロンプトに記載 ◦ 例: 「対象サービス名が不明です。サービス名を教えてください。」 • SherlockはSlack上で対話的に動作するので、ユーザが追加情報を提供しやすい • Claude Coedにはplanモードもあるがステートレスな設計であるため、利用できない。 ◦ しかし、プロンプトに指示を書くだけでも同様の効果を実現できている
課題2: 調査品質 — AIが的外れな調査をする 動的プロンプトで「今」を教える: • 呼び出しのたびに現在時刻・ユーザーのタイムゾーンをプロンプトに埋め込む • 「過去4時間のエラー」 → AIが現在時刻から逆算して正確なUnixタイムスタンプでクエリ • LLMは「今何時か」を知らない → 教えないと時間指定のクエリが全部壊れる
課題3: コンテキストの断絶 — 毎回ゼロから調査が始まる 問題: 同じサービスの障害なのに、毎回「Datadogのタグ名は?環境は?」から始まる
課題3: コンテキストの断絶 — 毎回ゼロから調査が始まる 問題: 同じサービスの障害なのに、毎回「Datadogのタグ名は?環境は?」から始まる 解決: Investigation Memory (調査記憶) をMCPツールとして実装
課題3: コンテキストの断絶 — 毎回ゼロから調査が始まる
問題: 同じサービスの障害なのに、毎回「Datadogのタグ名は?環境は?」から始まる
解決: Investigation Memory (調査記憶) をCustom MCPツールとして実装
• CloudAgent SDKでは少量のコードを書くだけでMCPツールを追加可能
createSdkMcpServer({
name: 'memory',
tools: [
tool(
'save_investigation_context', // ツール名
'Save investigation context...', // 説明(AIが読む)
{ service: z.string(), ... }, // Zodスキーマ
async (args) => { /* 実装 */ } // ハンドラ
),
],
});
課題3: コンテキストの断絶 — 毎回ゼロから調査が始まる 問題: 同じサービスの障害なのに、毎回「Datadogのタグ名は?環境は?」から始まる 解決: Investigation Memory (調査記憶) をCustom MCPツールとして実装 • サービスごとにDatadogのタグ名、関連リポジトリ、過去のエラーパターンを保存 • 次回の調査時に プロンプトの指示で自動ロード
Datadog MCP Serverで実現する調査フロー ※ Datadog MCP Serverは現在Preview段階です
Datadog MCP Serverとは • Datadogが公式に提供するリモートMCPサーバー • AIエージェントからDatadogのデータに直接アクセス可能に • 複雑なAPI呼び出しを抽象化 → AIが自然言語の指示だけで監視データを取得・分析できる Datadog APIを直接叩く場合との違い: • API呼び出しの組み立て (エンドポイント選択、パラメータ構築)をMCPが抽象化 • AIが「エラーログを見たい」と思えば適切なツールを自分で選んで呼ぶ • 開発者はAPI仕様を意識せずにAI Agentにデータアクセスを与えられる
Sherlockでの具体的な活用 — 調査フローに沿って ステップ Datadog MCPツール やること ① タイムライ ン確定 list_metrics / get_metric_metadata メトリクスクエリでスパイク 発生時刻を特定 ② 変更相関 search_events デプロイイベント・設定変更 を検索 ③ 症状深掘り get_logs / search_spans エラーログ集約、トレース分 析 ④ モニター確 認 search_monitors 関連モニターのステータス一 覧取得
まとめ: AI Agent × 障害対応で学んだ3つのこと # 学び 実践 1 コスト制御は2段構え 多段フィルタ+モデル使い分け 2 品質はプロンプトに専門知識を構造 化して改善 調査の知見を体系化 3 MCPで公式と自作をシームレスに 統合 Datadog MCP+自作 Memory/URL/Slack MCP 「AIは万能ではないが、正しい制約と正しい道具、知識を与えれば、 アラートの初期調査も任せられる。」
おわり ご清聴ありがとうございました!