UNPKG

@ogcio/o11y-sdk-node

Version:

Opentelemetry standard instrumentation SDK for NodeJS based project

43 lines (42 loc) 2.05 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 { LogRecordProcessorMap, SpanProcessorMap } from "../utils.js"; import { _logsProcessorConfig, _spansProcessorConfig, } from "./processor-config.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) { 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())), ], }; }