Track API latency, error rate, and throughput with Prometheus metrics middleware.
API Monitoring
import time
from prometheus_client import Counter, Histogram
REQUESTS = Counter("api_requests","Requests",[" method","endpoint","status"])
LATENCY = Histogram("api_latency","Latency",["endpoint"])
@app.middleware("http")
async def metrics(req, call_next):
start = time.time()
resp = await call_next(req)
LATENCY.labels(endpoint=req.url.path).observe(time.time()-start)
REQUESTS.labels(
method=req.method,
endpoint=req.url.path,
status=resp.status_code
).inc()
return resp
# Key metrics: p95 latency, error rate, throughput