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

この記事の要点
- 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_TELEMETRY | 1 で送信をオン |
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_RESPONSES | AIの返事の文章 |
OTEL_LOG_TOOL_DETAILS | コマンドの中身・道具の名前と入力 |
OTEL_LOG_RAW_API_BODIES | 会話の履歴を含む、やりとりの全文 |
オンにするのは、送り先の扱いと社内の決まりを確かめてからにします。 特に最後の1つは会話の履歴まるごとなので、ほかの3つすべてに同意したのと同じ扱いになります。何をどこまで集めるかは、使う人に先に伝えておきます。
Q6. Claude Code が動かすコマンドにも送信の設定は渡る?
渡りません。 Claude Code は OTEL_* の変数を、自分が動かすコマンド・フック・MCP のサーバーなどには引き継ぎません。自分のアプリも OpenTelemetry で計りたいなら、そのコマンドの中で直接設定します。
数字の使い方
入れた効果を見るなら、費用だけでなく「使った時間」と「変更の行数・コミット数」を一緒に見ます。 費用が増えても、作業が進んだ量が増えていれば、使い方としては前進です。逆に費用だけが増えている人には、使い方の相談にのるきっかけになります。
まとめ
- OpenTelemetry で 費用・トークン数・変更した行数・使った時間 などを自社の集計先に送れる
- 最小の設定は
CLAUDE_CODE_ENABLE_TELEMETRY=1と送り方・送り先。全員に配るなら管理者の設定に書く - プロンプトの中身は 既定では送られない。送る設定は社内の決まりを確かめてから
出典
この記事はAIを使って下書きし、著者が事実確認・加筆しています。ツールの機能や料金は変わることがあるため、最新の情報は各社の公式ページでご確認ください。


