[Bugfix][Frontend] Fix missing /metrics endpoint (#6463)
This commit is contained in:
parent
dbe5588554
commit
6366efc67b
61
tests/entrypoints/openai/test_basic.py
Normal file
61
tests/entrypoints/openai/test_basic.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
from http import HTTPStatus
|
||||||
|
|
||||||
|
import openai
|
||||||
|
import pytest
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from vllm.version import __version__ as VLLM_VERSION
|
||||||
|
|
||||||
|
from ...utils import RemoteOpenAIServer
|
||||||
|
|
||||||
|
MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def server():
|
||||||
|
args = [
|
||||||
|
# use half precision for speed and memory savings in CI environment
|
||||||
|
"--dtype",
|
||||||
|
"bfloat16",
|
||||||
|
"--max-model-len",
|
||||||
|
"8192",
|
||||||
|
"--enforce-eager",
|
||||||
|
"--max-num-seqs",
|
||||||
|
"128",
|
||||||
|
]
|
||||||
|
|
||||||
|
with RemoteOpenAIServer(MODEL_NAME, args) as remote_server:
|
||||||
|
yield remote_server
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def client(server):
|
||||||
|
return server.get_async_client()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_show_version(client: openai.AsyncOpenAI):
|
||||||
|
base_url = str(client.base_url)[:-3].strip("/")
|
||||||
|
|
||||||
|
response = requests.get(base_url + "/version")
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
assert response.json() == {"version": VLLM_VERSION}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_check_health(client: openai.AsyncOpenAI):
|
||||||
|
base_url = str(client.base_url)[:-3].strip("/")
|
||||||
|
|
||||||
|
response = requests.get(base_url + "/health")
|
||||||
|
|
||||||
|
assert response.status_code == HTTPStatus.OK
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_log_metrics(client: openai.AsyncOpenAI):
|
||||||
|
base_url = str(client.base_url)[:-3].strip("/")
|
||||||
|
|
||||||
|
response = requests.get(base_url + "/metrics")
|
||||||
|
|
||||||
|
assert response.status_code == HTTPStatus.OK
|
||||||
@ -73,11 +73,13 @@ async def lifespan(app: fastapi.FastAPI):
|
|||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
# Add prometheus asgi middleware to route /metrics requests
|
|
||||||
route = Mount("/metrics", make_asgi_app())
|
def mount_metrics(app: fastapi.FastAPI):
|
||||||
# Workaround for 307 Redirect for /metrics
|
# Add prometheus asgi middleware to route /metrics requests
|
||||||
route.path_regex = re.compile('^/metrics(?P<path>.*)$')
|
metrics_route = Mount("/metrics", make_asgi_app())
|
||||||
router.routes.append(route)
|
# Workaround for 307 Redirect for /metrics
|
||||||
|
metrics_route.path_regex = re.compile('^/metrics(?P<path>.*)$')
|
||||||
|
app.routes.append(metrics_route)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/health")
|
@router.get("/health")
|
||||||
@ -167,6 +169,8 @@ def build_app(args):
|
|||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.root_path = args.root_path
|
app.root_path = args.root_path
|
||||||
|
|
||||||
|
mount_metrics(app)
|
||||||
|
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=args.allowed_origins,
|
allow_origins=args.allowed_origins,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user