recoder-analytics
Version:
Comprehensive analytics and monitoring for the Recoder.xyz ecosystem
229 lines • 12.7 kB
JavaScript
/**
* 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
;