@ogcio/o11y-sdk-node
Version:
Opentelemetry standard instrumentation SDK for NodeJS based project
57 lines (54 loc) • 1.94 kB
text/typescript
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(),
),
),
],
};
}