autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
105 lines (104 loc) • 2.92 kB
TypeScript
/**
* 性能监控中间件
* 记录 API 请求的响应时间、吞吐量和错误率
*/
interface EndpointStats {
count: number;
errors: number;
totalDuration: number;
minDuration: number;
maxDuration: number;
avgDuration: number;
}
interface RequestData {
route: string;
method: string;
path: string;
statusCode: number;
duration: number;
userAgent?: string;
ip?: string;
timestamp: string;
}
export declare class PerformanceMonitor {
config: {
slowRequestThreshold: number;
maxResponseTimeSamples: number;
maxSlowRequests: number;
};
metrics: {
requests: {
total: number;
success: number;
errors: number;
};
endpoints: Map<string, EndpointStats>;
responseTimes: number[];
slowRequests: RequestData[];
errorRate: number | string;
averageResponseTime: number;
startTime: number;
rpm?: number;
p95?: number;
p99?: number;
};
statsInterval: ReturnType<typeof setInterval>;
constructor();
/** Express 中间件 */
middleware(): (req: {
method: string;
path: string;
get: (header: string) => string | undefined;
ip?: string;
}, res: {
on: (event: string, cb: () => void) => void;
statusCode: number;
}, next: () => void) => void;
/** 记录请求 */
recordRequest(requestData: RequestData): void;
/** 计算统计数据。silent=true 时不输出日志(定时器调用) */
calculateStats(silent?: boolean): void;
/** 获取统计信息 */
getStats(): {
summary: {
totalRequests: number;
successfulRequests: number;
failedRequests: number;
errorRate: string;
averageResponseTime: string;
requestsPerMinute: number | undefined;
p95ResponseTime: string;
p99ResponseTime: string;
uptime: number;
};
topEndpoints: {
avgDuration: number;
count: number;
errors: number;
totalDuration: number;
minDuration: number;
maxDuration: number;
route: string;
}[];
slowestEndpoints: {
route: string;
avgDuration: number;
count: number;
}[];
recentSlowRequests: {
route: string;
duration: string;
timestamp: string;
statusCode: number;
}[];
};
/** 重置统计 */
reset(): void;
/** 停止监控 */
shutdown(): void;
}
/** 初始化性能监控 */
export declare function initPerformanceMonitor(): PerformanceMonitor;
/** 获取性能监控实例 */
export declare function getPerformanceMonitor(): PerformanceMonitor;
export default PerformanceMonitor;