observ-metrics
Version:
Frontend monitoring library that eliminates noise and adds business context to OpenTelemetry data
105 lines • 3.49 kB
TypeScript
/**
* 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