UNPKG

@ahmedhegazee/nestjs-telescope

Version:

Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling

66 lines (65 loc) 2.06 kB
import { RequestContext } from '../../watchers/request/request-watcher.interceptor'; export interface SamplingConfig { enabled: boolean; baseSampleRate: number; adaptiveEnabled: boolean; loadBasedSampling: boolean; errorSamplingMultiplier: number; healthCheckSampleRate: number; maxSampleRate: number; minSampleRate: number; } export interface SamplingRule { path: string; method?: string; statusCode?: number; rate: number; priority: number; conditions?: SamplingCondition[]; } export interface SamplingCondition { type: 'header' | 'query' | 'body' | 'user' | 'time' | 'load'; key?: string; value?: any; operator: 'equals' | 'contains' | 'greater' | 'less' | 'regex'; } export interface SamplingStats { totalRequests: number; sampledRequests: number; currentSampleRate: number; effectiveSampleRate: number; loadFactor: number; errorRate: number; lastAdaptation: number; } export declare class AdaptiveSamplingService { private readonly logger; private readonly config; private readonly samplingRules; private readonly loadHistory; private readonly stats; private readonly maxHistorySize; private readonly loadCalculationWindow; constructor(config?: Partial<SamplingConfig>); shouldSample(context: RequestContext, error?: Error): boolean; calculateSampleRate(context: RequestContext, error?: Error): number; addRule(rule: SamplingRule): void; removeRule(path: string, method?: string): void; getStats(): SamplingStats; getRules(): SamplingRule[]; resetStats(): void; private initializeDefaultRules; private applyRules; private matchesRule; private matchesPath; private matchesCondition; private evaluateCondition; private adjustForLoad; private applyAdaptiveAdjustments; private updateLoadMetrics; private getCurrentLoadFactor; private getErrorRate; private getAverageResponseTime; private adaptSamplingRate; private updateEffectiveSampleRate; }