wait for otel detectors

This commit is contained in:
Luke Berndt
2024-09-14 10:17:27 -04:00
parent 8950f5a580
commit d0ffb84034
3 changed files with 29 additions and 0 deletions

View File

@@ -6,6 +6,15 @@ const { TraceIdRatioBasedSampler } = require('@opentelemetry/sdk-trace-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http'); const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
const { diag, DiagConsoleLogger, DiagLogLevel } = require('@opentelemetry/api'); const { diag, DiagConsoleLogger, DiagLogLevel } = require('@opentelemetry/api');
const {
Detector,
DetectorSync,
IResource,
ResourceDetectionConfig,
envDetectorSync,
hostDetectorSync,
processDetectorSync,
} = require("@opentelemetry/resources")
// const { // const {
// dockerCGroupV1Detector, // dockerCGroupV1Detector,
// } = require('@opentelemetry/resource-detector-docker'); // } = 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); 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 samplePercentage = 0.05;
const sdk = new opentelemetry.NodeSDK({ const sdk = new opentelemetry.NodeSDK({
@@ -36,6 +58,11 @@ const sdk = new opentelemetry.NodeSDK({
}, },
}), }),
], ],
resourceDetectors: [
awaitAttributes(envDetectorSync),
awaitAttributes(processDetectorSync),
awaitAttributes(hostDetectorSync),
],
//resourceDetectors: [dockerCGroupV1Detector], //resourceDetectors: [dockerCGroupV1Detector],
}); });

View File

@@ -13,6 +13,7 @@
"@aws-sdk/credential-provider-process": "^3.306.0", "@aws-sdk/credential-provider-process": "^3.306.0",
"@aws-sdk/credential-providers": "^3.309.0", "@aws-sdk/credential-providers": "^3.309.0",
"@opentelemetry/auto-instrumentations-node": "^0.50.0", "@opentelemetry/auto-instrumentations-node": "^0.50.0",
"@opentelemetry/resources": "^1.26.0",
"@smithy/node-http-handler": "^3.1.4", "@smithy/node-http-handler": "^3.1.4",
"adm-zip": "^0.5.10", "adm-zip": "^0.5.10",
"axios": "1.3.5", "axios": "1.3.5",

View File

@@ -7,6 +7,7 @@
"@aws-sdk/credential-provider-process": "^3.306.0", "@aws-sdk/credential-provider-process": "^3.306.0",
"@aws-sdk/credential-providers": "^3.309.0", "@aws-sdk/credential-providers": "^3.309.0",
"@opentelemetry/auto-instrumentations-node": "^0.50.0", "@opentelemetry/auto-instrumentations-node": "^0.50.0",
"@opentelemetry/resources": "^1.26.0",
"@smithy/node-http-handler": "^3.1.4", "@smithy/node-http-handler": "^3.1.4",
"adm-zip": "^0.5.10", "adm-zip": "^0.5.10",
"axios": "1.3.5", "axios": "1.3.5",