{"record":{"id":"3838ada2f0015636","repo":"sgl-project/sglang","slug":"opentelemetry-package-is-not-installed-please-n","errorCode":null,"errorMessage":"opentelemetry package is not installed!!! Please not enable tracing or install opentelemetry","messagePattern":"opentelemetry package is not installed!!! Please not enable tracing or install opentelemetry","errorType":"error_code","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/observability/trace.py","lineNumber":226,"sourceCode":"\n\n# Should be called by each tracked process.\ndef process_tracing_init(\n    otlp_endpoint, server_name, trace_modules: Optional[str] = None\n):\n    global opentelemetry_initialized\n    global get_cur_time_ns\n    global tracer\n    global global_trace_modules\n\n    if trace_modules is not None:\n        global_trace_modules = [\n            module.strip() for module in trace_modules.split(\",\") if module.strip()\n        ]\n\n    if not opentelemetry_imported:\n        opentelemetry_initialized = False\n        raise RuntimeError(\n            \"opentelemetry package is not installed!!! Please not enable tracing or install opentelemetry\"\n        )\n\n    try:\n        resource = Resource.create(\n            attributes={\n                SERVICE_NAME: server_name,\n            }\n        )\n        tracer_provider = TracerProvider(\n            resource=resource, id_generator=TraceCustomIdGenerator()\n        )\n\n        schedule_delay_millis = envs.SGLANG_OTLP_EXPORTER_SCHEDULE_DELAY_MILLIS.get()\n        max_export_batch_size = envs.SGLANG_OTLP_EXPORTER_MAX_EXPORT_BATCH_SIZE.get()\n\n        processor = BatchSpanProcessor(\n            span_exporter=get_otlp_span_exporter(otlp_endpoint),","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/observability/trace.py#L208-L244","documentation":"Tracing was enabled (trace_modules / otlp config) but sglang could not import the opentelemetry packages at startup, so process_tracing_init raises rather than silently running untraced.","triggerScenarios":"Launching sglang with --enable-tracing (or trace-related args) in an environment where opentelemetry-sdk / opentelemetry-exporter-otlp are not installed.","commonSituations":"Enabling tracing on a base sglang install; slim containers; dependency conflicts removing otel packages after an upgrade.","solutions":["pip install opentelemetry-sdk opentelemetry-exporter-otlp (or sglang[tracing] extra if provided)","Or disable tracing (remove --enable-tracing / trace config) to launch without otel","Verify with python -c 'import opentelemetry.sdk' before relaunching"],"exampleFix":"# before: launch fails with RuntimeError\npython -m sglang.launch_server --model ... --enable-tracing\n# after\npip install opentelemetry-sdk opentelemetry-exporter-otlp\npython -m sglang.launch_server --model ... --enable-tracing","handlingStrategy":"validation","validationCode":"try:\n    import opentelemetry.sdk, opentelemetry.exporter.otlp.proto.grpc.trace_exporter  # noqa\n    otel_ok = True\nexcept ImportError:\n    otel_ok = False\nassert otel_ok or not enable_tracing, 'tracing requires opentelemetry packages'","typeGuard":null,"tryCatchPattern":"try:\n    process_tracing_init(...)\nexcept RuntimeError as e:\n    if 'opentelemetry package is not installed' in str(e):\n        disable_tracing_and_retry_launch()\n    else:\n        raise","preventionTips":["Install otel packages before enabling --enable-tracing","Add an import smoke test to container build for tracing-enabled deployments"],"tags":["observability","tracing","opentelemetry","missing-dependency"],"backgroundTag":"missing-optional-dependency","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}