メインコンテンツにスキップ

Office エージェント用のカスタム OpenTelemetry コレクターを構成する

今日アップデートされました

Office エージェントからの完全な監査テレメトリを独自の OpenTelemetry (OTEL) コレクターにルーティングできます。これにより、組織は保持期間、暗号化、および SIEM または可観測性プラットフォームとの統合を完全に制御できます。

このガイドでは、カスタムコレクターを有効にする方法、受け取るデータ、および完全なスパンスキーマリファレンスについて説明します。

カスタム OTEL コレクターは、Claude Enterprise 組織およびダイレクトプロバイダーデプロイメント (Amazon Bedrock、Google Vertex AI、またはゲートウェイ) で利用できます。

受け取るデータ

カスタムコレクターを構成すると、Office エージェントはすべてのユーザーターンをカバーするトレースデータを送信します。各ターンは、プロンプト、モデル呼び出し、ツール実行、ファイルアップロード、およびコンテキスト圧縮イベントをキャプチャするスパンのツリーを生成します。

コレクターは、ユーザーが生成したコンテンツ (プロンプトテキスト、ツール入力と出力、ドキュメント URL、ファイル名) を含むすべてのスパン属性を受け取ります。属性は編集または除外されません。アシスタント応答テキストは、発行されたスパンデータに含まれません。組織がこのデータを所有しています。

重要: メトリクスはカスタムコレクターに送信されません。office_agent.* カウンター名前空間は Anthropic のみにルーティングされます。ただし、すべてのカウンター増分はアクティブなスパンのスパンイベントとしても表示されるため、同じシグナルがトレースで利用できます。

テレメトリは OTLP/HTTP 経由で {your_url}/v1/traces のエンドポイントに送信されます。アドインは Office WebView で実行されるため、gRPC はサポートされていません。


カスタムコレクターを有効にする

セットアップは、組織が Claude で認証する方法によって異なります。

重要: カスタムエンドポイントが構成されている場合、テレメトリはコレクターにのみ送信されます。スパンは Anthropic に二重送信されません。

Claude Enterprise (OAuth) 組織

組織管理者は、Claude.ai 管理コンソールの 組織設定 > Office エージェント でコレクターエンドポイントを設定します。この設定は組織全体に適用されます。

設定

説明

otlp_endpoint

OTLP コレクターのベース URL。アドインは /v1/traces を追加します。HTTPS を強く推奨します。

otlp_headers

オプションの認証ヘッダー。OpenTelemetry 仕様に従ってフォーマットされます: key1=value1,key2=value2

プロトコルは HTTP ベースの OTLP である必要があります。gRPC は構成時に拒否されます。

ダイレクトプロバイダーデプロイメント (Amazon Bedrock、Google Vertex AI、ゲートウェイ)

Claude.ai ではなく独自のモデルプロバイダーに対して認証するデプロイメントの場合、コレクターエンドポイントは 3 つの構成チャネルのいずれかを通じて提供されます。3 つすべてが同じ 2 つのキーを使用します。

推奨: Claude Code 用の claude-in-office プラグイン を使用してください。マニフェストの生成、Entra 拡張属性の登録、および otlp_endpointotlp_headers が事前配線されたブートストラップエンドポイントの構築をガイドします。以下の 3 つのチャネルは、参照および手動セットアップ用に記載されています。

キー

形式

説明

otlp_endpoint

HTTPS URL

OTLP コレクターのベース URL。アドインは末尾のスラッシュを削除し、/v1/traces を追加します。

otlp_headers

key1=value1,key2=value2

オプションの認証ヘッダー。OpenTelemetry OTEL_EXPORTER_OTLP_HEADERS 環境変数と同じ形式です。

otlp_endpoint が設定されていないか空の場合、カスタムコレクターは構成されず、アドインはデフォルト動作にフォールバックします。

注: これらの構成チャネルは Microsoft Office デプロイメントにのみ適用されます。Google Workspace アドインは別途構成されます。

チャネル 1: マニフェスト URL パラメーター

キーをカスタムアドインマニフェストのタスクペイン URL にクエリ文字列パラメーターとして追加します:

値を URL エンコードします。この構成は、マニフェストをインストールするすべてのユーザーに適用されます。

チャネル 2: Azure Entra ID ディレクトリ拡張

ユーザーごとの構成の場合、キーを Entra ID ディレクトリ拡張属性として登録し、Microsoft Graph 経由で割り当てます。アドインは Nested App Authentication (NAA) を使用してユーザーの ID トークンから読み取ります。

発行された ID トークンのクレーム名は Azure のディレクトリ拡張形式に従います:

