/**
* Performance Monitor - Advanced performance tracking and optimization
*
* Provides comprehensive performance monitoring with:
* - Real-time performance metrics collection
* - Bottleneck detection and analysis
* - Performance trend analysis
* - Automated optimization recommendations
* - SLA monitoring and alerting
*/
///
import { EventEmitter } from "events";
export interface PerformanceConfig {
metricsCollectionInterval: number;
trendAnalysisWindow: number;
bottleneckDetectionThreshold: number;
alertingEnabled: boolean;
historicalDataRetention: number;
}
export interface SystemPerformanceMetrics {
timestamp: Date;
uptime: number;
throughput: ThroughputMetrics;
latency: LatencyMetrics;
resourceUsage: ResourceUsageMetrics;
errorMetrics: ErrorMetrics;
virtualization: ComponentMetrics;
spatial: ComponentMetrics;
memory: ComponentMetrics;
consensus: ComponentMetrics;
overallHealth: number;
performanceScore: number;
efficiency: number;
reliability: number;
}
export interface ThroughputMetrics {
operationsPerSecond: number;
requestsPerSecond: number;
dataProcessedPerSecond: number;
peakThroughput: number;
averageThroughput: number;
throughputTrend: "increasing" | "stable" | "decreasing";
}
export interface LatencyMetrics {
averageLatency: number;
p50Latency: number;
p95Latency: number;
p99Latency: number;
maxLatency: number;
latencyDistribution: number[];
latencyTrend: "improving" | "stable" | "degrading";
}
export interface ResourceUsageMetrics {
cpu: ResourceMetric;
memory: ResourceMetric;
network: ResourceMetric;
storage: ResourceMetric;
overallUtilization: number;
resourceEfficiency: number;
}
export interface ResourceMetric {
current: number;
average: number;
peak: number;
utilization: number;
trend: "increasing" | "stable" | "decreasing";
}
export interface ErrorMetrics {
totalErrors: number;
errorRate: number;
errorsByType: {
[type: string]: number;
};
criticalErrors: number;
recoveryTime: number;
errorTrend: "increasing" | "stable" | "decreasing";
}
export interface ComponentMetrics {
operationsCount: number;
averageResponseTime: number;
successRate: number;
errorCount: number;
healthScore: number;
lastUpdate: Date;
}
export interface PerformanceAlert {
id: string;
type: "threshold_exceeded" | "bottleneck_detected" | "sla_violation" | "anomaly_detected";
severity: "low" | "medium" | "high" | "critical";
component: string;
metric: string;
currentValue: number;
thresholdValue: number;
timestamp: Date;
description: string;
recommendedActions: string[];
}
export interface BottleneckAnalysis {
id: string;
component: string;
bottleneckType: "cpu" | "memory" | "network" | "storage" | "algorithm" | "contention";
severity: number;
impact: "low" | "medium" | "high" | "critical";
affectedOperations: string[];
rootCause: string;
resolutionPlan: ResolutionStep[];
estimatedImprovementPercentage: number;
}
export interface ResolutionStep {
step: number;
action: string;
description: string;
estimatedTime: number;
expectedImprovement: number;
riskLevel: "low" | "medium" | "high";
}
export interface PerformanceTrend {
metric: string;
component: string;
timeWindow: number;
trendDirection: "improving" | "stable" | "degrading";
changeRate: number;
predictedValue: number;
confidence: number;
seasonality: SeasonalityInfo[];
}
export interface SeasonalityInfo {
pattern: "hourly" | "daily" | "weekly";
strength: number;
peakTimes: string[];
lowTimes: string[];
}
export interface SLADefinition {
name: string;
metric: string;
threshold: number;
operator: "less_than" | "greater_than" | "equals";
timeWindow: number;
violationAction: "alert" | "scale" | "optimize" | "failover";
}
export interface SLAViolation {
slaName: string;
metric: string;
currentValue: number;
thresholdValue: number;
duration: number;
timestamp: Date;
actionTaken: string;
}
export interface PerformanceInsight {
type: "optimization" | "capacity" | "efficiency" | "reliability";
priority: "low" | "medium" | "high" | "critical";
title: string;
description: string;
potentialImpact: number;
implementationEffort: "low" | "medium" | "high";
recommendations: string[];
relatedMetrics: string[];
}
export declare class PerformanceMonitor extends EventEmitter {
private logger;
private config;
private metricsHistory;
private activeAlerts;
private bottlenecks;
private trends;
private slaDefinitions;
private slaViolations;
private metricsCollectionTimer;
private analysisTimer;
private isMonitoring;
private startTime;
private operationCounts;
private latencyMeasurements;
private errorCounts;
constructor(config: PerformanceConfig);
/**
* Start performance monitoring
*/
startMonitoring(): void;
/**
* Stop performance monitoring
*/
stopMonitoring(): void;
/**
* Record operation metrics
*/
recordOperation(operation: string, duration: number, success: boolean, component?: string): void;
/**
* Get current performance metrics
*/
getCurrentMetrics(): SystemPerformanceMetrics;
/**
* Get performance history
*/
getPerformanceHistory(timeWindow?: number): SystemPerformanceMetrics[];
/**
* Detect performance bottlenecks
*/
detectBottlenecks(): Promise;
/**
* Analyze performance trends
*/
analyzePerformanceTrends(): PerformanceTrend[];
/**
* Generate performance insights
*/
generatePerformanceInsights(): PerformanceInsight[];
/**
* Check SLA compliance
*/
checkSLACompliance(): SLAViolation[];
/**
* Generate performance alerts
*/
generateAlerts(): PerformanceAlert[];
/**
* Get active performance alerts
*/
getActiveAlerts(): PerformanceAlert[];
/**
* Get detected bottlenecks
*/
getBottlenecks(): BottleneckAnalysis[];
/**
* Private helper methods
*/
private initializeDefaultSLAs;
private collectMetrics;
private performAnalysis;
private calculateThroughputMetrics;
private calculateLatencyMetrics;
private calculateResourceUsageMetrics;
private calculateErrorMetrics;
private getComponentMetrics;
private calculateOverallHealth;
private calculatePerformanceScore;
private calculateEfficiency;
private calculateReliability;
private createLatencyDistribution;
private createBottleneckAnalysis;
private generateResolutionPlan;
private calculateTrend;
private getTrendDirection;
private createAlert;
private getMetricValue;
private evaluateSLACondition;
private executeSLAAction;
/**
* Cleanup and shutdown
*/
shutdown(): Promise;
}
//# sourceMappingURL=PerformanceMonitor.d.ts.map