0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

本記事では、IBM InstanaのModel Context Protocol (MCP) Observability機能を、Windows 11とWSL2上のUbuntu 22.04.5 LTSで検証した結果を紹介します。さらに、Claude DesktopからGemini 2.5 Flash Image(NanoBananaモデル)を呼び出し、InstanaのAPM製品を可視化した3Dアーキテクチャ画像を生成するまでの手順を解説します。

検証環境

  • クライアント環境: Windows 11
    • AIアシスタント: Claude Desktop
  • サーバー環境: WSL2 (Windows Subsystem for Linux)
    • OS: Ubuntu 22.04.5 LTS
    • Python: 3.10+ (venv使用)
  • モニタリングバックエンド: Instana SaaS
  • AI Model: Gemini 2.5 Flash Image (gemini-2.5-flash-image=Gemini Nanobananaモデル)

アーキテクチャ概要

主要コンポーネント

  1. Claude Desktop - ユーザーインターフェース、MCPクライアント
  2. Gemini MCP Server - PythonベースのMCPサーバー(Traceloop SDK統合)
  3. Instana SaaS - エンタープライズAPM/オブザーバビリティプラットフォーム
  4. Gemini API - 画像生成AI

セットアップ手順

1. GitHubリポジトリのダウンロード

まず、WSL2 Ubuntu環境でGitHubからソースコードをダウンロードします:

# ホームディレクトリに移動
cd ~

# GitHubリポジトリをクローン
git clone https://github.com/GSSJacky/mcp_observability_instana_gemini.git

# プロジェクトディレクトリへ移動
cd mcp_observability_instana_gemini/gemini-mcp-server

2. Instana Agentの設定

Instana AgentでOpenTelemetry sensorを有効化します。

OpenTelemetryプラグインの有効化

Instana Agentの設定ファイル /opt/instana/agent/etc/instana/configuration.yaml を編集します:

# OpenTelemetry Collector
com.instana.plugin.opentelemetry:
  # Enabled by default
  enabled: true

この設定により、Instana AgentはOTEL CollectorからのデータをPort 4318で受信し、Instana Backendへ転送します。

Agentの起動確認

# Instana Agentのステータス確認
sudo systemctl status instana-agent.service

# Agentが停止している場合は起動
sudo systemctl start instana-agent.service

[!NOTE]
Instana AgentがOTLPエンドポイント(localhost:4318)でリスンしていることを確認してください。

3. Claude Desktop MCP設定

Claude Desktopの設定ファイル(claude_desktop_config.json)に以下を追加します:

{
  "mcpServers": {
    "Gemini_NanoBanana": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:8000/mcp"]
    }
  }
}

4. Ubuntu環境のセットアップ

必要なパッケージのインストール

# 仮想環境の作成とアクティベート
python3 -m venv venv
source venv/bin/activate

# 依存パッケージのインストール
pip install -r requirements.txt

5. 環境変数の設定

# Google Gemini APIキー
export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY_HERE"

# 使用するGeminiモデル
export GEMINI_MODEL="gemini-2.5-flash-image"

# Instana OpenTelemetryエンドポイント(ローカルエージェント経由)
export TRACELOOP_BASE_URL="http://localhost:4318"

# Instana認証ヘッダー
export TRACELOOP_HEADERS="x-instana-key=YOUR_INSTANA_KEY_HERE"

# OTLP Insecure設定(ローカル開発用)
export OTEL_EXPORTER_OTLP_INSECURE="true"

[!WARNING]
上記のYOUR_GOOGLE_API_KEY_HEREYOUR_INSTANA_KEY_HEREは実際のキーに置き換えてください。本番環境では、環境変数ファイル(.env)を使用し、gitignoreに追加することを推奨します。

6. MCP Serverの起動

python gemini_server.py

期待される出力:

Traceloop exporting traces to http://localhost:4318, authenticating with custom headers

INFO:     Started server process [196315]
INFO:     Waiting for application startup.
StreamableHTTP session manager started
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Gemini画像生成の実行

Claude Desktopを再起動して、以下のプロンプトを実行します:

