@@ -80,6 +80,7 @@ from src.core.feature_flags import aiops_flags # ADR-080: AI 自主化飛輪 fe
from src . core . http_client import close_all_http_clients , init_all_http_clients
from src . core . logging import get_logger , setup_logging
from src . core . redis_client import close_redis_pool , init_redis_pool
from src . services . flywheel_stats_service import get_flywheel_stats_service
from src . core . sse import get_publisher
from src . core . telemetry import setup_telemetry , shutdown_telemetry
@@ -1005,10 +1006,17 @@ app.include_router(platform_v1.router, prefix="/api/v1/platform", tags=["AwoooP
@app.get ( " /metrics " , include_in_schema = False )
async def prometheus_metrics ( ) - > Response :
""" Prometheus metrics endpoint for alerting """
return Response (
content = generate_latest ( ) ,
media_type = CONTENT_TYPE_LATEST ,
)
content = generate_latest ( ) . decode ( " utf-8 " )
# 2026-05-07 ogt + Claude Sonnet 4.6 — INC-20260507-99ADF2 修復
# 飛輪指標( awoooi_flywheel_*)原本只在 /api/v1/stats/flywheel/metrics 暴露,
# 110 Prom awoooi-api job scrape /metrics 時抓不到 → FlywheelExecutionRateMissing 永久 firing
# 修法:在此串入飛輪指標,讓既有 scrape job 無需新增 job 即可抓到
try :
flywheel_metrics = await get_flywheel_stats_service ( ) . compute ( )
content + = flywheel_metrics . to_prometheus_lines ( )
except Exception :
logger . warning ( " prometheus_metrics_flywheel_error " )
return Response ( content = content , media_type = CONTENT_TYPE_LATEST )
# =============================================================================