/** * Simple file-based metrics collector for DuckDB MCP * * Collects performance metrics and writes them to rotating JSON log files * without external dependencies like Prometheus or Grafana. */ /** * Performance metrics as defined in the roadmap */ export interface PerformanceMetrics { queryTime: number; memoryUsage: number; connectionPoolHitRate: number; cacheHitRate: number; spaceIsolation: boolean; } /** * Query metric entry */ export interface QueryMetric { timestamp: string; sql: string; executionTimeMs: number; rowCount: number; isSimple: boolean; spaceId?: string; } /** * Memory metric entry */ export interface MemoryMetric { timestamp: string; heapUsed: number; heapTotal: number; external: number; arrayBuffers: number; totalMB: number; } /** * Connection pool metric */ export interface ConnectionMetric { timestamp: string; totalConnections: number; activeConnections: number; hitCount: number; missCount: number; hitRate: number; } /** * Cache metric */ export interface CacheMetric { timestamp: string; totalRequests: number; hits: number; misses: number; hitRate: number; entriesCount: number; } /** * Metrics collector configuration */ interface MetricsConfig { logsDir: string; rotationInterval: number; flushInterval: number; maxFileSize: number; retentionDays: number; } export declare class MetricsCollector { private config; private queryBuffer; private memoryBuffer; private connectionBuffer; private cacheBuffer; private flushTimer?; private memoryTimer?; private queryCount; private cacheHits; private cacheMisses; private connectionHits; private connectionMisses; constructor(config?: Partial); /** * Start collecting metrics */ start(): Promise; /** * Stop collecting metrics */ stop(): Promise; /** * Record a query execution */ recordQuery(sql: string, executionTimeMs: number, rowCount: number, spaceId?: string): void; /** * Record connection pool access */ recordConnectionPoolAccess(hit: boolean, stats: { totalConnections: number; activeConnections: number; }): void; /** * Record cache access */ recordCacheAccess(hit: boolean, entriesCount: number): void; /** * Collect memory metrics */ private collectMemoryMetrics; /** * Get current performance summary */ getPerformanceSummary(): Promise; /** * Flush metrics to disk */ private flush; /** * Write metrics to file (append mode) */ private writeMetrics; /** * Rotate large files */ private rotateFile; /** * Clean old log files */ private cleanOldLogs; /** * Ensure log directory exists */ private ensureLogDir; /** * Get metrics for a specific date range */ getMetrics(startDate: string, endDate: string, type: 'queries' | 'memory' | 'connections' | 'cache'): Promise; } /** * Get or create the metrics collector instance */ export declare function getMetricsCollector(): MetricsCollector; export {}; //# sourceMappingURL=MetricsCollector.d.ts.map