@ahmedhegazee/nestjs-telescope
Version:
Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling
65 lines (64 loc) • 2.12 kB
TypeScript
import { Observable } from 'rxjs';
export interface PerformanceMetrics {
averageProcessingTime: number;
throughput: number;
memoryUsage: number;
cpuUsage: number;
errorRate: number;
queueSize: number;
}
export interface OptimizationRecommendation {
type: 'batch_size' | 'flush_interval' | 'concurrency' | 'memory' | 'circuit_breaker';
current: number;
recommended: number;
reason: string;
impact: 'low' | 'medium' | 'high';
confidence: number;
}
export interface PerformanceSettings {
batchSize: number;
flushInterval: number;
maxConcurrency: number;
memoryThreshold: number;
adaptiveOptimization: boolean;
}
export declare class PerformanceOptimizerService {
private readonly logger;
private readonly metricsSubject;
private readonly settingsSubject;
private readonly performanceHistory;
private readonly maxHistorySize;
private lastOptimizationTime;
private readonly optimizationInterval;
constructor();
private startPerformanceMonitoring;
private collectSystemMetrics;
private calculateAverageProcessingTime;
private calculateThroughput;
private getMemoryUsage;
private getCpuUsage;
private calculateErrorRate;
private getCurrentQueueSize;
private addToHistory;
private analyzeAndOptimize;
private generateOptimizationRecommendations;
private calculateAverageMetrics;
private applyOptimizations;
getMetricsStream(): Observable<PerformanceMetrics>;
getSettingsStream(): Observable<PerformanceSettings>;
getCurrentMetrics(): PerformanceMetrics | null;
getCurrentSettings(): PerformanceSettings;
updateSettings(settings: Partial<PerformanceSettings>): void;
generatePerformanceReport(): {
currentMetrics: PerformanceMetrics | null;
settings: PerformanceSettings;
recommendations: OptimizationRecommendation[];
trends: {
processingTime: number[];
throughput: number[];
memoryUsage: number[];
errorRate: number[];
};
};
resetOptimizations(): void;
}