@ogcio/o11y-sdk-node
Version:
Opentelemetry standard instrumentation SDK for NodeJS based project
37 lines (36 loc) • 1.8 kB
JavaScript
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 { 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";
export default function buildHttpExporters(config) {
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())),
],
};
}