class MonitoringService:
def track_sync_job(self, job_id, metrics):
self.metrics_collector.record({
"job_id": job_id,
"timestamp": datetime.now().isoformat(),
"records_processed": metrics["records_processed"],
"duration_seconds": metrics["duration"],
"bytes_transferred": metrics["bytes"],
"status": metrics["status"],
"error_count": metrics.get("errors", 0)
})
if self._detect_anomaly(metrics):
self.alert_manager.send_alert({
"severity": "warning",
"message": f"Anomaly detected in job {job_id}",
"metrics": metrics
})
def get_connector_health(self, connector_id):
recent_runs = self._get_recent_runs(connector_id, limit=10)
success_rate = sum(
1 for r in recent_runs if r["status"] == "completed"
) / len(recent_runs)
return {
"connector_id": connector_id,
"success_rate": success_rate,
"health_status": self._calculate_health(success_rate)
}