import os from opentelemetry import trace from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor service_name = os.getenv("OTEL_SERVICE_NAME", "checkout-api") resource = Resource.create( { "service.name": service_name, "service.version": "1.0.0", "deployment.environment": "production", } ) provider = TracerProvider(resource=resource) provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter())) trace.set_tracer_provider(provider) tracer = trace.get_tracer("checkout-smoke") with tracer.start_as_current_span("GET /checkout") as span: span.set_attribute("http.request.method", "GET") span.set_attribute("url.path", "/checkout") span.set_attribute("http.response.status_code", 200) context = span.get_span_context() trace_id = f"{context.trace_id:032x}" span_id = f"{context.span_id:016x}" provider.shutdown() print(f"sent trace_id={trace_id} span_id={span_id} service.name={service_name}")