クレーム

マップ先

extn.otlp_endpoint

otlp_endpoint

extn.otlp_headers

otlp_headers

ユーザーオブジェクトに対する Graph PATCH を使用して、ユーザーごとに設定します。Azure はディレクトリ拡張値を ID トークンの単一要素配列としてエンコードします。アドインは自動的にアンラップします。このチャネルには、NAA トークン取得を有効にするためにマニフェスト URL パラメーターに entra_sso=1 が必要です。

チャネル 3: ブートストラップエンドポイント応答

デプロイメントがブートストラップエンドポイント(組織がホストし、アドインが起動時に呼び出す JSON エンドポイント)を使用する場合は、レスポンスボディにキーを含めてください:

{
"otlp_endpoint": "https://otel-collector.your-domain.com",
"otlp_headers": "Authorization=Bearer <token>"
}

ブートストラップエンドポイント URL 自体は、マニフェスト URL パラメータまたは Entra extn.bootstrap_url クレームのいずれかで bootstrap_url を介して設定されます。Entra ID トークンが取得された場合、ベアラー認可ヘッダーとしてブートストラップエンドポイントに渡されるため、エンドポイントはユーザーを認証してからユーザーごとの設定を返すことができます。

優先順位

複数のチャネルが値を提供する場合、後のチャネルが前のチャネルをオーバーライドします。マニフェストパラメータが最初に読み込まれ、次に Entra クレーム、その後ブートストラップレスポンスが読み込まれます。ブートストラップレスポンスが優先されます。

まだの場合は、最速のパスは claude-in-office プラグインです。


デプロイメントモード

カスタムコレクターエクスポートは両方のデプロイメントモードで利用可能です:

  • Claude.ai Enterprise(OAuth):ユーザーアイデンティティ(user.emailuser.account_uuidorganization.id)、MCP サーバーメタデータ、ファイルアップロードレコードを含む完全な監査証跡。

  • ダイレクトプロバイダー(Bedrock、Vertex AI、ゲートウェイ):コア監査証跡(プロンプト、ツール入出力、ドキュメント URL)ですが、ユーザーアイデンティティなし、MCP メタデータなし、ファイルアップロードスパンなし。ユーザー属性は session.id を独自のアイデンティティプロバイダーログと相関させることで必要です。

コア監査ペイロードは両方のモードで同じです。ダイレクトプロバイダーデプロイメントは Claude.ai アカウントコンテキストがないため、Claude.ai ユーザーまたは組織プロファイルから派生した属性は存在しません。以下のスパンスキーマの [claude.ai-only] タグを参照して、完全なリストを確認してください。

サーフェスとベンダーラベル

すべてのスパンには、どの Office アプリケーションとプラットフォームがそれを生成したかを識別する 2 つのラベルが含まれます。これらをフィルタリングとダッシュボードの主要なディメンションとして使用してください。

ラベル

agent.surface

sheet(Excel/Google Sheets)、doc(Word)、slide(PowerPoint)

agent.vendor

m(Microsoft)


スパンリファレンス

各ユーザーターンは最大 5 つのスパンタイプの親子ツリーを生成します。[content] でマークされた属性はユーザー生成データを含みます。これらが監査ペイロードを形成します。[claude.ai-only] でマークされた属性は、ユーザーが Claude アカウントでサインインした場合にのみ入力されます。Bedrock、Vertex AI、ゲートウェイデプロイメントでは存在しません。存在しない属性はスパンから完全に省略されます(null 値を持つキーはありません)。

file.upload スパンとすべての mcp.* 属性も [claude.ai-only] です。ファイルアップロードと MCP サーバー接続は Claude プラットフォーム機能だからです。

ダイレクトプロバイダーデプロイメントの場合、ユーザーアイデンティティは session.iddocument.url を介して相関させ、アイデンティティプロバイダーのセッションログに対して結合する必要があります。

リソース属性

これらの属性はすべてのスパンに表示されます:

属性

説明

service.name

固定値:office-agent

service.version

固定値:1.0.0

git.sha

ビルドコミット識別子

agent.query(ルートスパン)

ユーザーターンごとに 1 つのスパン。これはスパンツリーのルートであり、セッションアイデンティティ、ドキュメントコンテキスト、MCP サーバーステータスを含みます。SpanKind:INTERNAL。

属性

説明

agent.surface

sheet | doc | slide

agent.vendor

m

user.message [content]

ユーザーのプロンプト(最初の 4000 文字)

session.id

不透明なセッション識別子

user.email [claude.ai-only]

ユーザーのメールアドレス

user.bucket [claude.ai-only]

