mcpField
S
sentry-setup-ai-monitoring

sentry-setup-ai-monitoring

github.com/getsentryクラウド・DevOps25895 回インストール35 週間前に更新
リポジトリ

sentry-setup-ai-monitoring について

LLM 呼び出し、エージェントの実行、ツール利用、トークン消費を Sentry で監視するためのスキルです。SDK の検出、計装、検証に加え、データ収集時のプライバシーにも触れています。

主な機能

  1. 01インストール済み AI SDK の検出
  2. 02トレース連携の設定
  3. 03手動 Span 計装の説明
  4. 04トークン、モデル、遅延の追跡
  5. 05プライバシーとサンプリングの指針

活用シーン

  1. 01アプリへの AI オブザーバビリティ追加
  2. 02エージェントとツール実行の追跡
  3. 03トークンや遅延データの欠落調査

MCP 対応

Python の `mcp` パッケージに対する Sentry の自動連携を、ほかの対応 AI SDK とともに説明しています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/getsentry/sentry-agent-skills --skill sentry-setup-ai-monitoring

インストール後、Claude Code で/sentry-setup-ai-monitoringを入力して読み込まれたか確認します。

詳細

Sentry AI エージェントのモニタリングを設定する

Sentry を設定して、LLM の呼び出し、エージェントの実行、ツールの使用状況、トークンの消費量を追跡します。

このスキルを使用するタイミング

  • ユーザーが「AI/LLM の呼び出しを監視」または「OpenAI/Anthropic の使用状況を追跡」したい場合
  • ユーザーが「AI オブザーバビリティ」または「エージェントのモニタリング」を求めている場合
  • ユーザーがトークンの使用状況、モデルのレイテンシー、AI のコストについて尋ねた場合

重要: 以下の SDK バージョン、API 名、コードサンプルは例です。API や最小バージョンが変更されている可能性があるため、実装前に必ず docs.sentry.io で確認してください。

前提条件

AI モニタリングにはトレーシングの有効化(tracesSampleRate > 0)が必要です。

データ取得に関する警告

プロンプトと出力の記録では、PII に該当する可能性の高いユーザーコンテンツが取得されます。 recordInputs/recordOutputs(JS)または include_prompts/send_default_pii(Python)を有効にする前に、以下を確認してください。

  • アプリケーションのプライバシーポリシーで、ユーザーのプロンプトとモデルの応答の取得が許可されていること
  • 取得したデータが適用される規制(GDPR、CCPA など)に準拠していること
  • Sentry のデータ保持設定が、データの機密性に適していること

プロンプト/出力の取得を有効にするかどうか、ユーザーに確認してください。デフォルトでは有効にせず、明示的に依頼または確認された場合にのみ設定してください。tracesSampleRate: 1.0 は開発環境でのみ使用してください。本番環境では、より低い値または tracesSampler 関数を使用してください。

まず検出する

設定の前に、インストール済みの AI SDK を必ず検出してください。

# JavaScript
grep -E '"(openai|@anthropic-ai/sdk|ai|@langchain|@google/genai)"' package.json

# Python
grep -E '(openai|anthropic|langchain|huggingface)' requirements.txt pyproject.toml 2>/dev/null

対応 SDK

