OTLPを使うときによく opentelemetry.sdk.trace.export.BatchSpanProcessor を使うが、このモジュールには計装ができているかを簡単に確認できる SimpleSpanProcessor と ConsoleSpanExporter がある。
# ...
from opentelemetry.sdk.trace.export import BatchSpanProcessor, SimpleSpanProcessor, ConsoleSpanExporter
# ...
provider = TracerProvider()
if True: # OTLP で出力するとき
exporter = OTLPSpanExporter()
processor = BatchSpanProcessor(exporter)
provider.add_span_processor(processor)
else: # デバッグ用にSpanをコンソール出力する
provider.add_span_processor(SimpleSpanProcessor(ConsoleSpanExporter()))
このようにConsoleSpanExporterとSimpleSpanProcessorを組み合わせると、スパンを終了するとすぐにこのようにコンソールに表示される。
{
"name": "select",
"context": {
"trace_id": "0x482e696dfeddb746339f93e26468871a",
"span_id": "0x214fc3976d4a5031",
"trace_state": "[]"
},
"kind": "SpanKind.CLIENT",
"parent_id": null,
"start_time": "2025-01-10T09:47:54.071241Z",
"end_time": "2025-01-10T09:47:54.072727Z",
"status": {
"status_code": "UNSET"
},
"attributes": {
"db.system": "mysql",
"db.name": "mysql",
"db.statement": "select help_topic_id, name from help_topic",
"db.user": "root",
"net.peer.name": "127.0.0.1",
"net.peer.port": 3306
},
"events": [],
"links": [],
"resource": {
"attributes": {
"service.name": "mysqlclient-test"
},
"schema_url": ""
}
}
ちゃんと計装できているか、取得するつもりのattributeが本当に取得できているかどうかの確認するとき、OpenTelemetry Collectorをローカルで動かすよりももっと手軽に使える。











