| 123456789101112131415161718192021222324252627282930313233343536 |
- from fastapi import APIRouter, HTTPException, Request, status
- from gpustack.config.config import get_global_config
- from gpustack.routes.proxy import proxy_to
- router = APIRouter()
- @router.api_route(
- "/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"]
- )
- async def prometheus_proxy(
- path: str,
- request: Request,
- ):
- """
- Prometheus proxy endpoint.
- Only admin users can access.
- """
- cfg = get_global_config()
- prometheus_base_url = cfg.get_builtin_prometheus_url()
- if not prometheus_base_url:
- raise HTTPException(
- status_code=status.HTTP_404_NOT_FOUND,
- detail="Not found",
- )
- target_path = path.lstrip("/")
- if target_path:
- target_url = f"{prometheus_base_url}/prometheus/{target_path}"
- else:
- target_url = f"{prometheus_base_url}/prometheus"
- if request.url.query:
- target_url = f"{target_url}?{request.url.query}"
- return await proxy_to(request, target_url)
|