UNPKG

@jufab/opentelemetry-angular-interceptor

Version:

@jufab/opentelemetry-angular-interceptor is an Angular Library to deploy [OpenTelemetry](https://opentelemetry.io/) in your Angular application

131 lines (130 loc) 4.39 kB
import { ClassProvider, ConstructorProvider, ExistingProvider, FactoryProvider, InjectionToken, ValueProvider } from '@angular/core'; import { AttributeValue, DiagLogger, DiagLogLevel } from '@opentelemetry/api'; import { Instrumentation } from '@opentelemetry/instrumentation'; import { CustomSpan } from '../interceptor/custom-span.interface'; /** * Common configuration */ export interface CommonCollectorConfig { /** serviceName : Name of service in trace */ serviceName: string; /** resourceAttributes: Extra resource attribute like service.namespace ...*/ resourceAttributes?: Partial<Record<string, AttributeValue>>; /** console : boolean to trace in console */ console?: boolean; /** production : boolean to use a BatchSpanExporter(async) or SimpleSpanExporter(sync) */ production?: boolean; /** probabilitySampler */ probabilitySampler?: string; /** log or not body response in span */ logBody?: boolean; /** log level for opentelemetry */ logLevel?: DiagLogLevel; } /** * BatchSpanExporter Configuration */ export interface BatchSpanProcessorConfig { /** The maximum queue size. After the size is reached spans are dropped. */ maxQueueSize?: string; /** The maximum batch size of every export. It must be smaller or equal to maxQueueSize. */ maxExportBatchSize?: string; /** The interval between two consecutive exports */ scheduledDelayMillis?: string; /** How long the export can run before it is cancelled */ exportTimeoutMillis?: string; } /** * OpenTelemetry Collector configuration */ export interface OtelCollectorConfig { /** * An url (Default value: http://localhost:4318/v1/trace) */ url?: string; /** * custom headers */ headers?: Record<string, string>; /** * An optional limit on pending requests */ concurrencyLimit?: string; /** * Maximum time the OTLP exporter will wait for each batch export. * The default value is 10000ms. * */ timeoutMillis?: string; } /** * Configuration for Zipkin */ export interface ZipkinCollectorConfig { /** * An url (Default value: http://localhost:9411/api/v2/spans) */ url?: string; /** * custom headers */ headers?: { [key: string]: string; }; } /** * Configuration for JaegerPropagatorConfig */ export interface JaegerPropagatorConfig { /** * A custom Header for the propagator */ customHeader?: string; } /** * Configuration for B3PropagatorConfig */ export interface B3PropagatorConfig { /** * Single or Multi Header for b3propagator (default: multi) * Value : 'O' (single), '1' (multi) */ multiHeader?: string; } /** * Configuration for IgnoreUrlsConfig */ export interface IgnoreUrlsConfig { /** * URLs that partially match any regex in ignoreUrls will not be traced. * In addition, URLs that are _exact matches_ of strings in ignoreUrls will * also not be traced. */ urls?: Array<string | RegExp>; } /** * OpenTelemetryConfig */ export interface OpenTelemetryConfig { /** commonConfig */ commonConfig: CommonCollectorConfig; /** batchSpanProcessorConfig */ batchSpanProcessorConfig?: BatchSpanProcessorConfig; /** otelcolConfig */ otelcolConfig?: OtelCollectorConfig; /** zipkinConfig */ zipkinConfig?: ZipkinCollectorConfig; /** jaegerPropagatorConfig */ jaegerPropagatorConfig?: JaegerPropagatorConfig; /** b3PropagatorConfig */ b3PropagatorConfig?: B3PropagatorConfig; /** ignoreUrls */ ignoreUrls?: IgnoreUrlsConfig; } /** OTEL_CONFIG : Config injection */ export declare const OTEL_CONFIG: InjectionToken<OpenTelemetryConfig>; /** Logger : injection for a logger compatible */ export declare const OTEL_LOGGER: InjectionToken<DiagLogger>; /** custom span */ export declare const OTEL_CUSTOM_SPAN: InjectionToken<CustomSpan>; export declare const OTEL_INSTRUMENTATION_PLUGINS: InjectionToken<Instrumentation<import("@opentelemetry/instrumentation").InstrumentationConfig>[]>; export declare const defineConfigProvider: (config: OpenTelemetryConfig | null | undefined, configProvider: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider) => ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider;