はじめに
先日リリースされた Instana 1.0.312 (SaaS版) にて、GenAI オブザーバビリティ機能が強化され、「MCP Tool Usage (ツールの使用状況)」 のモニタリングが可能になりました。
これまでも LLM 呼び出し自体のトレースは可能でしたが、「AIが具体的にどのツール(関数)を呼び出したのか?」「そのツールの実行にどれくらい時間がかかったのか?」といった、Agent icな挙動の詳細までは可視化されていませんでした。
本記事では、この新機能を実際に検証するための手順を、ゼロから構築するステップバイステップ形式で解説します。検証には Windows 11 の WSL2 環境と、Google Gemini モデルを使用したカスタム MCP (Model Context Protocol) サーバーを使用します。
アーキテクチャ概要
今回の検証環境の構成は以下の通りです。
- OS: Windows 11 (WSL2 Ubuntu 22.04 LTS)
- MCP Client: Claude Desktop (Mac/Windows) ※SSHトンネル等でWSL2に接続
- MCP Server: Python (FastMCP + Google GenAI SDK)
- Observability: Instana Agent (Host Agent) -> Instana Backend (SaaS)
Tool Metrics とは?
従来の GenAI 可観測性では、主に「LLM へのリクエストとレスポンス」が計測対象でした。しかし、Agentic AI の時代においては、LLM が外部ツール(天気予報 API、データベース検索、画像生成など)をどう使ったかが重要になります。
Instana 1.0.312 の新機能:
- Tool calls: ツールの呼び出し回数
- Tool response time: ツールの応答時間(レイテンシ)
- Erroneous tool call rate: ツールのエラー率
- Top tools invoked: 頻繁に使用されるツールのランキング
これにより、「AI の回答が遅い原因は、実は裏で呼び出している画像生成ツールのレスポンス低下だった」といったボトルネック分析が可能になります。
セットアップ手順
1. GitHub リポジトリのダウンロード
検証用に用意した、Instana 対応済みの MCP サーバーコードをダウンロードします。
# ホームディレクトリへ移動
cd ~
# リポジトリのクローン
git clone https://github.com/GSSJacky/mcp_observability_instana_gemini.git
# ディレクトリ移動
cd mcp_observability_instana_gemini/gemini-mcp-server
2. 環境変数の設定
Gemini API キーと Instana への送信設定を行います。
Instana Agent をローカル (WSL2内) で動かしている場合の設定例です。
# Google API Key (AI Studio で取得)
export GOOGLE_API_KEY="AIzaSy..."
# 使用するモデル
export GEMINI_MODEL="gemini-2.5-flash-image"
# Instana 送信設定 (Agent経由)
export TRACELOOP_BASE_URL="http://localhost:4318"
export TRACELOOP_HEADERS="x-instana-key=YOUR_INSTANA_AGENT_KEY"
export OTEL_EXPORTER_OTLP_INSECURE="true"
3. Python 仮想環境の準備とインストール
# venv 作成と有効化
python3 -m venv venv
source venv/bin/activate
# 依存ライブラリのインストール
pip install -r requirements.txt
※ requirements.txt には mcp, google-genai, traceloop-sdk, opentelemetry-api などが含まれています。
4. Instana Agent の設定確認
/opt/instana/agent/etc/instana/configuration.yaml で OpenTelemetry センサーが有効になっていることを確認します。
com.instana.plugin.opentelemetry:
enabled: true
設定変更後は Agent を再起動してください。
sudo systemctl restart instana-agent
5. MCP サーバーの起動
今回の検証の主役となる、Tool Metrics 対応版のプログラムを実行します。
python gemini_server_with_mcp_tool_metrics.py
ログに Traceloop exporting traces... が表示されれば起動成功です。
検証ステップ
Step 1: Claude Desktop からツールを実行する
Claude Desktop アプリを開き、設定した MCP サーバー(Gemini)に対して、ツール実行(Function Calling)を伴うプロンプトを投げます。
シナリオ: 画像生成 (generate_image)
「未来的な東京のサイバーパンクな街並みの画像を描いてください」
これにより、裏側で gemini_server_with_mcp_tool_metrics.py 内の generate_image 関数や ask_gemini 関数が実行されます。
Gemini Nanobananaのモデルで作成したイメージ:

Step 2: Instana ダッシュボードで確認
- Instana UI にログインし、サイドメニューから [GenAIの可観測性] (GenAI Observability) > [分析] (Analytics) を開きます。
- 画面上部のタブから [Tool metrics] を選択します。
- 検証結果が表示されていることを確認します。
確認ポイント
-
Tools: 使用したツールの種類数(例:
2)が表示されているか。 -
Top tools invoked:
generate_imageやask_geminiがリストアップされているか。 - Tool response time: 画像生成のような重い処理の時間がグラフ化されているか。
Step 3: トレース(Call)詳細での確認
[Top Tool Invoked] (Top tools) から個別のトレースをクリックし、詳細画面を開きます。
タイムライン上に generate_image.tool という名前の Span が表示されているはずです。

技術的な注意点とトラブルシューティング
今回の機能を有効にするにあたり、最もハマりやすいポイント(そして今回の検証で明らかになった重要事項)を共有します。
Note: Instana 独自のタグ仕様について
単に OpenTelemetry の GenAI セマンティック規約(gen_ai.operation.name 等)に従って Span を送るだけでは、Instana の Tool Metrics ダッシュボードには反映されませんでした。
Instana (および Traceloop) は、以下の特定のタグを必要としています:
-
traceloop.span.kind = "tool"- これが最も重要です。この属性がないと、ただの内部スパンとして扱われ、ツールとして集計されません。
-
traceloop.entity.name- ここに設定した値が、ダッシュボード上の「ツール名」として表示されます。
コード例 (Python):
with tracer.start_as_current_span(f"{tool_name}.tool") as span:
# Instana Tool Metrics に認識させるための必須タグ
span.set_attribute("traceloop.span.kind", "tool")
span.set_attribute("traceloop.entity.name", tool_name)
# ... ツールの実行処理 ...
「トレースは見えているのに Tool metrics が空」という場合は、このタグが付与されているかを確認してください。
まとめ
Instana 1.0.312 の Tool Metrics 機能により、AI アプリケーションの可観測性がさらに深まりました。特に Agentic なアプリケーション開発において、ツールのパフォーマンスやエラー率を個別に追跡できることは、品質向上に大きく寄与します。
ぜひこのガイドを参考に、ご自身の環境で検証してみてください。
参考資料
- IBM Documentation (Official):
-
GitHub Repository:
- mcp_observability_instana_gemini (検証用コード)
-
Qiita:
- Instanaで実現するMCP可観測性 #AI (基礎編: トレースの可視化について)


