@ahmedhegazee/nestjs-telescope
Version:
Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling
77 lines (76 loc) • 2.45 kB
TypeScript
import { OnModuleInit } from '@nestjs/common';
import { TelescopeEntry } from '../interfaces/telescope-entry.interface';
import { TelescopeConfig } from '../interfaces/telescope-config.interface';
import { StorageManagerService } from '../../storage/storage-manager.service';
export declare class EnhancedEntryManagerService implements OnModuleInit {
private readonly storageManager;
private readonly config;
private readonly logger;
private readonly batchQueues;
private readonly retryQueue;
private readonly metrics;
private sequenceCounter;
private processingIntervals;
constructor(storageManager: StorageManagerService, config: TelescopeConfig);
onModuleInit(): Promise<void>;
process(entry: TelescopeEntry): Promise<void>;
processBatch(entries: TelescopeEntry[]): Promise<void>;
private getQueueKey;
private shouldBatch;
private addToQueue;
private flushQueue;
private processImmediate;
private processRetryQueue;
private startBatchProcessors;
private startRetryProcessor;
private startMetricsReporting;
private reportMetrics;
private ensureEntryFields;
private generateFamilyHash;
private getQueueConfig;
private groupEntriesByQueue;
getMetrics(): ProcessingMetrics;
getQueueStatus(): Record<string, QueueStatus>;
forceFlushAll(): Promise<void>;
cleanup(): Promise<void>;
}
declare class ProcessingMetrics {
private entriesProcessed;
private batchesProcessed;
private batchesSuccessful;
private immediateProcessed;
private immediateSuccessful;
private retriesAttempted;
private retriesSuccessful;
private errors;
private startTime;
recordEntry(entry: TelescopeEntry): void;
recordBatch(size: number, success: boolean): void;
recordImmediate(success: boolean): void;
recordRetry(success: boolean): void;
recordError(): void;
getMetrics(): MetricsSnapshot;
reset(): void;
}
interface QueueConfig {
batchSize: number;
flushInterval: number;
}
interface QueueStatus {
name: string;
size: number;
config: QueueConfig;
}
interface MetricsSnapshot {
entriesProcessed: number;
batchesProcessed: number;
batchSuccessRate: number;
immediateProcessed: number;
immediateSuccessRate: number;
retriesAttempted: number;
retrySuccessRate: number;
errors: number;
throughput: number;
elapsedSeconds: number;
}
export {};