From 36d6f0ba5bf8792d146deef766f544c725d9df3d Mon Sep 17 00:00:00 2001 From: Yingchun Lai Date: Sun, 27 Jul 2025 15:55:25 +0800 Subject: [PATCH] fix: fix the missing metrics on non-rank0 nodes (#7720) --- python/sglang/srt/entrypoints/engine.py | 4 +++- python/sglang/srt/utils.py | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/python/sglang/srt/entrypoints/engine.py b/python/sglang/srt/entrypoints/engine.py index 578f7193c..4e1525544 100644 --- a/python/sglang/srt/entrypoints/engine.py +++ b/python/sglang/srt/entrypoints/engine.py @@ -765,7 +765,9 @@ def _launch_subprocesses( # When using `Engine` as a Python API, we don't want to block here. return None, None, None - launch_dummy_health_check_server(server_args.host, server_args.port) + launch_dummy_health_check_server( + server_args.host, server_args.port, server_args.enable_metrics + ) for proc in scheduler_procs: proc.join() diff --git a/python/sglang/srt/utils.py b/python/sglang/srt/utils.py index db45a3580..89ee7f635 100644 --- a/python/sglang/srt/utils.py +++ b/python/sglang/srt/utils.py @@ -85,6 +85,8 @@ from torch.profiler import ProfilerActivity, profile, record_function from torch.utils._contextlib import _DecoratorContextManager from triton.runtime.cache import FileCacheManager +from sglang.srt.metrics.func_timer import enable_func_timer + logger = logging.getLogger(__name__) show_time_cost = False @@ -2049,7 +2051,7 @@ def rank0_log(msg: str): logger.info(msg) -def launch_dummy_health_check_server(host, port): +def launch_dummy_health_check_server(host, port, enable_metrics): import asyncio import uvicorn @@ -2067,6 +2069,11 @@ def launch_dummy_health_check_server(host, port): """Check the health of the http server.""" return Response(status_code=200) + # Add prometheus middleware + if enable_metrics: + add_prometheus_middleware(app) + enable_func_timer() + config = uvicorn.Config( app, host=host,