feat : v1.3.0 добавил экспорт метрик для Prometheus
This commit is contained in:
+27
@@ -9,6 +9,7 @@ from fastapi.responses import FileResponse, JSONResponse, RedirectResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from pathlib import Path as FilePath
|
||||
from app.qingping.service import QingpingService
|
||||
from app.metrics import PrometheusMetricsService
|
||||
|
||||
from app.my_dataclasses import (
|
||||
TION_MAC,
|
||||
@@ -92,6 +93,8 @@ schedule_load_error: str | None = None
|
||||
auto_controller: AutoController | None = None
|
||||
auto_load_error: str | None = None
|
||||
|
||||
metrics_service: PrometheusMetricsService | None = None
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Application lifecycle
|
||||
# ----------------------------------------------------------------------
|
||||
@@ -102,6 +105,7 @@ async def lifespan(app: FastAPI):
|
||||
global schedule_load_error
|
||||
global auto_controller
|
||||
global auto_load_error
|
||||
global metrics_service
|
||||
|
||||
await service.start()
|
||||
await qingping_service.start()
|
||||
@@ -167,9 +171,32 @@ async def lifespan(app: FastAPI):
|
||||
except Exception as exc:
|
||||
schedule_service = None
|
||||
schedule_load_error = f"{type(exc).__name__}: {exc}"
|
||||
|
||||
try:
|
||||
metrics_service = PrometheusMetricsService(
|
||||
tion_service=service,
|
||||
qingping_service=qingping_service,
|
||||
schedule_service=schedule_service,
|
||||
auto_controller=auto_controller,
|
||||
output_path=(
|
||||
"/var/lib/prometheus/"
|
||||
"node-exporter/"
|
||||
"climatcontroller.prom"
|
||||
),
|
||||
interval=5.0,
|
||||
)
|
||||
await metrics_service.start()
|
||||
|
||||
except Exception:
|
||||
logging.getLogger(__name__).exception("Could not start Prometheus metrics service")
|
||||
metrics_service = None
|
||||
|
||||
yield
|
||||
|
||||
finally:
|
||||
if metrics_service is not None:
|
||||
await metrics_service.stop()
|
||||
|
||||
if schedule_service is not None:
|
||||
await schedule_service.stop()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user