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?

GitHub CopilotのOTELテレメトリをPendo Agent Analyticsで可視化してみた

0
Last updated at Posted at 2026-05-19

はじめに

GitHub Copilotを組織で導入すると、こんな疑問が湧いてきます。

  • エンジニアは実際に何を聞いているのか?
  • どのくらい使われているのか?
  • そもそもROIはあるのか?

GitHub Copilot EnterpriseにはDashboardがありますが、「どんなプロンプトを投げていて、AIがどう答えているか」 という会話レベルの可視性はほぼゼロです。通常のObservabilityスタック(Grafanaなど)でOTELログを受け取ることはできますが、プロンプトのメタデータやトークン数は見えても、エンジニアが何を考え・何を解決しようとしているかという 文脈(コンテキスト) はログだけでは読み取れません。

そこで今回、Pendo Agent Analytics というAIエージェント向けの可視化プラットフォームを使って、GitHub CopilotのOTELテレメトリを会話レベルで分析できるようにしてみました。

Pendo Agent Analyticsとは

Pendo はプロダクトアナリティクスで知られるSaaSですが、その中の Agent Analytics は AIエージェント専用の可視化ソリューションです。従来のObservabilityツールと大きく異なる点は、「誰が・何を・どう聞いて・AIがどう答えたか」という会話の文脈をユーザー単位で追跡できることです。収集したデータから以下のインサイトが得られます。

OTELベースではなく、独自のConversations APIでデータを受け取る仕様です。そこで、OTELをPendoのスキーマに変換するプロキシを自作して繋いでみました。

課題:従来のObservabilityでは「全体像」が見えない

GitHub CopilotはOpenTelemetry(OTEL)に対応しており、VS Codeの設定を少し変えるだけでOTLPログを外部へ送れます。

{
  "github.copilot.chat.otel.enabled": true,
  "github.copilot.chat.otel.otlpEndpoint": "http://localhost:4318",
  "github.copilot.chat.otel.captureContent": true
}

こういったメタデータが見えます。

  • gen_ai.usage.input_tokens / output_tokens(トークン数)
  • gen_ai.request.model(使用モデル)
  • execute_tool スパン(ツール呼び出し)
  • レスポンス時間

でも、これだと 「エンジニアが何を聞いたか」「AIがどう答えたか」 という個別の会話内だけはみえるが、一個一個見ていくのは現実的ではありません。マネージャーや経営層に「Copilotって効いてるの?」と聞かれたとき、トークン数やレイテンシを見せても納得感が薄い。

必要なのはエンジニアリングメトリクスではなく、ビジネス文脈での可視化です。

解決策:OTEL → Pendo Agent Analytics プロキシ

Pendo Agent Analyticsは、AIエージェントのパフォーマンスを可視化するソリューションです。主な特徴はこちら。

  • 会話・プロンプト・レスポンスを収集してユーザー行動を分析
  • ROIの可視化(エージェントが本当にビジネス価値を生んでいるか)

アーキテクチャ

GitHub Copilot(VS Code)
        │  OTLP/HTTP
        ▼
agentanalyticsOTELproxy(Sinatra + Puma)
        │  生OTLPをそのまま転送
        │  トレース変換(invoke_agent ツリーを解析)
        ▼
Pendo Conversations API
        │
        ▼
Pendo Agent Analytics ダッシュボード

リポジトリ:Band-Aid/agentanalyticsOTELproxy

スタックはRuby(Sinatra + Puma)、プロトコルバッファのデコードに google-protobuf、テストにRSpec + WebMockを使っています。

何が取れるのか

Copilot ChatはOTELの規約に従い、エージェントターンごとに invoke_agent スパンを1つ発行します。その配下に chat スパンや execute_tool スパンがぶら下がります。captureContent: true を有効にすると、スパンには gen_ai.input.messages(プロンプト全文)と gen_ai.output.messages(レスポンス全文)も入ってきます。

プロキシが収集してPendoに送るデータ:

