Explorar el Código

feat(metrics): add bambuddy_build_info metric

Publish a gauge with version, python_version, platform, and
architecture labels at the top of the Prometheus metrics endpoint.
Neale Swinnerton hace 6 meses
padre
commit
ae80eaade0
Se han modificado 1 ficheros con 17 adiciones y 0 borrados
  1. 17 0
      backend/app/api/routes/metrics.py

+ 17 - 0
backend/app/api/routes/metrics.py

@@ -1,9 +1,12 @@
 """Prometheus metrics endpoint for external monitoring."""
 """Prometheus metrics endpoint for external monitoring."""
 
 
+import platform
+
 from fastapi import APIRouter, Depends, Header, HTTPException, Response
 from fastapi import APIRouter, Depends, Header, HTTPException, Response
 from sqlalchemy import func, select
 from sqlalchemy import func, select
 from sqlalchemy.ext.asyncio import AsyncSession
 from sqlalchemy.ext.asyncio import AsyncSession
 
 
+from backend.app.core.config import APP_VERSION
 from backend.app.core.database import get_db
 from backend.app.core.database import get_db
 from backend.app.models.archive import PrintArchive
 from backend.app.models.archive import PrintArchive
 from backend.app.models.print_queue import PrintQueueItem
 from backend.app.models.print_queue import PrintQueueItem
@@ -77,6 +80,20 @@ async def get_metrics(
 
 
     lines: list[str] = []
     lines: list[str] = []
 
 
+    # =========================================================================
+    # Build info
+    # =========================================================================
+
+    lines.append("# HELP bambuddy_build_info Build and version information")
+    lines.append("# TYPE bambuddy_build_info gauge")
+    build_labels = format_labels(
+        version=APP_VERSION,
+        python_version=platform.python_version(),
+        platform=platform.system(),
+        architecture=platform.machine(),
+    )
+    lines.append(f"bambuddy_build_info{build_labels} 1")
+
     # =========================================================================
     # =========================================================================
     # Printer metrics
     # Printer metrics
     # =========================================================================
     # =========================================================================