🔭
OpenTelemetry python auto_instrumentation
opentelemetry-instrument
コマンドを使って auto-instrumentatin できるけれど、手動計装時に困ったので調べてみた。
opentelemetry-instrument
コマンドは PYTHONPATH
に opentelemetry.instrumentation.auto_instrumentation
のディレクトリを追加してから引数となるコマンドを起動する。こうするとopentelemetry/instrumentaton/auto_instrumentation/sitecustomize.py が自動的に読み込まれる。これはドキュメントにある通常の sitecustomize.py
の使い方とは異なるけれど、とにかく自動ロードする仕組みとして使っている。
opentelemetry.instrumentation.auto_instrumentation.sitecustomize
をロードすれば標準的な tracer の設定が組み込まれる。
otel-cli のように環境変数 TRACEPARENT
を読み込んだり、別のコンテキストに組み込んだりするときには次のようにするとよさそう。仕様化される動きもある。
telemetry 収集エンドポイントなどは環境変数で設定できる。
import opentelemetry.instrumentation.auto_instrumentation.sitecustomize
import os
from opentelemetry import trace, propagate
ctx = propagate.extract({k.lower():v for k,v in os.environ.items()})
with trace.get_tracer(__name__).start_as_current_span("intr", context=ctx) as span:
conf = {}
propagate.inject(conf)
print(f"in the span { conf }")
Discussion