import { NodeSDK } from "@opentelemetry/sdk-node"; import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"; import { PrometheusExporter } from "@opentelemetry/exporter-prometheus"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { resourceFromAttributes } from "@opentelemetry/resources"; import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; const prometheusExporter = new PrometheusExporter({ port: 9464 }); const traceExporter = new OTLPTraceExporter({ url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://tempo.observability.svc:4318/v1/traces", }); const sdk = new NodeSDK({ resource: resourceFromAttributes({ [ATTR_SERVICE_NAME]: "api", }), metricReader: prometheusExporter, traceExporter, instrumentations: [ getNodeAutoInstrumentations({ "@opentelemetry/instrumentation-fs": { enabled: false }, }), ], }); sdk.start(); process.on("SIGTERM", () => { sdk.shutdown().then( () => process.exit(0), () => process.exit(1), ); });