UNPKG

@ahmedhegazee/nestjs-telescope

Version:

Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling

160 lines (159 loc) 5.26 kB
import { OnModuleInit } from '@nestjs/common'; import { Observable } from 'rxjs'; import { AnalyticsService } from './analytics.service'; import { PerformanceCorrelationService } from './performance-correlation.service'; export interface AnomalyDetection { id: string; timestamp: Date; type: 'performance' | 'error' | 'traffic' | 'resource' | 'query'; severity: 'low' | 'medium' | 'high' | 'critical'; component: string; metric: string; value: number; baseline: number; deviation: number; confidence: number; description: string; suggestedActions: string[]; } export interface RegressionAnalysis { id: string; timestamp: Date; metric: string; component: string; timeWindow: string; trend: 'improving' | 'degrading' | 'stable'; regressionRate: number; confidence: number; predictedValue: number; actualValue: number; impactAssessment: { severity: 'low' | 'medium' | 'high' | 'critical'; affectedUsers: number; estimatedLoss: string; timeToRevert: string; }; } export interface QueryOptimizationSuggestion { id: string; timestamp: Date; queryHash: string; query: string; table: string; currentPerformance: { executionTime: number; ioOperations: number; cpuUsage: number; }; optimizationStrategy: { type: 'index' | 'rewrite' | 'cache' | 'partition' | 'normalize'; suggestion: string; estimatedImprovement: number; confidence: number; effort: 'low' | 'medium' | 'high'; }; sqlRecommendation?: string; indexSuggestion?: { table: string; columns: string[]; type: 'btree' | 'hash' | 'gin' | 'gist'; }; } export interface PredictiveInsight { id: string; timestamp: Date; predictionType: 'load' | 'failure' | 'performance' | 'resource'; timeHorizon: '1h' | '6h' | '24h' | '7d' | '30d'; metric: string; component: string; currentValue: number; predictedValue: number; confidence: number; trend: 'increasing' | 'decreasing' | 'stable' | 'volatile'; riskLevel: 'low' | 'medium' | 'high' | 'critical'; recommendedActions: string[]; thresholds: { warning: number; critical: number; }; } export interface MLAlert { id: string; timestamp: Date; type: 'anomaly' | 'regression' | 'prediction' | 'optimization'; severity: 'info' | 'warning' | 'error' | 'critical'; title: string; description: string; component: string; metric?: string; triggeredBy: { value: number; threshold: number; confidence: number; }; actions: Array<{ type: 'investigate' | 'optimize' | 'scale' | 'alert' | 'rollback'; description: string; priority: number; automated: boolean; }>; relatedInsights: string[]; } export declare class MLAnalyticsService implements OnModuleInit { private readonly analyticsService; private readonly performanceCorrelationService; private readonly logger; private readonly dataHistory; private readonly anomalySubject; private readonly regressionSubject; private readonly optimizationSubject; private readonly predictionSubject; private readonly alertSubject; private readonly config; constructor(analyticsService: AnalyticsService, performanceCorrelationService: PerformanceCorrelationService); onModuleInit(): Promise<void>; private startMLAnalysis; private updateDataHistory; private performAnomalyDetection; private performRegressionAnalysis; private generatePredictiveInsights; private analyzeQueryOptimizationOpportunities; private performAdvancedAnalysis; private classifyAnomalyType; private calculateAnomalySeverity; private getComponentFromMetric; private generateAnomalyDescription; private generateAnomalySuggestions; private assessRegressionImpact; private calculateTrend; private calculatePredictionConfidence; private getPredictionType; private assessPredictionRisk; private generatePredictionRecommendations; private getMetricThresholds; private suggestOptimizationStrategy; private generateAlertsFromAnomalies; private estimateAffectedUsers; private estimateLoss; private estimateRevertTime; getAnomalies(): Observable<AnomalyDetection[]>; getRegressionAnalysis(): Observable<RegressionAnalysis[]>; getOptimizationSuggestions(): Observable<QueryOptimizationSuggestion[]>; getPredictiveInsights(): Observable<PredictiveInsight[]>; getMLAlerts(): Observable<MLAlert[]>; getCurrentAnomalies(): AnomalyDetection[]; getCurrentRegressions(): RegressionAnalysis[]; getCurrentOptimizations(): QueryOptimizationSuggestion[]; getCurrentPredictions(): PredictiveInsight[]; getCurrentAlerts(): MLAlert[]; acknowledgeAlert(alertId: string): boolean; dismissAnomaly(anomalyId: string): boolean; getMLMetrics(): { anomaliesDetected: number; regressionsAnalyzed: number; optimizationSuggestions: number; predictiveInsights: number; activeAlerts: number; dataHistorySize: number; }; }