feat(observability): add Prometheus/Grafana/Loki/Alertmanager/Alloy stack and remove legacy Monitoring UI
This commit is contained in:
@@ -8,6 +8,7 @@ from ..models.backups import (
|
||||
BackupReportRequest,
|
||||
BackupRunResponse,
|
||||
)
|
||||
from ..observability import record_backup_run
|
||||
from ..services.backup_alert_engine import generate_alerts_for_run
|
||||
from ..services.settings_store import SettingsStore, get_settings_store
|
||||
|
||||
@@ -17,20 +18,24 @@ router = APIRouter(prefix="/api/backups", tags=["backups"])
|
||||
def _get_or_create_job(store: SettingsStore, report: BackupReportRequest) -> dict[str, Any]:
|
||||
job = store.get_backup_job_by_name(report.name)
|
||||
if not job:
|
||||
job = store.upsert_backup_job({
|
||||
"name": report.name,
|
||||
"source": report.source,
|
||||
"target": report.target,
|
||||
"schedule_interval_seconds": report.schedule_interval_seconds,
|
||||
})
|
||||
job = store.upsert_backup_job(
|
||||
{
|
||||
"name": report.name,
|
||||
"source": report.source,
|
||||
"target": report.target,
|
||||
"schedule_interval_seconds": report.schedule_interval_seconds,
|
||||
}
|
||||
)
|
||||
elif report.schedule_interval_seconds:
|
||||
store.upsert_backup_job({
|
||||
"id": job["id"],
|
||||
"name": report.name,
|
||||
"source": report.source,
|
||||
"target": report.target,
|
||||
"schedule_interval_seconds": report.schedule_interval_seconds,
|
||||
})
|
||||
store.upsert_backup_job(
|
||||
{
|
||||
"id": job["id"],
|
||||
"name": report.name,
|
||||
"source": report.source,
|
||||
"target": report.target,
|
||||
"schedule_interval_seconds": report.schedule_interval_seconds,
|
||||
}
|
||||
)
|
||||
job = store.get_backup_job(job["id"])
|
||||
return job
|
||||
|
||||
@@ -61,6 +66,7 @@ def post_backup_report(
|
||||
"details": report.details,
|
||||
}
|
||||
run = store.create_backup_run(run_data)
|
||||
record_backup_run(job_name=report.name, status=report.status, success=report.status == "success")
|
||||
|
||||
# Generate alerts
|
||||
previous_runs = store.list_backup_runs(job_id=job["id"], status="success", limit=20)
|
||||
@@ -93,6 +99,7 @@ def post_backup_start(
|
||||
"status": "in_progress",
|
||||
}
|
||||
run = store.create_backup_run(run_data)
|
||||
record_backup_run(job_name=report.name, status="in_progress")
|
||||
# Map details -> details_json for response model
|
||||
run["details_json"] = run.pop("details", None)
|
||||
return BackupRunResponse(**run)
|
||||
|
||||
Reference in New Issue
Block a user