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 { 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],
});

View File

@@ -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",

View File

@@ -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",