UNPKG

observ-metrics

Version:

Frontend monitoring library that eliminates noise and adds business context to OpenTelemetry data

105 lines 3.49 kB
/** * observ-metrics - frontend monitoring library * * Eliminates noise and adds business context to OpenTelemetry data * Compatible with Datadog, New Relic, Grafana, and other observability platforms */ import { Filter } from './core/SmartFilter'; import { DomainInstrumentor } from './core/DomainInstrumentor'; import { DatadogExporter } from './integrations/DatadogExporter'; import { NewRelicExporter } from './integrations/NewRelicExporter'; import type { ObservMetricsConfig, UserContext, TelemetryEvent, DomainInstrumentor as IDomainInstrumentor } from './types'; export declare class ObservMetrics { private config; private Filter; private instrumentors; private exporters; private events; private isInitialized; constructor(config: ObservMetricsConfig); /** * Initialize the monitoring system */ initialize(): Promise<void>; private initializeOpenTelemetry; private setupExporters; private initializeDomainInstrumentors; /** * Get instrumentor for specific domain */ getDomainInstrumentor(domainName: string): IDomainInstrumentor; /** * Convenience methods for common domains */ auth(): IDomainInstrumentor; ecommerce(): IDomainInstrumentor; content(): IDomainInstrumentor; /** * Update user context (e.g., after login) */ updateUserContext(newContext: Partial<UserContext>): void; /** * Add custom filter at runtime */ addFilter(filter: (event: TelemetryEvent, context: UserContext) => boolean): void; /** * Get monitoring statistics */ getStats(): { initialized: boolean; domains: string[]; eventsProcessed: number; filterStats: { botPatternsCount: number; extensionPatternsCount: number; noisePatternsCount: number; samplingRate: number; config: { enableBotDetection: boolean; domainWhitelist: string[]; excludeExtensions: boolean; }; }; userContext: UserContext; exporters: string[]; }; private handleTelemetryEvent; private getCurrentUserContext; private createEventFromSpan; private enrichSpanWithBusinessContext; private inferDomainFromUrl; private logConfiguration; /** * Cleanup resources */ destroy(): void; } export { Filter, DomainInstrumentor, DatadogExporter, NewRelicExporter }; export type { ObservMetricsConfig, UserContext, DomainConfig, TelemetryEvent, BusinessContext, ApiCallContext, InstrumentationResult, FilterConfig, PlatformConfig } from './types'; export declare function createObservMetrics(config: ObservMetricsConfig): ObservMetrics; export declare const defaultConfigs: { ecommerce: { domains: ({ name: string; priority: "critical"; slaTarget: number; errorThreshold: number; features: string[]; } | { name: string; priority: "medium"; slaTarget: number; errorThreshold: number; features: string[]; })[]; filtering: { enableBotDetection: boolean; domainWhitelist: string[]; errorThreshold: number; samplingRate: number; excludeExtensions: boolean; excludeThirdPartyErrors: boolean; }; }; }; //# sourceMappingURL=index.d.ts.map