/** * Metrics collection logic for telemetry data */ import type { UnifiedTelemetryMetrics, UnifiedTelemetryCounter, UnifiedTelemetryHistogram, UnifiedTelemetryGauge } from '@inh-lib/unified-telemetry-core'; import type { InternalMetricsLabels, InternalTelemetryMetricsConfig } from '../types/middleware.types'; /** * Metrics collector for telemetry middleware */ export declare function createMetricsCollector(metricsProvider: UnifiedTelemetryMetrics, config: InternalTelemetryMetricsConfig): { recordHttpRequest: (labels: InternalMetricsLabels["http_requests"]) => void; recordHttpDuration: (durationSeconds: number, labels: InternalMetricsLabels["http_duration"]) => void; recordHttpMemoryUsage: (memoryBytes: number, labels: InternalMetricsLabels["http_memory"]) => void; recordHttpCpuUsage: (cpuSeconds: number, labels: InternalMetricsLabels["http_cpu"]) => void; recordSystemMetrics: (memoryPercent: number, cpuPercent: number, labels: InternalMetricsLabels["system"]) => void; getMetrics: () => { httpRequestsTotal?: UnifiedTelemetryCounter; httpRequestDuration?: UnifiedTelemetryHistogram; httpRequestMemory?: UnifiedTelemetryHistogram; httpRequestCpu?: UnifiedTelemetryHistogram; systemMemoryUsage?: UnifiedTelemetryGauge; systemCpuUsage?: UnifiedTelemetryGauge; }; }; /** * Initialize all metrics based on configuration */ export declare function initializeMetrics(metricsProvider: UnifiedTelemetryMetrics, config: InternalTelemetryMetricsConfig): { httpRequestsTotal?: UnifiedTelemetryCounter; httpRequestDuration?: UnifiedTelemetryHistogram; httpRequestMemory?: UnifiedTelemetryHistogram; httpRequestCpu?: UnifiedTelemetryHistogram; systemMemoryUsage?: UnifiedTelemetryGauge; systemCpuUsage?: UnifiedTelemetryGauge; }; /** * Create metrics labels from request context */ export declare function createHttpMetricsLabels(method: string, route: string, statusCode: number): InternalMetricsLabels['http_requests']; /** * Create system metrics labels */ export declare function createSystemMetricsLabels(serviceName: string, instanceId?: string): InternalMetricsLabels['system']; /** * Normalize HTTP method for metrics */ export declare function normalizeHttpMethod(method: string): string; /** * Normalize route for metrics (remove sensitive data) */ export declare function normalizeRoute(route: string): string; /** * Get default instance ID */ export declare function getDefaultInstanceId(hostName?: string): string; /** * Validate metrics configuration */ export declare function validateMetricsConfig(config: InternalTelemetryMetricsConfig): { valid: boolean; errors: string[]; }; /** * Get default metrics configuration */ export declare function getDefaultMetricsConfig(): InternalTelemetryMetricsConfig;