OTELソース Pendoフィールド 概要
gen_ai.input.messages props.content(prompt) ユーザープロンプト全文
gen_ai.output.messages props.content(agent_response) AIレスポンス全文(thinkingブロック含む)
gen_ai.usage.input_tokens agentInputTokenCount 入力トークン数
gen_ai.usage.output_tokens agentOutputTokenCount 出力トークン数
execute_tool スパン toolsUsed 呼び出したツール一覧
gen_ai.conversation.id conversationId 会話ID(マルチターン対応)
gen_ai.request/response.model agentModelsUsed 使用モデル(複数対応)
copilot_chat.user.feedback user_reaction 👍/👎フィードバック
resource user.id visitor_id エンジニアのID

thinking / reasoning ブロックにも対応しており、Copilotの思考プロセスもレスポンス内容に含めて送れます。なお、Pendo側にthinkingなのかagent responseなのか判別するためのプロパティがないため、すべてagent responseとして収集されてしまうのは玉に瑕。今後に期待。


セットアップ手順

1. プロキシを起動する

git clone https://github.com/Band-Aid/agentanalyticsOTELproxy
cd agentanalyticsOTELproxy
cp .env.example .env
# .env に PENDO_TRACK_EVENT_SECRET を設定
docker compose up --build

.env の主要設定:

PENDO_TRACK_EVENT_SECRET=your_secret_here
PENDO_ENDPOINT=https://data.pendo.io/data/agentic  # JPNリージョンは data.jpn.pendo.io
PENDO_AGENT_ID=github-copilot
DEFAULT_VISITOR_ID=copilot-anonymous

注意: PENDO_TRACK_EVENT_SECRET はPendoのJS埋め込みコードのサブスクリプションキーではなく、Subscription Settings → App Details → Show から取得できる「Track Event Shared Secret」です。

2. VS Code Copilotをプロキシに向ける

settings.json に追記:

{
  "github.copilot.chat.otel.enabled": true,
  "github.copilot.chat.otel.otlpEndpoint": "http://localhost:4318",
  "github.copilot.chat.otel.captureContent": true
}

captureContent: true がなければプロンプト・レスポンスの内容は空になります(トークン数等のメタデータのみ)。

3. 動作確認

Copilot Chatで何か質問を投げて、プロキシのログを確認:

INFO OTLP→Pendo proxy ready on 0.0.0.0:4318
INFO transformed trace 0123… → prompt=true response=true reactions=0
INFO pendo POST prompt ok (202)
INFO pendo POST agent_response ok (202)

Pendo上での可視化

実際にプロキシを動かして、PendoのAgent Analyticsにこんな会話が流れてきました。

Pendo Agent Analytics - GitHub Copilot OTEL

「Conversations」タブでは、エンジニアが投げた最初のプロンプト一覧が見えています。

  • is this SEO/AEO optimized?
  • wheres the decode logic?

会話をクリックすると、AIのレスポンス全文が確認できます。上のスクリーンショットでは「SEO/AEOの監査結果」がPendo上で可視化されており、Copilotが5つのツールを実行して71秒かけて回答したこと、具体的なGood/Issuesまで把握できます。

こういった可視性があることで、例えば:

  • エンジニアがどんな種類の質問をしているか(コードレビュー?設計相談?デバッグ?)を分類できる
  • 特定のプロンプトパターンでROIが高いかどうかを評価できる
  • コンプライアンス上問題のあるプロンプト(機密情報を含むなど)を検出できる

他にトピックの洗い出しや問題点を可視化できます。

例:
ユースケース
image.png

問題点
image.png

まとめ

観点 従来のObservability(Tempo等) Pendo Agent Analytics(今回)
トークン数・レイテンシ ✅ 見える ✅ 見える
会話内容・プロンプト △ 個別設定 ✅ 見える
ユーザー別の利用状況 △ 設定次第 ✅ 見える
ROI・ビジネス貢献度 ❌ 難しい ✅ 見える
ユースケースの把握 ❌ 難しい ✅ 見える
問題の検知 ❌ 難しい ✅ 見える

GitHub CopilotのOTELとPendo Agent Analyticsを組み合わせることで、**「エンジニアリングメトリクス」から「ビジネス文脈での可視化」**へ一段階上のAI投資管理ができるようになりました。

「Copilotに課金してるけど、本当に使われてる?効いてる?」という問いに答えるための一つのアプローチとして、ぜひ試してみてください。


参考

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?