@allan1361/iota-big3-sdk-middleware
Version:
🏆 A+ Grade Certified Enterprise Middleware Framework - Phase 3 Certified (90/100) with advanced resilience patterns, comprehensive type safety, and production-ready observability
107 lines • 2.92 kB
TypeScript
import { EventEmitter } from 'events';
export interface PerformanceConfig {
enabled?: boolean;
sampleRate?: number;
metrics?: {
latency?: boolean;
cpu?: boolean;
memory?: boolean;
throughput?: boolean;
errors?: boolean;
};
thresholds?: {
latencyWarn?: number;
latencyCritical?: number;
cpuWarn?: number;
memoryWarn?: number;
};
reporting?: {
interval?: number;
destination?: 'console' | 'file' | 'metrics-service';
format?: 'json' | 'prometheus' | 'statsd';
};
storage?: {
maxDataPoints?: number;
aggregationInterval?: number;
};
}
export interface MiddlewareMetrics {
name: string;
latency: LatencyMetrics;
throughput: ThroughputMetrics;
errors: ErrorMetrics;
resources?: ResourceMetrics;
}
export interface LatencyMetrics {
count: number;
min: number;
max: number;
mean: number;
median: number;
p75: number;
p95: number;
p99: number;
histogram: Map<number, number>;
}
export interface ThroughputMetrics {
requestsPerSecond: number;
bytesPerSecond: number;
totalRequests: number;
totalBytes: number;
}
export interface ErrorMetrics {
totalErrors: number;
errorRate: number;
errorsByType: Map<string, number>;
errorsByStatusCode: Map<number, number>;
}
export interface ResourceMetrics {
cpu: {
usage: number;
user: number;
system: number;
};
memory: {
heapUsed: number;
heapTotal: number;
external: number;
rss: number;
};
}
export declare class PerformanceMonitor extends EventEmitter {
private config;
private metrics;
private activeRequests;
private reportingInterval?;
private aggregationInterval?;
private dataPoints;
constructor(config?: PerformanceConfig);
wrap(name: string, middleware: Function): Function;
monitorApp(app: any): void;
private initializeMetrics;
private updateMetrics;
private checkThresholds;
private startMonitoring;
private generateReport;
private formatReport;
private formatPrometheus;
private formatStatsd;
private aggregateMetrics;
private calculatePercentiles;
private percentile;
private calculateThroughput;
private calculateErrorRate;
private getRequestId;
private generateRequestId;
getMetrics(middlewareName?: string): Map<string, MiddlewareMetrics> | MiddlewareMetrics | undefined;
getReport(): any;
getHistory(): Array<{
timestamp: Date;
metrics: Map<string, MiddlewareMetrics>;
}>;
findBottlenecks(threshold?: number): string[];
reset(middlewareName?: string): void;
stop(): void;
}
export declare function createPerformanceMonitor(config?: PerformanceConfig): PerformanceMonitor;
//# sourceMappingURL=performance-monitor.d.ts.map