Professionalイメージを作成してください: 
エンタープライズ向け『APM製品:Instana』の3Dアーキテクチャ可視化。 
マイクロサービス、Kubernetes、クラウド、オンプレミスを横断する可観測性を立体構造で表現し、 
『アプリケーション』『サービス』『トレース』『メトリクス』『ログ』『AI分析』『ダッシュボード』などの要素を日本語ラベル付きで表示する。 
IBM公式資料風の洗練されたデザイン。

生成結果

instana_3d_architecture.png

このように、Gemini 2.5 Flash Imageモデルが、Instanaの多層アーキテクチャを美しい3D可視化として生成します。

Instanaでの可観測性の確認

1. GenAIサービスの検出

instana_genai_services.png

Instana SaaSバックエンドでは、MCP Server(gemini-mcp-server)が自動的に検出され、GenAIサービスとして分類されます。

2. トレースの可視化

instana_traces.png

各API呼び出しがトレースとして記録され、以下の情報が取得できます:

  • 呼び出しタイミング: リクエスト時刻とレスポンス時間
  • スループット: エントリ数/秒
  • サービス間の依存関係: gemini-mcp-server → Gemini API

[!NOTE]
直接分析画面から検索する際、左下にある「Show internal calls」を選択必要があります。

3. 呼び出し詳細の分析

instana_call_details.png

個々のAPI呼び出しに対して、以下が可視化されます:

  • タイムライン: リクエストからレスポンスまでの処理時間
  • スパン詳細: generate_image_taskなどの処理単位
  • サービス・エンドポイント・リスト: 依存関係の全体像

4. Claude Desktopでの実行結果

claude_desktop_execution.png

Claude Desktopからシームレスに画像生成を実行でき、その裏側でInstanaが全ての通信をトレースしています。

技術的なポイント

Traceloop SDKの統合

Instanaの公式MCP observability実装では、Traceloop SDKを使用します。

from traceloop.sdk import Traceloop

# 初期化
Traceloop.init(
    app_name="gemini-mcp-server",
    api_endpoint=os.getenv("TRACELOOP_BASE_URL"),
    headers={"x-instana-key": os.getenv("INSTANA_KEY")},
)

これにより、以下が自動でインストルメントされます:

  • LLM API呼び出し: Gemini APIリクエスト
  • プロンプト/レスポンス: 入力と出力のトラッキング
  • レイテンシー: API応答時間の測定

エクスポートモード

Instanaは2つのエクスポートモードをサポートしています:

モード 説明 設定方法
Agent Mode ローカルのInstanaエージェント経由 TRACELOOP_BASE_URL=http://localhost:42699/tracermetrics
Agentless Mode 直接Instanaバックエンドへ送信 TRACELOOP_BASE_URL=http://localhost:4318 (OTLPコレクター経由)

本検証では、Agentless Mode(OTLPコレクター経由)を使用しています。

トラブルシューティング

トレースが表示されない場合

  1. 環境変数の確認

    echo $TRACELOOP_BASE_URL
    echo $TRACELOOP_HEADERS
    
  2. OTLPエンドポイントの疎通確認

    curl -v http://localhost:4318/v1/traces
    
  3. ログの確認

    # MCP Serverのログを確認
    python gemini_server.py
    

サービスが表示されない場合

  • Instanaがサービスを検出するには数分かかる場合があります
  • 最低1回以上のAPI呼び出しが必要です

まとめ

本記事では、以下を達成しました:

✅ Windows 11 + WSL2 Ubuntu環境でInstana MCP Observabilityを構築
✅ Claude DesktopとMCP Server(Python)の統合
✅ Gemini 2.5 Flash ImageモデルによるAI画像生成
✅ Instana SaaSでのトレース・メトリクスの可視化
✅ GenAIアプリケーションの完全なオブザーバビリティの実現

この構成により、AIアシスタントのMCPバックエンドで何が起きているのか、どのAPIがどれだけの時間を消費しているのかを完全に可視化できます。エンタープライズ環境でAIアプリケーションを運用する際には、このような可観測性が不可欠です。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?