Преглед на файлове

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 преди 7 месеца
родител
ревизия
ae80eaade0
променени са 1 файла, в които са добавени 17 реда и са изтрити 0 реда
  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
     # =========================================================================
     # =========================================================================