backend/matching-engine/tracer_helper.py (23 lines of code) (raw):

from opentelemetry import trace from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.trace import Tracer class SingletonTracerProvider: _instance = None @classmethod def instance(cls): if cls._instance is None: cls._instance = cls._create_tracer_provider() return cls._instance @staticmethod def _create_tracer_provider(): tracer_provider = TracerProvider() cloud_trace_exporter = CloudTraceSpanExporter() tracer_provider.add_span_processor(BatchSpanProcessor(cloud_trace_exporter)) trace.set_tracer_provider(tracer_provider) return tracer_provider def get_tracer(instrumenting_module_name: str) -> Tracer: return trace.get_tracer( instrumenting_module_name, tracer_provider=SingletonTracerProvider.instance() )