From ae80eaade0fba58e4e6b2f3023165a641f490e98 Mon Sep 17 00:00:00 2001 From: Neale Swinnerton Date: Fri, 6 Mar 2026 10:03:17 +0000 Subject: [PATCH] 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. --- backend/app/api/routes/metrics.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/backend/app/api/routes/metrics.py b/backend/app/api/routes/metrics.py index 3080ed83b..78550e84a 100644 --- a/backend/app/api/routes/metrics.py +++ b/backend/app/api/routes/metrics.py @@ -1,9 +1,12 @@ """Prometheus metrics endpoint for external monitoring.""" +import platform + from fastapi import APIRouter, Depends, Header, HTTPException, Response from sqlalchemy import func, select 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.models.archive import PrintArchive from backend.app.models.print_queue import PrintQueueItem @@ -77,6 +80,20 @@ async def get_metrics( 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 # =========================================================================