From f3f8d8fff4c5354d5214f0f6f29e4dc5c4e3a8ca Mon Sep 17 00:00:00 2001 From: daniel-salib Date: Fri, 28 Mar 2025 17:12:02 -0700 Subject: [PATCH] implement prometheus fast-api-instrumentor for http service metrics (#15657) --- vllm/entrypoints/openai/api_server.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/vllm/entrypoints/openai/api_server.py b/vllm/entrypoints/openai/api_server.py index 7dbe31e62da6..18d75a04ab0f 100644 --- a/vllm/entrypoints/openai/api_server.py +++ b/vllm/entrypoints/openai/api_server.py @@ -311,6 +311,7 @@ def mount_metrics(app: FastAPI): # See https://prometheus.github.io/client_python/multiprocess/ from prometheus_client import (CollectorRegistry, make_asgi_app, multiprocess) + from prometheus_fastapi_instrumentator import Instrumentator prometheus_multiproc_dir_path = os.getenv("PROMETHEUS_MULTIPROC_DIR", None) if prometheus_multiproc_dir_path is not None: @@ -318,6 +319,16 @@ def mount_metrics(app: FastAPI): prometheus_multiproc_dir_path) registry = CollectorRegistry() multiprocess.MultiProcessCollector(registry) + Instrumentator( + excluded_handlers=[ + "/metrics", + "/health", + "/load", + "/ping", + "/version", + ], + registry=registry, + ).add().instrument(app).expose(app) # Add prometheus asgi middleware to route /metrics requests metrics_route = Mount("/metrics", make_asgi_app(registry=registry))