原文(日本語に翻訳)
BashツールのOTELトレーシングを改善しました。トレーシングが有効な場合、サブプロセスがW3C形式のTRACEPARENT環境変数を継承するようになりました。
原文(英語)
Improved Bash tool OTEL tracing: subprocesses now inherit a W3C TRACEPARENT env var when tracing is enabled
概要
OpenTelemetry(OTEL)トレーシングが有効な環境でClaudeのBashツールを使用する場合、実行されるサブプロセスにW3C形式のTRACEPARENT環境変数が自動的に伝播されるようになりました。これにより、Claudeが実行するコマンドチェーン全体を単一の分散トレースとして追跡でき、CI/CDパイプラインや複雑な自動化スクリプトのオブザーバビリティが大幅に向上します。
基本的な使い方
OTELトレーシングが設定された環境では、Bashツールで実行されるコマンドの子プロセスにTRACEPARENTが自動伝播します。
bash
# OTELエンドポイントを設定
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
export OTEL_SERVICE_NAME=claude-code
# ClaudeがBashツールでスクリプトを実行すると、
# 子プロセスもTRACEPARENTを受け取る
./build.sh # → TRACEPARENT が自動設定されるTRACEPARENTのフォーマット(W3C Trace Context仕様):
traceparent: 00-{trace-id}-{parent-id}-{flags}
例: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01実践例
CI/CDパイプラインでの分散トレーシング
bash
# Claudeが実行するビルドスクリプト内でOTELを活用
#!/bin/bash
# build.sh - TRACEPARENTが自動設定される
# Node.jsアプリをビルド(TRACEPARENTを引き継ぐ)
npm run build
# テスト実行(同じトレースID内)
npm test
# デプロイスクリプト(トレースが繋がる)
./deploy.shこれにより、Claudeのリクエスト → ビルド → テスト → デプロイが1つのトレースとして可視化されます。
カスタムスクリプトでのトレース活用
python
# Claudeが実行するPythonスクリプト内でTRACEPARENTを活用
import os
from opentelemetry import trace
from opentelemetry.propagate import extract
from opentelemetry.propagators.b3 import B3Format
# 環境変数からTRACEPARENTを取得
traceparent = os.environ.get('TRACEPARENT', '')
if traceparent:
# 親トレースを継続
carrier = {"traceparent": traceparent}
ctx = extract(carrier)
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("python-step", context=ctx):
# 処理内容
process_data()JaegerやDatadogでのトレース確認
yaml
# docker-compose.yml(Jaeger設定例)
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686" # Jaeger UI
- "4318:4318" # OTLP HTTP
# Claude Code設定
# export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
# export OTEL_SERVICE_NAME=claude-code
# → Jaeger UIでClaudeのBash実行トレースを確認GitHubActionsでのオブザーバビリティ
yaml
# .github/workflows/claude-automation.yml
- name: Run Claude Code automation
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OTEL_EXPORTER_OTLP_ENDPOINT: https://otel-collector.example.com
OTEL_SERVICE_NAME: claude-github-actions
run: |
claude --auto "テストを実行して失敗したものを修正"
# すべてのサブプロセスがTRACEPARENTを継承
# → OTELコレクターでトレースを確認可能注意点
- この機能はOTELトレーシングが有効(
OTEL_EXPORTER_OTLP_ENDPOINTなどが設定済み)な場合のみ動作します。OTELが未設定の場合、TRACEPARENT環境変数は設定されません。 TRACEPARENTはW3C Trace Context仕様(RFC)に準拠したフォーマットです。多くのOTELエクスポーターやAPMツール(Jaeger、Zipkin、Datadog、New Relicなど)と互換性があります。- サブプロセスがOTELライブラリを使用していない場合でも
TRACEPARENT環境変数は設定されますが、活用するにはOTELの実装が必要です。