Nodejs collector "Attempted duplicate registration of API: propagation" error
Hi 👋
I am a newbie and was just trying to send some logs to Honeycomb using the otel lambda collector. I am seeing the aforementioned error in the lambda console. Not sure, if I am missing something or it is an actual issue.
Details:
Lambda layer: aws-otel-nodejs-arm64-ver-1-0-1
Config file:
receivers:
otlp:
protocols:
grpc:
http:
exporters:
otlp:
endpoint: "api.honeycomb.io:443"
headers:
"x-honeycomb-team": "<API-KEY>"
"x-honeycomb-dataset": "<DATA-SET>"
logging:
loglevel: debug
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [otlp,logging]
Code:
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: 'Hello from Lambda!',
};
console.warn(response);
return response;
};
Execution result:
Response
{
"statusCode": 200,
"body": "Hello from Lambda!"
}
Function Logs
nd": "exporter", "name": "otlp"}
2022-05-06T10:27:51.099Z info builder/exporters_builder.go:48 Exporter started. {"kind": "exporter", "name": "otlp"}
2022-05-06T10:27:51.099Z info builder/exporters_builder.go:40 Exporter is starting... {"kind": "exporter", "name": "logging"}
2022-05-06T10:27:51.099Z info builder/exporters_builder.go:48 Exporter started. {"kind": "exporter", "name": "logging"}
2022-05-06T10:27:51.099Z info service/service.go:92 Starting processors...
2022-05-06T10:27:51.099Z info builder/pipelines_builder.go:54 Pipeline is starting... {"name": "pipeline", "name": "traces"}
2022-05-06T10:27:51.099Z info builder/pipelines_builder.go:65 Pipeline is started. {"name": "pipeline", "name": "traces"}
2022-05-06T10:27:51.100Z info service/service.go:97 Starting receivers...
2022-05-06T10:27:51.100Z info builder/receivers_builder.go:68 Receiver is starting... {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info otlpreceiver/otlp.go:69 Starting GRPC server on endpoint 0.0.0.0:4317 {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info otlpreceiver/otlp.go:87 Starting HTTP server on endpoint 0.0.0.0:4318 {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info otlpreceiver/otlp.go:147 Setting up a second HTTP listener on legacy endpoint 0.0.0.0:55681 {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info otlpreceiver/otlp.go:87 Starting HTTP server on endpoint 0.0.0.0:55681 {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info builder/receivers_builder.go:73 Receiver started. {"kind": "receiver", "name": "otlp"}
2022-05-06T10:27:51.100Z info service/telemetry.go:95 Setting up own telemetry...
2022-05-06T10:27:51.101Z info service/telemetry.go:115 Serving Prometheus metrics {"address": ":8888", "level": "basic", "service.instance.id": "0b8fac26-cea0-4b13-bb30-0eee9b2d452f", "service.version": "latest"}
2022-05-06T10:27:51.101Z info service/collector.go:229 Starting otelcol... {"Version": "v0.1.0", "NumCPU": 2}
2022-05-06T10:27:51.101Z info service/collector.go:124 Everything is ready. Begin running and processing data.
2022/05/06 10:27:51 Registered extension ID: "d54b1f97-a0f1-4663-9e14-d0304fa2826d"
2022/05/06 10:27:51 [collector] Register response: {
"functionName": "otel-collector-test",
"functionVersion": "$LATEST",
"handler": "index.handler"
}
2022/05/06 10:27:51 [collector] Waiting for event...
Registering OpenTelemetry
2022-05-06T10:27:51.663Z undefined WARN Failed extracting version /var/task
2022-05-06T10:27:51.670Z undefined ERROR Error: @opentelemetry/api: Attempted duplicate registration of API: propagation
at Object.registerGlobal (/opt/nodejs/node_modules/@opentelemetry/api/build/src/internal/global-utils.js:33:19)
at PropagationAPI.setGlobalPropagator (/opt/nodejs/node_modules/@opentelemetry/api/build/src/api/propagation.js:51:31)
at NodeTracerProvider.register (/opt/nodejs/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js:99:31)
at NodeTracerProvider.register (/opt/nodejs/node_modules/@opentelemetry/sdk-trace-node/build/src/NodeTracerProvider.js:28:15)
at initializeProvider (/opt/wrapper.js:81:20)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
EXTENSION Name: collector State: Ready Events: [INVOKE,SHUTDOWN]
2022/05/06 10:27:51 [collector] Received event: {
"eventType": "INVOKE",
"deadlineMs": 1651832886675,
"requestId": "efa3b434-6af5-4d02-aeff-2e577030adca",
"invokedFunctionArn": "arn:aws:lambda:eu-west-2:779511713620:function:otel-collector-test",
"tracing": {
"type": "X-Amzn-Trace-Id",
"value": "Root=1-6274f826-373e9f7222f64d311a80e2a9;Parent=0bda14401534a84c;Sampled=0"
}
}
2022/05/06 10:27:51 [collector] Waiting for event...
2022-05-06T10:27:52.071Z efa3b434-6af5-4d02-aeff-2e577030adca WARN { statusCode: 200, body: 'Hello from Lambda!' }
END RequestId: efa3b434-6af5-4d02-aeff-2e577030adca
REPORT RequestId: efa3b434-6af5-4d02-aeff-2e577030adca Duration: 556.90 ms Billed Duration: 557 ms Memory Size: 128 MB Max Memory Used: 118 MB Init Duration: 754.09 ms
Request ID
efa3b434-6af5-4d02-aeff-2e577030adca
In the same boat, learning HC and seeing the same logs using the aws-otel-nodejs-arm64-ver-1-0-1:2 layer with lambdas on node runtimes. It doesn't appear to be fatal (ie. I get traces into my dataset), but I'd be interested in learning how to resolve or suppress the error.
Take a look at https://github.com/open-telemetry/opentelemetry-js-api/issues/157#issuecomment-1101352108b