Claude Code 利用状況の監視|OpenTelemetryで見える化

公開 更新 著者 永上裕之仕事の自動化
数字のグラフが並んだ画面を見ながら、チームのAIの使われ方を確かめている様子のイメージ

この記事の要点

  • Claude Code は OpenTelemetry で、費用・トークン数・変更した行数・コミット数・使った時間などを自社の集計先に送れる
  • 最小の設定は CLAUDE_CODE_ENABLE_TELEMETRY=1 と送り方・送り先の環境変数。全員に配るなら管理者の設定で
  • プロンプトの中身やコマンドの詳細は既定では送られない。送る設定は中身ごとに分かれている

チームで Claude Code を使い始めると、「どれくらい使われているか」「費用はいくらか」「入れた効果は出ているか」を数字で知りたくなります。

Claude Code は、OpenTelemetry(観測データをやりとりする共通の仕組み)で利用状況を自社の集計先に送れます。この記事では、公式ドキュメント「Monitoring」(2026年11月2日確認)にもとづいて、よくある疑問に答える形で整理します。

Q1. 何が分かるの?

費用・トークン数・変更した行数・プルリクエストとコミットの数・実際に使った時間などが、数字の推移(メトリクス)として分かります。

指標分かること
claude_code.session.count始まった会話の数
claude_code.cost.usage費用(米ドル)
claude_code.token.usageトークン数(入力・出力・キャッシュの読み書きの別)
claude_code.lines_of_code.count足した行・消した行の数
claude_code.pull_request.count作ったプルリクエストの数
claude_code.commit.count作ったコミットの数
claude_code.code_edit_tool.decisionファイル編集を許可したか断ったか
claude_code.active_time.total実際に使っていた時間(放置の時間は除く)

費用とトークン数には、どのモデルか、メインの会話かサブエージェントか、といった内訳も付きます。どこで費用がかかっているかを探すときに役立ちます。費用を抑える工夫は Claude Codeの費用 でまとめています。

このほか、プロンプトを送った・道具を使った・API を呼んだ、といった出来事(イベント)も送れます。1つのプロンプトから起きた出来事は、同じ prompt.id でまとめて追えます。

Q2. 最小の設定は?

利用状況の送信をオンにする変数と、送り方・送り先の変数を設定して起動します。

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
claude
変数役割
CLAUDE_CODE_ENABLE_TELEMETRY1 で送信をオン
OTEL_METRICS_EXPORTER数字の送り方(otlp・prometheus・console・none)
OTEL_LOGS_EXPORTER出来事の送り方(otlp・console・none)
OTEL_EXPORTER_OTLP_ENDPOINT送り先(集計の仕組み)

送信の間隔は、数字が既定で60秒ごとです。試すときだけ短くし、本番では元に戻します。

Q3. 届いているかはどう確かめる?

集計先に claude_code.session.count が届いていれば成功です。 会話を始めたときに送られます。出来事だけを送る設定なら、プロンプトを1つ送って claude_code.user_prompt が届くかを見ます。

何も届かないときは、claude --debug-file <保存先> で起動し、記録の中の [3P telemetry] という行を探します。送信の失敗はここに出ます。

Q4. チーム全員に配るには?

管理者が配る設定(managed settings)の env に、同じ変数を書きます。

管理者の設定で送り先を決めると、各自が別の送り先を設定していても、起動時に外されます。送り先を各自に勝手に変えさせない仕組みです。一方で、送り方の選択(OTEL_METRICS_EXPORTER など)は各自が上書きできるので、固定したいならそれも管理者の設定に書きます。

また、リポジトリの .claude/settings.json に書いた送信の変数は無視されます。 誰かのリポジトリが勝手に送信をオンにしたり、送り先を変えたりできないようにするためです。設定ファイルの種類は Claude Codeのsettings.json入門、環境変数の効き方は Claude Code 環境変数の設定方法と目的別早見表 で説明しています。

Q5. プロンプトの中身まで送られない?

既定では送られません。 中身を送るかどうかは、中身の種類ごとに別の変数で決まります。

変数オンにすると送られるもの
OTEL_LOG_USER_PROMPTSプロンプトの文章
OTEL_LOG_ASSISTANT_RESPONSESAIの返事の文章
OTEL_LOG_TOOL_DETAILSコマンドの中身・道具の名前と入力
OTEL_LOG_RAW_API_BODIES会話の履歴を含む、やりとりの全文

オンにするのは、送り先の扱いと社内の決まりを確かめてからにします。 特に最後の1つは会話の履歴まるごとなので、ほかの3つすべてに同意したのと同じ扱いになります。何をどこまで集めるかは、使う人に先に伝えておきます。

Q6. Claude Code が動かすコマンドにも送信の設定は渡る?

渡りません。 Claude Code は OTEL_* の変数を、自分が動かすコマンド・フック・MCP のサーバーなどには引き継ぎません。自分のアプリも OpenTelemetry で計りたいなら、そのコマンドの中で直接設定します。

数字の使い方

入れた効果を見るなら、費用だけでなく「使った時間」と「変更の行数・コミット数」を一緒に見ます。 費用が増えても、作業が進んだ量が増えていれば、使い方としては前進です。逆に費用だけが増えている人には、使い方の相談にのるきっかけになります。

まとめ

出典

永上裕之

ユニコスクール株式会社 代表取締役。AIエージェント専門のスクール&コミュニティを運営しています。

この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。

関連する記事