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をローカルで動かすよりももっと手軽に使える。