決定論的ハッシュバケット(メールの SHA-256、mod 30)

user.account_uuid [claude.ai-only]

Claude アカウント UUID

document.url [content]

開いている Office ドキュメントの URL

organization.id [claude.ai-only]

Claude 組織 UUID

org.rate_limit_tier [claude.ai-only]

Claude サブスクリプション層

org.type [claude.ai-only]

Claude 組織タイプ

agent.selected_model

このセッションでユーザーが選択したモデル

office.platform

PC | Mac | OfficeOnline | iOS | Android | Universal

office.version

Office ビルド番号

mcp.configured_count [claude.ai-only]

設定された MCP サーバーの数

mcp.connected_count [claude.ai-only]

正常に接続された MCP サーバーの数

mcp.failed_count [claude.ai-only]

接続に失敗した MCP サーバーの数

mcp.fetch_status [claude.ai-only]

success | error | timeout | no_auth | not_attempted

mcp.fetch_duration_ms [claude.ai-only]

MCP レジストリ取得期間

mcp.fetch_http_status [claude.ai-only]

MCP レジストリ取得 HTTP ステータスコード

mcp.servers [content] [claude.ai-only]

シリアル化された MCP サーバーの詳細(名前、ツール数、エラーメッセージ)

file.upload.count [claude.ai-only]

このターンに添付されたファイルの数

file.upload.total_bytes [claude.ai-only]

アップロードされた合計バイト数

file.upload.image_count [claude.ai-only]

画像添付の数

file.upload.document_count [claude.ai-only]

ドキュメント添付の数

file.upload.other_count [claude.ai-only]

その他の添付の数

error.name

例外クラス名(失敗時に表示)

agent.query_phase

クエリが失敗したフェーズ(失敗時に表示)

agent.stream

Claude への API 呼び出しごとに 1 つのスパン。クエリスパンの子。SpanKind: CLIENT。

属性

説明

model

この呼び出しに使用されたモデル ID

max_tokens

リクエストされた最大出力トークン

agent.message_count

ストリーム開始時の会話内のメッセージ数

input_tokens

請求対象の入力トークン(APIレスポンスから)

output_tokens

請求対象の出力トークン(APIレスポンスから)

cache_read_tokens

プロンプトキャッシュから提供されたトークン

cache_creation_tokens

プロンプトキャッシュに書き込まれたトークン

stop_reason

end_turn | tool_use | max_tokens | など

request_id

Anthropic APIのrequest-idヘッダー、サポート相関に使用可能

プロンプトキャッシングに関する注記:アドインはプロンプトキャッシングを無条件にリクエストします。cache_read_tokensおよびcache_creation_tokens属性はプロバイダーのAPIレスポンスから設定され、レスポンスに含まれていない場合は省略されます。プロンプトキャッシングはClaudeデベロッパープラットフォームで利用可能です。現在のところ、Amazon BedrockおよびGoogle Vertex AIは、アドインが使用するクライアントを通じてこれらのフィールドをまだ返していません。サポートがプロバイダーに対応すると、これらの属性は自動的に表示されるようになります。

agent.tool_execution

ストリームスパンの子として、ツール呼び出しごとに1つのスパン。SpanKind:INTERNAL。これはモデルがドキュメントに対して実行したアクションの主要な記録です。

属性

説明

tool_name

ツール識別子(例:get_cell_ranges、execute_office_js、edit_slide_xml)

tool.id

このツール呼び出しの一意のID

tool.caller

server | client

tool.owner

first_party | mcp | server

tool.read_write

read | write | read_write

tool.accept_decision

manual | auto_accept | deferred

tool.input [content]

シリアル化されたツール入力(最初の4000文字)

tool.success

ブール値

tool.output [content]

シリアル化されたツール出力(最初の4000文字)

tool.output_chars

出力の完全な長さ(文字数)(切り詰めを検出するために使用)

tool.error_type

エラー分類(失敗時に表示)

sheet.cells_read

読み取られたセル(シート表面のみ)

sheet.cells_written

書き込まれたセル(シート表面のみ)

sheet.cells_copied

コピーされたセル(シート表面のみ)

注記:tool.accept_decision属性は、権限決定がどのように行われたかを記録します:manual(ユーザーがこの特定のアクションを承認した)、auto_accept(ユーザーが以前に継続的な承認を付与していた)、またはdeferred(アクションが後で確認するためにキューに入れられた)。これを使用して、組織全体の承認パターンを監査します。

agent.compaction

会話ごとに1つのスパンで自動要約を実行し、コンテキストがウィンドウ制限に近づくと発火します。SpanKind: CLIENT。

属性

説明

compaction.pre_tokens

