強化 CD Gunicorn 掛載與 metrics 降噪
All checks were successful
CD Pipeline / deploy (push) Successful in 9m26s

This commit is contained in:
OoO
2026-04-30 09:13:36 +08:00
parent 8bd44b1131
commit 73561efa7a
15 changed files with 120 additions and 21 deletions

View File

@@ -70,23 +70,16 @@ def prometheus_metrics():
db_status.set(0)
app_health.set(0)
session = None
try:
db = DatabaseManager()
session = db.get_session()
product_count = Gauge('momo_products_total', '商品總數', registry=registry)
product_count.set(session.query(Product).count())
price_record_count = Gauge('momo_price_records_total', '價格記錄總數', registry=registry)
price_record_count.set(session.query(PriceRecord).count())
from database.realtime_sales_models import RealtimeSalesMonthly
sales_count = Gauge('momo_sales_records_total', '業績資料總數', registry=registry)
sales_count.set(session.query(RealtimeSalesMonthly).count())
session.close()
_set_database_record_counts(registry, Gauge, session)
except Exception as e:
sys_log.warning(f"[Metrics] 無法取得資料庫統計: {e}")
finally:
if session is not None:
session.close()
try:
_register_ai_automation_metrics(registry, Gauge, ai_metrics_snapshot())
@@ -113,6 +106,20 @@ def _labels_to_dict(labels):
return dict(labels)
def _set_database_record_counts(registry, gauge_cls, session):
"""Register DB counts without selecting drift-prone sales columns."""
product_count = gauge_cls('momo_products_total', '商品總數', registry=registry)
product_count.set(session.query(Product).count())
price_record_count = gauge_cls('momo_price_records_total', '價格記錄總數', registry=registry)
price_record_count.set(session.query(PriceRecord).count())
# V-Fix: realtime_sales_monthly 線上欄位曾與 ORM 不同步metrics 只需要總筆數。
sales_count = gauge_cls('momo_sales_records_total', '業績資料總數', registry=registry)
sales_total = session.execute(text("SELECT COUNT(*) FROM realtime_sales_monthly")).scalar() or 0
sales_count.set(sales_total)
def _register_ai_automation_metrics(registry, gauge_cls, metrics_snapshot):
"""Export dependency-free AI metrics into a per-request Prometheus registry."""
gauges = {}