diff --git a/backend/agents/otel-tracing.js b/backend/agents/otel-tracing.js index a9b9f34..1afb823 100644 --- a/backend/agents/otel-tracing.js +++ b/backend/agents/otel-tracing.js @@ -6,6 +6,15 @@ const { TraceIdRatioBasedSampler } = require('@opentelemetry/sdk-trace-node'); const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { diag, DiagConsoleLogger, DiagLogLevel } = require('@opentelemetry/api'); +const { + Detector, + DetectorSync, + IResource, + ResourceDetectionConfig, + envDetectorSync, + hostDetectorSync, + processDetectorSync, +} = require("@opentelemetry/resources") // const { // dockerCGroupV1Detector, // } = require('@opentelemetry/resource-detector-docker'); @@ -19,6 +28,19 @@ console.log("OTEL_EXPORTER_OTLP_HEADERS: " + process.env.OTEL_EXPORTER_OTLP_HEAD console.log("OTEL_SERVICE_NAME: " + process.env.OTEL_SERVICE_NAME); +// from https://github.com/open-telemetry/opentelemetry-js/issues/4638 +// this is a workaround to wait for async attributes to be resolved +function awaitAttributes(detector){ + return { + async detect(config) { + const resource = detector.detect(config) + await resource.waitForAsyncAttributes() + + return resource + }, + } +} + const samplePercentage = 0.05; const sdk = new opentelemetry.NodeSDK({ @@ -36,6 +58,11 @@ const sdk = new opentelemetry.NodeSDK({ }, }), ], + resourceDetectors: [ + awaitAttributes(envDetectorSync), + awaitAttributes(processDetectorSync), + awaitAttributes(hostDetectorSync), + ], //resourceDetectors: [dockerCGroupV1Detector], }); diff --git a/backend/package-lock.json b/backend/package-lock.json index e83ce2e..0cae2cc 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -13,6 +13,7 @@ "@aws-sdk/credential-provider-process": "^3.306.0", "@aws-sdk/credential-providers": "^3.309.0", "@opentelemetry/auto-instrumentations-node": "^0.50.0", + "@opentelemetry/resources": "^1.26.0", "@smithy/node-http-handler": "^3.1.4", "adm-zip": "^0.5.10", "axios": "1.3.5", diff --git a/backend/package.json b/backend/package.json index 79f4d09..950632c 100644 --- a/backend/package.json +++ b/backend/package.json @@ -7,6 +7,7 @@ "@aws-sdk/credential-provider-process": "^3.306.0", "@aws-sdk/credential-providers": "^3.309.0", "@opentelemetry/auto-instrumentations-node": "^0.50.0", + "@opentelemetry/resources": "^1.26.0", "@smithy/node-http-handler": "^3.1.4", "adm-zip": "^0.5.10", "axios": "1.3.5",