polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
149 lines • 4.03 kB
TypeScript
import { EventEmitter } from 'events';
export interface PerformanceMonitorConfig {
enableAutoMonitoring: boolean;
monitoringInterval: number;
maxRecords: number;
cpuThreshold: number;
memoryThreshold: number;
responseTimeThreshold: number;
enableAlerts: boolean;
enableReporting: boolean;
reportInterval: number;
enableProfiling: boolean;
profilingSampleRate: number;
}
export interface PerformanceMetrics {
timestamp: number;
cpuUsage: number;
memoryUsage: number;
heapUsage: number;
eventLoopDelay: number;
renderTime: number;
apiResponseTime: number;
apiCallCount: number;
errorCount: number;
cacheHitRate: number;
activeConnections: number;
gcPauseTime: number;
frameRate: number;
systemLoad: number[];
}
export interface PerformanceTrend {
metric: string;
direction: 'increasing' | 'decreasing' | 'stable';
strength: number;
average: number;
min: number;
max: number;
standardDeviation: number;
prediction: number;
}
export interface PerformanceAlert {
id: string;
type: 'warning' | 'critical' | 'info';
message: string;
metric: string;
currentValue: number;
threshold: number;
timestamp: number;
severity: number;
suggestedActions: string[];
}
export interface PerformanceReport {
timestamp: number;
period: {
start: number;
end: number;
};
summary: {
averageCpuUsage: number;
averageMemoryUsage: number;
averageResponseTime: number;
totalApiCalls: number;
totalErrors: number;
averageCacheHitRate: number;
uptime: number;
systemHealth: 'healthy' | 'degraded' | 'critical';
};
trends: PerformanceTrend[];
alerts: PerformanceAlert[];
recommendations: string[];
metrics: PerformanceMetrics[];
}
export interface PerformanceProfile {
id: string;
name: string;
startTime: number;
endTime: number;
duration: number;
cpuSamples: Array<{
timestamp: number;
usage: number;
}>;
memorySamples: Array<{
timestamp: number;
usage: number;
}>;
callStack: Array<{
function: string;
duration: number;
calls: number;
}>;
hotSpots: Array<{
location: string;
time: number;
percentage: number;
}>;
}
export declare class PerformanceMonitor extends EventEmitter {
private config;
private metrics;
private alerts;
private profiles;
private monitoringTimer?;
private reportTimer?;
private isRunning;
private startTime;
private lastCpuUsage;
private lastMeasurement;
private alertIdCounter;
private activeProfiles;
constructor(config?: Partial<PerformanceMonitorConfig>);
start(): void;
stop(): void;
collectMetrics(): PerformanceMetrics;
recordMetrics(metrics: Partial<PerformanceMetrics>): void;
startProfile(profileId: string, name: string): void;
stopProfile(profileId: string): PerformanceProfile | null;
getMetrics(timeRange?: {
start: number;
end: number;
}): PerformanceMetrics[];
getTrends(timeRange?: {
start: number;
end: number;
}): PerformanceTrend[];
getAlerts(timeRange?: {
start: number;
end: number;
}): PerformanceAlert[];
generateReport(timeRange?: {
start: number;
end: number;
}): PerformanceReport;
getProfile(profileId: string): PerformanceProfile | null;
clearData(): void;
updateConfig(newConfig: Partial<PerformanceMonitorConfig>): void;
private measureEventLoopDelay;
private startMonitoring;
private startReporting;
private checkAlerts;
private startProfilingSampling;
private analyzeProfile;
private findHotSpots;
private calculateTrend;
private calculateSummary;
private generateRecommendations;
private setupEventHandlers;
}
//# sourceMappingURL=performance-monitor.d.ts.map