🕵️

障害対応Bot「Sherlock」のご紹介

に公開

はじめに

こんにちは!マネーフォワードでSREをしている @tatsuo48です。

この記事では、先日 Zennの記事 で紹介した「Datadog MCP Server」を使って開発している障害対応Botについてご紹介します。

障害対応における課題

まずは、Bot開発の背景にある「障害対応における課題」について整理しましょう。

障害疑い(アラート発報)段階での課題

  • 属人性
    • アラートは鳴っているが、どう調査すればいいかわからない。
  • 習熟度の壁
    • 調査方針はわかっても、ツール操作に不慣れで時間がかかる。
  • 判断の難しさ
    • 「本当に危険な状態なのか?」「誤報なのか?」を判断する材料が即座に揃わない。

障害対応(インシデント発生)段階での課題

  • より高度な属人性
    • 体制が組まれるほど大きな障害になると、単純なRunbook(手順書)では太刀打ちできない。
  • フローの形骸化
    • 対応フローが決まっていても、有事の際にはその通りに動けないことが多い。
  • 情報共有の負荷
    • CS(カスタマーサクセス)など、顧客対応メンバーへの適切な状況共有が難しい。
  • 事後対応の負荷
    • ポストモーテムを書くのが大変。

その課題、LLMで解決しよう

さあ、そこで、LLMの登場です。
もちろん、Datadog公式の Bits AI SREも素晴らしいです。が、今回は以下の理由から自作することを選びました。

  • コスト面
    • 自作することでコストをコントロールしたい。
  • 拡張性
    • Datadog以外の社内ツールとも柔軟に連携させたい。
  • 技術的興味
    • ClaudeAgentSDKというツールで何をどこまでできるのかその可能性を感じてみたかった。

まあ、一番大きかったのは3つめかもしれませんw

作ったもの:Slack Bot「Sherlock」

今回作成した「Sherlock」は、インシデント対応時にチームの頼れる相棒」として機能するSlack Botです。
名前の由来は「シャーロック・ホームズ」です。

https://ja.wikipedia.org/wiki/シャーロック・ホームズ

弊社はエンジニアの過半数がすでに外国籍メンバーであり、エンジニア内においては英語が公用語となっています。そのような背景もあり、日本人以外が名前を聞いたときにどんなものなのかイメージできる名前にしました🔍

アラートが鳴ったとき

使い方としては以下の3つがあります。

  • @mention
    • メンションを飛ばして、自然言語で柔軟に調査を依頼できます。
  • スタンプ
    • slackチャンネルに届いたアラート通知にスタンプを押すことでも調査依頼はできます。
  • 自動調査
    • 事前に設定することで、DatadogやRollbarなどの指定したbotから届いたアラート通知に対して、全自動で調査を開始します。

これにより、以下のような作業が実行されます。

  • 🔍 調査: データソース(主にDatadogや社内文書)を使って状況を調査します。
  • 📊 分析: Datadogから得られた証拠(ログやメトリクス)や社内文書から得られた過去の知見から分析します。
  • 📝 報告: 調査結果を構造化し、アクション可能な形式でレポートします。

障害対応を進めるとき

アラート調査時と同様に調査・分析・報告もしてくれますが、合わせて

  • スラッシュコマンド
    • /start-incident/close-incident など、定型的なタスクを実行

によって、

  • 🤖 自動化: 対応用のSlackチャンネルの作成からポストモーテムの作成まで自動化

も行ってくれます。

どうやって作っているの?

技術スタックは以下の通りです。

  • Claude Agent SDK: AIエージェントの構築に利用。
    • 社内で利用している Glean, Datadog, Jira といったツールとは MCP (Model Context Protocol) で接続しています。

https://platform.claude.com/docs/ja/agent-sdk/overview

  • Slack Bolt: Slackと連携するサーバーの構築に利用。
    • このサーバー内部で Claude Agent SDK を動かしています。

https://docs.slack.dev/tools/bolt-js/ja-jp/getting-started/

  • Custom tools: MCPサーバだけでは足りないツール連携については、Claude Agent SDKの「Custom tools」という仕組みを使って自作しました。

https://platform.claude.com/docs/ja/agent-sdk/custom-tools

思わぬ効果

当初は「障害対応」にフォーカスして開発しましたが、実際に社内で導入してみると、日々のヘルスチェックや、ちょっとしたインフラ・SREに関する質問(例:「AWSにおけるRDSインスタンスの価格を比較して教えて」など)にも使われている様子が観測されました。

本来の目的からは外れますが、LLMの汎用性の高さに改めて驚かされています。

まとめ

いかがでしたでしょうか?
気になった方は、まずはDatadog MCP Serverを使えるようにするためにプレビューに申し込みましょう!

https://www.datadoghq.com/product-preview/datadog-mcp-server/

もちろん、公式の Bits AI SRE が最適解となる状況もたくさんあると思います。今回作ったbotは自作である分、当然Bits AI SREほど多機能ではありません。
弊社においても、今後のBits AI SREの機能の拡張や値下げ次第では、移行する可能性も十分にあります。

とはいえ、主業務の傍ら、実質3ヶ月程度(片手間)で構築できたものなので、仮に捨てることになってもサンクコストを気にするほどの負担ではありません。

この「爆速開発」は、Claude Agent SDKから他フレームワークへの移植性を一旦度外視した点や、Claude Agent SDK自体の機能拡張スピードに賭けた結果です。実際、Slackの公式MCP Serverがなく「どうしようか」と考えていた矢先に、Custom Tools機能がちょうどリリースされ、必要な機能を簡単に自作することができました。

技術が高速で変化していく昨今、「勝ち馬」を吟味するより、まずは手早く進めて「価値検証」することが大切だと改めて感じました。
みなさんも「なにか作りたいな」と思うものがあったら、今すぐ始めてみましょう。LLMのおかげで、その壁は限りなく低くなっているはずです。

Discussion