Metrics
Built-in metrics
| Metric |
Type |
Description |
drogue_requests_total |
Counter |
Total requests processed |
drogue_allowed_total |
Counter |
Allowed requests |
drogue_limited_total |
Counter |
Rate-limited requests |
drogue_rate_limit_seconds |
Histogram |
Per-request processing time |
drogue_active_keys |
Gauge |
Keys in storage |
drogue_trust_transitions_total |
Counter |
Trust state changes |
drogue_bans_total |
Counter |
Bans issued |
drogue_detections_total |
Counter |
Anomalies detected |
drogue_circuit_breaker_trips_total |
Counter |
Circuit breaker trips |
Prometheus endpoint
from drogue.observability.metrics import DrogueMetrics
metrics = DrogueMetrics()
@app.get("/metrics")
async def metrics_endpoint():
return Response(
content=metrics.export_prometheus(),
media_type="text/plain",
)
Recording
metrics.record_request("allowed")
metrics.record_request("limited")
metrics.record_rate_limit_time(0.000043)
metrics.record_trust_transition("unknown", "normal")
metrics.record_ban("192.168.1.1")
metrics.record_detection("192.168.1.1", "ddos")
metrics.record_circuit_breaker_trip()
Export
# Prometheus format
output = metrics.export_prometheus()
# JSON
output = metrics.export_json()