Claude Codeのパフォーマンスを丸裸にする:OpenTelemetry+Jaegerで実現する5分間可視化術
出典: yuto[SEEDA]

Claude Codeの操作時間やトークン消費量を可視化する方法を紹介。OpenTelemetryとJaegerを使えば、わずか8分の設定でボトルネックとコストが一目瞭然になります。AIツールの運用最適化に必須のテクニックです。
AIコーディングツールの「見えないコスト」問題
Claude Codeを日常的に使っていると、ある違和感に気づきます。「今の処理、なぜこんなに時間がかかったんだろう?」「今月のトークン消費量、想定より多くない?」――こうした疑問に対して、標準のUIは何も答えてくれません。
これはAIコーディングツール全般に共通する課題です。GitHub CopilotやCursorでも同様ですが、内部で何が起きているかはブラックボックス。特にトークン消費量は利用料金に直結するため、可視化できないことは予算管理上の大きなリスクになります。
yuto[SEEDA]さんが提案するのは、OpenTelemetryとJaegerを使った観測可能性(Observability)の実装です。環境構築5分、設定3分の合計8分で、Claude Codeの動作を完全に可視化できるという画期的なアプローチです。
セッションログをトレースデータに変換する仕組み
Claude Codeは `~/.claude/projects/` ディレクトリ配下に、すべてのセッション情報をJSONL形式で自動保存しています。この構造化ログには以下の情報が含まれます:
問題は、このログが単なるテキストファイルであり、パフォーマンス分析には不向きな点です。そこでOpenTelemetryの出番です。
OpenTelemetryによるトレース変換
OpenTelemetryは、アプリケーションの観測データを標準化するCNCFプロジェクトです。今回の手法では:
1. **セッションログをパース**して各操作を抽出
2. **Spanとして再構成**(操作単位の時系列データ)
3. **トークン消費量をSpan属性**として付与
4. **Jaegerにエクスポート**して可視化
この変換により、テキストログが「時間軸上の視覚的なタイムライン」に生まれ変わります。Jaeger UIでは、どの操作が全体の何%の時間を占めているか、どこでトークンを大量消費しているかが、直感的に把握できます。
環境構築のシンプルさ
必要なのは以下の3点だけです:
クラウド環境は不要で、ローカルマシンだけで完結します。データも外部に送信されないため、セキュリティ面でも安心です。
編集部の視点
従来の監視手法との比較
**ログファイルを直接読む方法**と比較すると、本アプローチは圧倒的に優れています。従来は `grep` や `awk` でログを検索し、手作業で集計していました。これでは:
一方、OpenTelemetry + Jaegerの組み合わせなら、**ダッシュボードで全期間のデータを俯瞰**でき、**異常なスパイクを即座に発見**できます。
**GitHub Copilotとの比較**も興味深い点です。Copilotには公式の使用状況ダッシュボードがありますが、リアルタイム性に欠け、詳細な操作レベルの分析はできません。Claude Codeでは、セッションログという「生データ」にアクセスできるため、自前で高度な分析基盤を構築できるのです。
メリットと注意点の両面分析
**メリット:**
1. **コスト管理の精緻化** - トークン消費の多い操作パターンを特定し、使い方を改善できる
2. **パフォーマンスチューニング** - ボトルネックを可視化し、待ち時間を削減できる
3. **チーム全体の最適化** - 複数メンバーの利用状況を比較し、ベストプラクティスを共有できる
4. **監査証跡の確保** - いつ誰がどんな操作をしたか、完全に記録が残る
**注意点:**
1. **初期学習コスト** - OpenTelemetryとJaegerの概念理解が必要(ただし、設定は8分で完了)
2. **ストレージ消費** - トレースデータは累積するため、定期的なクリーンアップが必要
3. **リアルタイム性の限界** - ログベースのため、数秒~数分の遅延がある(完全なリアルタイム監視ではない)
適用範囲の考察
この手法が特に効果を発揮するのは:
逆に、個人で軽く使う程度であれば、オーバーエンジニアリングかもしれません。ただし、設定が8分で済むなら、試す価値は十分にあります。
今日から試せるアクション
1. まずはJaegerを起動してみる
docker run -d --name jaeger \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latestブラウザで `http://localhost:16686` にアクセスし、Jaeger UIが表示されることを確認してください。これだけで可視化環境の準備は完了です。
2. セッションログの場所を確認する
ターミナルで以下を実行:
ls -la ~/.claude/projects/`.jsonl` ファイルが存在すれば、ログ記録は正常に機能しています。ファイルを開いて構造を確認すると、後の変換作業がスムーズになります。
3. 最もトークンを消費した操作を特定する
Jaegerでトレースを表示したら、**Span Durationでソート**してください。最も長い操作が、時間的なボトルネックです。次に、**Span属性のtokens_used**(この属性は変換スクリプトで追加)でフィルタリングすれば、コスト面のボトルネックも一目瞭然です。
この2つの視点で分析すれば、「待ち時間を削減すべき操作」と「トークン消費を抑制すべき操作」が明確になります。
---
この情報は @yuto[SEEDA] さんの投稿を参考にしています。
出典: yuto[SEEDA]