要約前のトークン数

compaction.post_tokens

要約後のトークン数

compaction.tokens_saved

差分

compaction.success

ブール値

compaction.trigger

現在は常にリアクティブ

このスパンは、agent.surfaceagent.vendorsession.iduser.email [claude.ai-only]user.bucket [claude.ai-only]office.platformoffice.versionも含みます。これらはルートスパンから複製されているため、圧縮イベントを独立して照会できます。

file.upload [claude.ai-only]

クエリスパンの子として、個別のファイルアップロードごとに1つのスパンが作成されます。SpanKind: CLIENT。このスパンタイプは、Claude.aiアカウントでサインインしたユーザーの場合のみ表示されます。ファイルアップロードは直接プロバイダーデプロイメントでは利用できません。

属性

説明

file.upload.filename [content]

元のファイル名

file.upload.size_bytes

ファイルサイズ

file.upload.mime_type

MIMEタイプ

file.upload.file_id

Anthropic Files API識別子

file.upload.success

ブール値


スパンイベント

スパンイベントは、上記のスパンに付加されたタイムスタンプ付きマーカーです。ライフサイクルの遷移とカウンター相当のシグナルをキャプチャします。

  • agent.query: exception {exception.type}; file_upload {file_id, mime_type, content_category}

  • agent.stream: first_token; stream_complete; stream_error {exception.type}

  • agent.tool_execution: tool_init; tool_run; tool_result; tool_error {error_type}

  • agent.compaction: compaction_start; compaction_complete; compaction_error {exception.type}

  • file.upload: exception {exception.type}

すべての内部製品カウンターは、現在アクティブなスパンに同じ名前のスパンイベントも記録し、メトリクスストリームと同等のものをトレースデータ内で提供します。office_agent.token.usageイベントは各agent.streamスパンで発行され、ゼロ以外のトークンタイプごとに1回、属性{token_usage.type: input | output | cacheRead | cacheCreation, token_usage.model, token_usage.token_count}を持ちます。これは他のAnthropicプロダクトから発行される*.token.usageカウンター形状をミラーリングしているため、単一のコレクターはservice.nameでグループ化することで、プロダクト全体のトークンコストを集約できます。


サーフェス固有の動作

テレメトリスキーマはすべてのサーフェスで一貫しています。これらが相違点です:

  • Sheets (Excel): agent.tool_executionスパンにはsheet.cells_readsheet.cells_writtensheet.cells_copied属性が含まれます。office_agent.cell_edit_collision_totalスパンイベントは、ユーザーがセル編集中にツールが書き込みを試みるときに表示されます。

  • Documents (Word): ドキュメント編集ファネルイベントは編集ライフサイクルを追跡します: office_agent.doc_edit_received_totaloffice_agent.doc_edit_parsed_totaloffice_agent.doc_edit_applied_totaloffice_agent.doc_proposed_edit_reviewed_totalsheet.cells_*属性はありません。

  • Slides (PowerPoint): 共通スキーマ以外のサーフェス固有の属性またはイベントはありません。


ユーザーセッションの再構築

Claude.aiデプロイメント

  • user.email(またはuser.account_uuid)とsession.idでスパンをフィルタリングします。

  • agent.queryスパンを開始タイムスタンプで順序付けします。各スパンは1つのユーザーターンです。

  • 各ターンについて、user.messageはプロンプトで、document.urlは作業中のファイルです。

  • agent.tool_executionスパンはタイムスタンプで順序付けされ、実行されたアクションです: tool.inputは試みられたもので、tool.outputは結果で、tool.accept_decisionはユーザーが明示的に承認したかどうかを記録します。

直接プロバイダーデプロイメント

このモードではアドインにClaude.aiユーザーIDがないため、スパンはuser.emailまたはuser.account_uuidを含みません。アクティビティをユーザーに属性付けするには:

  • session.idでスパンをフィルタリングして、1つの継続的なアドインセッションを分離します。

  • document.url を使用して、作業中のファイルを識別します。

  • セッションをアイデンティティプロバイダーのログと照合します:Entra サインインイベント、ゲートウェイアクセスログ、またはブートストラップエンドポイントのリクエストログ(ユーザーの Entra ID トークンを Bearer ヘッダーとして受け取ります)。

  • セッションがユーザーに属すると判定されたら、ターンごとの再構成は同じです:agent.query はタイムスタンプで順序付けられ、user.messagetool.inputtool.outputtool.accept_decision が監査証跡を提供します。

これにより、両方のデプロイメントモードでインタラクションの完全で順序付けられたトランスクリプトが生成されます。

こちらの回答で解決しましたか?