UNPKG

@ogcio/o11y-sdk-node

Version:

Opentelemetry standard instrumentation SDK for NodeJS based project

57 lines (54 loc) 1.94 kB
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http"; import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; 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"; export default function buildHttpExporters(config: NodeSDKConfig): Exporters { if (config.collectorUrl.endsWith("/")) { config.collectorUrl = config.collectorUrl.slice(0, -1); } return { spans: [ new SpanProcessorMap[config.collectorMode ?? "batch"]( new PIIExporterDecorator( new OTLPTraceExporter({ url: `${config.collectorUrl}/v1/traces`, compression: CompressionAlgorithm.GZIP, }), getNodeSdkConfig(), ), ), ..._spansProcessorConfig(config), ], metrics: new metrics.PeriodicExportingMetricReader({ exporter: new PIIExporterDecorator( new OTLPMetricExporter({ url: `${config.collectorUrl}/v1/metrics`, compression: CompressionAlgorithm.GZIP, }), getNodeSdkConfig(), ), }), logs: [ ..._logsProcessorConfig(config), new LogRecordProcessorMap[config.collectorMode ?? "batch"]( new PIIExporterDecorator( new OTLPLogExporter({ url: `${config.collectorUrl}/v1/logs`, compression: CompressionAlgorithm.GZIP, }), getNodeSdkConfig(), ), ), ], }; }