UNPKG

recoder-analytics

Version:

Comprehensive analytics and monitoring for the Recoder.xyz ecosystem

229 lines 12.7 kB
"use strict"; /** * Comprehensive Model Health Monitoring System - Entry Point * * This module exports all components of the model health monitoring system * for easy integration into the recoder.xyz platform. */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.monitoringSystem = exports.escalationPolicies = exports.EscalationPolicies = exports.notificationService = exports.NotificationService = exports.alertManager = exports.AlertManager = exports.errorDetector = exports.ErrorDetector = exports.costTracker = exports.CostTracker = exports.latencyMonitor = exports.LatencyMonitor = exports.availabilityChecker = exports.AvailabilityChecker = exports.modelTracker = exports.ModelTracker = exports.modelHealthMonitor = exports.ModelHealthMonitor = void 0; exports.initializeMonitoring = initializeMonitoring; exports.shutdownMonitoring = shutdownMonitoring; exports.getSystemHealthSummary = getSystemHealthSummary; exports.checkModelHealth = checkModelHealth; // Core monitoring components var health_monitor_1 = require("./health-monitor"); Object.defineProperty(exports, "ModelHealthMonitor", { enumerable: true, get: function () { return health_monitor_1.ModelHealthMonitor; } }); Object.defineProperty(exports, "modelHealthMonitor", { enumerable: true, get: function () { return health_monitor_1.modelHealthMonitor; } }); var model_tracker_1 = require("./model-tracker"); Object.defineProperty(exports, "ModelTracker", { enumerable: true, get: function () { return model_tracker_1.ModelTracker; } }); Object.defineProperty(exports, "modelTracker", { enumerable: true, get: function () { return model_tracker_1.modelTracker; } }); var availability_checker_1 = require("./availability-checker"); Object.defineProperty(exports, "AvailabilityChecker", { enumerable: true, get: function () { return availability_checker_1.AvailabilityChecker; } }); Object.defineProperty(exports, "availabilityChecker", { enumerable: true, get: function () { return availability_checker_1.availabilityChecker; } }); var latency_monitor_1 = require("./latency-monitor"); Object.defineProperty(exports, "LatencyMonitor", { enumerable: true, get: function () { return latency_monitor_1.LatencyMonitor; } }); Object.defineProperty(exports, "latencyMonitor", { enumerable: true, get: function () { return latency_monitor_1.latencyMonitor; } }); var cost_tracker_1 = require("./cost-tracker"); Object.defineProperty(exports, "CostTracker", { enumerable: true, get: function () { return cost_tracker_1.CostTracker; } }); Object.defineProperty(exports, "costTracker", { enumerable: true, get: function () { return cost_tracker_1.costTracker; } }); var error_detector_1 = require("./error-detector"); Object.defineProperty(exports, "ErrorDetector", { enumerable: true, get: function () { return error_detector_1.ErrorDetector; } }); Object.defineProperty(exports, "errorDetector", { enumerable: true, get: function () { return error_detector_1.errorDetector; } }); // Alerting system var alert_manager_1 = require("./alerting/alert-manager"); Object.defineProperty(exports, "AlertManager", { enumerable: true, get: function () { return alert_manager_1.AlertManager; } }); Object.defineProperty(exports, "alertManager", { enumerable: true, get: function () { return alert_manager_1.alertManager; } }); var notification_service_1 = require("./alerting/notification-service"); Object.defineProperty(exports, "NotificationService", { enumerable: true, get: function () { return notification_service_1.NotificationService; } }); Object.defineProperty(exports, "notificationService", { enumerable: true, get: function () { return notification_service_1.notificationService; } }); var escalation_policies_1 = require("./alerting/escalation-policies"); Object.defineProperty(exports, "EscalationPolicies", { enumerable: true, get: function () { return escalation_policies_1.EscalationPolicies; } }); Object.defineProperty(exports, "escalationPolicies", { enumerable: true, get: function () { return escalation_policies_1.escalationPolicies; } }); /** * Initialize the complete monitoring system */ async function initializeMonitoring() { console.log('🚀 Initializing Recoder Model Health Monitoring System...'); try { // Import the singletons const { modelHealthMonitor } = await Promise.resolve().then(() => __importStar(require('./health-monitor'))); const { availabilityChecker } = await Promise.resolve().then(() => __importStar(require('./availability-checker'))); const { latencyMonitor } = await Promise.resolve().then(() => __importStar(require('./latency-monitor'))); const { costTracker } = await Promise.resolve().then(() => __importStar(require('./cost-tracker'))); const { errorDetector } = await Promise.resolve().then(() => __importStar(require('./error-detector'))); const { alertManager } = await Promise.resolve().then(() => __importStar(require('./alerting/alert-manager'))); // Start all monitoring components await Promise.all([ modelHealthMonitor.startMonitoring(), availabilityChecker.start(), latencyMonitor.start(), costTracker.start(), errorDetector.start(), alertManager.start() ]); console.log('✅ Model Health Monitoring System initialized successfully'); console.log('📊 Monitoring Features:'); console.log(' • Real-time availability monitoring across regions'); console.log(' • Latency tracking with percentile analysis'); console.log(' • Cost monitoring with budget alerts'); console.log(' • Error pattern detection with circuit breakers'); console.log(' • Predictive failure detection'); console.log(' • Multi-channel alerting with escalation'); console.log(' • Comprehensive health scoring'); } catch (error) { console.error('❌ Failed to initialize monitoring system:', error); throw error; } } /** * Shutdown the complete monitoring system */ async function shutdownMonitoring() { console.log('🛑 Shutting down Model Health Monitoring System...'); try { // Import the singletons const { modelHealthMonitor } = await Promise.resolve().then(() => __importStar(require('./health-monitor'))); const { availabilityChecker } = await Promise.resolve().then(() => __importStar(require('./availability-checker'))); const { latencyMonitor } = await Promise.resolve().then(() => __importStar(require('./latency-monitor'))); const { costTracker } = await Promise.resolve().then(() => __importStar(require('./cost-tracker'))); const { errorDetector } = await Promise.resolve().then(() => __importStar(require('./error-detector'))); const { alertManager } = await Promise.resolve().then(() => __importStar(require('./alerting/alert-manager'))); // Stop all monitoring components await Promise.all([ modelHealthMonitor.stopMonitoring(), availabilityChecker.stop(), latencyMonitor.stop(), costTracker.stop(), errorDetector.stop(), alertManager.stop() ]); console.log('✅ Model Health Monitoring System shutdown complete'); } catch (error) { console.error('❌ Error during monitoring system shutdown:', error); throw error; } } /** * Get system-wide health summary */ async function getSystemHealthSummary() { // Import the singletons const { modelHealthMonitor } = await Promise.resolve().then(() => __importStar(require('./health-monitor'))); const { alertManager } = await Promise.resolve().then(() => __importStar(require('./alerting/alert-manager'))); const { costTracker } = await Promise.resolve().then(() => __importStar(require('./cost-tracker'))); const { availabilityChecker } = await Promise.resolve().then(() => __importStar(require('./availability-checker'))); const overallHealth = await modelHealthMonitor.getOverallHealth(); const allModelsHealth = await modelHealthMonitor.getAllModelsHealth(); const activeAlerts = alertManager.getActiveAlerts(); const criticalAlerts = activeAlerts.filter(a => a.severity === 'critical'); const costReport = await costTracker.getCostReport('24h'); const availabilityReport = await availabilityChecker.getAvailabilityReport(); return { overall: overallHealth, models: allModelsHealth, alerts: { active: activeAlerts.length, critical: criticalAlerts.length }, costs: { dailySpend: costReport.totalCost, budgetStatus: costReport.budgetStatus.length > 0 ? costReport.budgetStatus[0].status : 'ok' }, availability: { average: availabilityReport.overall.averageUptime, regional: availabilityReport.regions } }; } /** * Quick health check for a specific model */ async function checkModelHealth(modelName) { // Import the singletons const { modelHealthMonitor } = await Promise.resolve().then(() => __importStar(require('./health-monitor'))); const { alertManager } = await Promise.resolve().then(() => __importStar(require('./alerting/alert-manager'))); const health = await modelHealthMonitor.getHealthStatus(modelName); const alerts = alertManager.getActiveAlerts({ source: modelName }); const recommendations = []; // Generate recommendations based on health if (health.availability < 0.95) { recommendations.push('Consider switching to backup model due to low availability'); } if (health.avgLatency > 5000) { recommendations.push('High latency detected - check regional routing'); } if (health.errorRate > 0.05) { recommendations.push('Elevated error rate - review recent requests'); } return { health, alerts, recommendations }; } // Export monitoring system factory for lazy loading exports.monitoringSystem = { async getHealth() { const { modelHealthMonitor } = await Promise.resolve().then(() => __importStar(require('./health-monitor'))); return modelHealthMonitor; }, async getAvailability() { const { availabilityChecker } = await Promise.resolve().then(() => __importStar(require('./availability-checker'))); return availabilityChecker; }, async getLatency() { const { latencyMonitor } = await Promise.resolve().then(() => __importStar(require('./latency-monitor'))); return latencyMonitor; }, async getCost() { const { costTracker } = await Promise.resolve().then(() => __importStar(require('./cost-tracker'))); return costTracker; }, async getErrors() { const { errorDetector } = await Promise.resolve().then(() => __importStar(require('./error-detector'))); return errorDetector; }, async getAlerts() { const { alertManager } = await Promise.resolve().then(() => __importStar(require('./alerting/alert-manager'))); return alertManager; }, // Convenience methods initialize: initializeMonitoring, shutdown: shutdownMonitoring, getSystemSummary: getSystemHealthSummary, checkModel: checkModelHealth }; exports.default = exports.monitoringSystem; //# sourceMappingURL=index.js.map