sgl-project/sglang · error · ValueError
SGLANG_LOG_SCHEDULER_STATUS_TARGET is set but --enable-metri
Error message
SGLANG_LOG_SCHEDULER_STATUS_TARGET is set but --enable-metrics is not active. Status dumps require --enable-metrics to work.
What it means
Scheduler status dumps driven by SGLANG_LOG_SCHEDULER_STATUS_TARGET are implemented on top of the metrics pipeline, so the logger refuses to be created when metrics are disabled. maybe_create() reads the env var and, if set while enable_metrics is False, raises immediately at startup. This is a configuration-consistency guard rather than a runtime failure.
Source
Thrown at python/sglang/srt/utils/scheduler_status_logger.py:29
if TYPE_CHECKING:
from sglang.srt.managers.schedule_batch import Req, ScheduleBatch
class SchedulerStatusLogger:
def __init__(self, targets: List[str], dump_interval: float):
self.loggers = create_log_targets(targets=targets, name_prefix=__name__)
self.dump_interval = dump_interval
self.last_dump_time = 0.0
self.rank = dist.get_rank() if dist.is_initialized() else 0
@staticmethod
def maybe_create(enable_metrics: bool) -> Optional[SchedulerStatusLogger]:
target = envs.SGLANG_LOG_SCHEDULER_STATUS_TARGET.get()
if not target:
return None
if not enable_metrics:
raise ValueError(
"SGLANG_LOG_SCHEDULER_STATUS_TARGET is set but --enable-metrics "
"is not active. Status dumps require --enable-metrics to work."
)
return SchedulerStatusLogger(
targets=[t.strip() for t in target.split(",") if t.strip()],
dump_interval=envs.SGLANG_LOG_SCHEDULER_STATUS_INTERVAL.get(),
)
def maybe_dump(
self, running_batch: ScheduleBatch, waiting_queue: List[Req]
) -> None:
now = time.time()
if now - self.last_dump_time < self.dump_interval:
return
self.last_dump_time = now
log_json(View on GitHub (pinned to 0132848349)
Solutions
- Add --enable-metrics to the server launch arguments (or config file)
- Unset SGLANG_LOG_SCHEDULER_STATUS_TARGET if status dumps are not needed
- Audit deployment scripts/env files for stale SGLANG_LOG_SCHEDULER_STATUS_TARGET values
Example fix
# before SGLANG_LOG_SCHEDULER_STATUS_TARGET=/tmp/status.log python -m sglang.launch_server ... # after SGLANG_LOG_SCHEDULER_STATUS_TARGET=/tmp/status.log python -m sglang.launch_server --enable-metrics ...
Defensive patterns
Strategy: validation
Validate before calling
import os
from sglang.srt.utils import scheduler_status_logger # or read via envs
need = bool(os.environ.get("SGLANG_LOG_SCHEDULER_STATUS_TARGET"))
assert not need or enable_metrics, "set --enable-metrics or unset SGLANG_LOG_SCHEDULER_STATUS_TARGET" Prevention
- Treat SGLANG_LOG_SCHEDULER_STATUS_TARGET and --enable-metrics as a paired setting in deployment templates
- Add a preflight check script that validates env vars against server flags
When it happens
Trigger: Launching the server with SGLANG_LOG_SCHEDULER_STATUS_TARGET=... in the environment but without --enable-metrics on the command line (or in the YAML config), so maybe_create(enable_metrics=False) is reached with a non-empty target string.
Common situations: Ops sets the env var on one node but the launch template lacks --enable-metrics; or metrics were disabled to reduce overhead while a leftover env var from a debug session persists.
Related errors
- Invalid ltx2_two_stage_device_mode={mode!r}. Expected one of
- --enable-hisparse is not supported with the unified-KV path
- Kimi-K3 DCP + DSPARK currently requires SGLANG_RAGGED_VERIFY
- PR #{pr_num} revert is not registered; available: {sorted(_P
- SGLANG_DISAGG_STAGING_BUFFER is designed for non-MLA models
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/b4a0ffad54fcb7ce.
Report an issue: GitHub.