metrics.py
1 """ 2 Prometheus metrics for Ag3ntum API. 3 4 Exposes /api/v1/metrics with: 5 - HTTP request duration/count histograms 6 - Active session gauge 7 - Task queue depth gauge 8 - Custom business metrics 9 """ 10 import logging 11 12 from prometheus_fastapi_instrumentator import Instrumentator 13 14 logger = logging.getLogger(__name__) 15 16 instrumentator = Instrumentator( 17 should_group_status_codes=True, 18 should_ignore_untemplated=True, 19 excluded_handlers=["/api/v1/health", "/api/v1/metrics"], 20 ) 21 22 23 def setup_metrics(app): 24 """Initialize Prometheus metrics on the FastAPI app. 25 26 Call this during app creation, after routes are registered. 27 The /metrics endpoint is exposed at the app root (not under /api/v1). 28 """ 29 try: 30 instrumentator.instrument(app) 31 instrumentator.expose(app, endpoint="/api/v1/metrics", include_in_schema=False) 32 logger.info("Prometheus metrics enabled at /api/v1/metrics") 33 except Exception as e: 34 logger.warning(f"Failed to initialize Prometheus metrics: {e}")