UNPKG

@ogcio/o11y-sdk-node

Version:

Opentelemetry standard instrumentation SDK for NodeJS based project

66 lines (62 loc) 2.18 kB
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-grpc"; import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-grpc"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-grpc"; import { CompressionAlgorithm } from "@opentelemetry/otlp-exporter-base"; import { metrics } from "@opentelemetry/sdk-node"; import { NodeSDKConfig } from "../index.js"; import { LogRecordProcessorMap, SpanProcessorMap } from "../utils.js"; import { _logsProcessorConfig, _spansProcessorConfig, } from "./processor-config.js"; import { Exporters } from "./index.js"; import { getNodeSdkConfig } from "../config-manager.js"; import { PIIExporterDecorator } from "./pii-exporter-decorator.js"; async function defaultMetadata() { const { Metadata } = await import("@grpc/grpc-js"); return new Metadata({ waitForReady: true, }); } export default async function buildGrpcExporters( config: NodeSDKConfig, ): Promise<Exporters> { return { spans: [ new SpanProcessorMap[config.collectorMode ?? "batch"]( new PIIExporterDecorator( new OTLPTraceExporter({ url: `${config.collectorUrl}`, compression: CompressionAlgorithm.GZIP, metadata: config.grpcMetadata ?? (await defaultMetadata()), }), getNodeSdkConfig(), ), ), ..._spansProcessorConfig(config), ], metrics: new metrics.PeriodicExportingMetricReader({ exporter: new PIIExporterDecorator( new OTLPMetricExporter({ url: `${config.collectorUrl}`, compression: CompressionAlgorithm.GZIP, metadata: config.grpcMetadata ?? (await defaultMetadata()), }), getNodeSdkConfig(), ), }), logs: [ ..._logsProcessorConfig(config), new LogRecordProcessorMap[config.collectorMode ?? "batch"]( new PIIExporterDecorator( new OTLPLogExporter({ url: `${config.collectorUrl}`, compression: CompressionAlgorithm.GZIP, metadata: config.grpcMetadata ?? (await defaultMetadata()), }), getNodeSdkConfig(), ), ), ], }; }