JavaScript
パッケージインテグレーションSentry SDK 最小バージョン自動?
openaiopenAIIntegration()10.28.0はい
@anthropic-ai/sdkanthropicAIIntegration()10.28.0はい
ai(Vercel)vercelAIIntegration()10.6.0はい*
@langchain/*langChainIntegration()10.28.0はい
@langchain/langgraphlangGraphIntegration()10.28.0はい
@google/genaigoogleGenAIIntegration()10.28.0はい

*Vercel AI:Node.js、Cloudflare Workers、Vercel Edge Functions、Bun では 10.6.0 以降。Deno では 10.12.0 以降。呼び出しごとに experimental_telemetry が必要です。

Python

AI パッケージがインストールされるとインテグレーションが自動的に有効になります。明示的な登録は不要です。

パッケージ自動?備考
openaiはいOpenAI Agents SDK を含みます
anthropicはい
langchain / langgraphはい
huggingface_hubはい
google-genaiはい
pydantic-aiはい
litellmいいえ明示的なインテグレーションが必要です
mcp(Model Context Protocol)はい

JavaScript の設定

Node.js — 自動的に有効になるインテグレーション

トレーシングが有効になっていることを確認するだけです。AI パッケージがインストールされると、インテグレーションは自動的に有効になります。

Sentry.init({
  dsn: "YOUR_DSN",
  tracesSampleRate: 1.0, // Lower in production (e.g., 0.1)
  // OpenAI, Anthropic, Google GenAI, LangChain integrations auto-enable in Node.js
});

カスタマイズする場合(例:プロンプトの取得を有効にする場合は「データ取得に関する警告」を参照):

integrations: [
  Sentry.openAIIntegration({
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  }),
],
ブラウザー/Next.js OpenAI(手動でのラップが必要)

ブラウザー側のコードまたは Next.js メタフレームワークアプリでは、自動計装を利用できません。クライアントを手動でラップしてください。

import OpenAI from "openai";
import * as Sentry from "@sentry/nextjs"; // or @sentry/react, @sentry/browser

const openai = Sentry.instrumentOpenAiClient(new OpenAI());
// Use 'openai' client as normal
LangChain/LangGraph(自動的に有効)
integrations: [
  Sentry.langChainIntegration({
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  }),
  Sentry.langGraphIntegration({
    // recordInputs: true,
    // recordOutputs: true,
  }),
],
Vercel AI SDK

Edge ランタイムの場合、sentry.edge.config.ts に追加します。

integrations: [Sentry.vercelAIIntegration()],

呼び出しごとにテレメトリーを有効にします。

await generateText({
  model: openai("gpt-4o"),
  prompt: "Hello",
  experimental_telemetry: {
    isEnabled: true,
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  },
});

Python の設定

インテグレーションは自動的に有効になります。トレーシングを有効にして初期化するだけです。オプションをカスタマイズする場合にのみ、明示的なインポートを追加してください。

import sentry_sdk

sentry_sdk.init(
    dsn="YOUR_DSN",
    traces_sample_rate=1.0,  # Lower in production (e.g., 0.1)
    # send_default_pii=True,  # Opt-in: required for prompt capture (sends user PII)
    # Integrations auto-enable when the AI package is installed.
    # Only specify explicitly to customize (e.g., include_prompts):
    # integrations=[OpenAIIntegration(include_prompts=True)],
)

手動計装

対応 SDK が検出されない場合に使用します。

スパンの種類
op の値用途
gen_ai.request個々の LLM 呼び出し
gen_ai.invoke_agentエージェントの実行ライフサイクル
gen_ai.execute_toolツール/関数の呼び出し
gen_ai.handoffエージェント間の引き継ぎ
例(JavaScript)
await Sentry.startSpan({
  op: "gen_ai.request",
  name: "LLM request gpt-4o",
  attributes: { "gen_ai.request.model": "gpt-4o" },
}, async (span) => {
  span.setAttribute("gen_ai.request.messages", JSON.stringify(messages));
  const result = await llmClient.complete(prompt);
  span.setAttribute("gen_ai.usage.input_tokens", result.inputTokens);
  span.setAttribute("gen_ai.usage.output_tokens", result.outputTokens);
  return result;
});
主な属性
属性説明
gen_ai.request.modelモデル識別子
gen_ai.request.messagesJSON 入力メッセージ
gen_ai.usage.input_tokens入力トークン数
gen_ai.usage.output_tokens出力トークン数
gen_ai.agent.nameエージェント識別子
gen_ai.tool.nameツール識別子

プロンプト/出力のキャプチャを有効にするのは、ユーザーに確認してからにしてください(上記のデータキャプチャに関する警告を参照)。

検証

設定後、LLM を呼び出し、Sentry のトレースダッシュボードを確認します。モデル、トークン数、レイテンシを示す gen_ai.* 操作の AI スパンが表示されます。

トラブルシューティング

問題解決策
AI スパンが表示されないtracesSampleRate > 0 であることを確認し、SDK のバージョンを確認します
トークン数が表示されないストリーミングではトークンを返さないプロバイダーもあります
プロンプトがキャプチャされないrecordInputs/include_prompts を有効にします
Vercel AI が機能しない各呼び出しに experimental_telemetry を追加します

コメント