uv add prometheus-client// metrics.py
from prometheus_client import Counter, generate_latest
request_counter = Counter(
"http_requests_total",
"Total HTTP requests",
["path"]
)// main.py
from fastapi import FastAPI, Request, Response
from prometheus_client import generate_latest
...
from my_service.metrics import request_counter
...
@app.get("/health")
def health_check(request: Request) -> Dict[str, str]:
logger.info("health endpoint called", extra={"path": request.url.path, "method": request.method})
request_counter.labels(path="/health").inc()
return {"status": "ok"}
...
@app.get("/metrics")
def metrics():
return Response(generate_latest(), media_type="text/plain") 
깃과의 사투