opentelemetry-lambda icon indicating copy to clipboard operation
opentelemetry-lambda copied to clipboard

Nodejs collector "Attempted duplicate registration of API: propagation" error

Open Berger92 opened this issue 3 years ago • 3 comments

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

Berger92 avatar May 06 '22 10:05 Berger92

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.

psema4 avatar May 11 '22 19:05 psema4

Take a look at https://github.com/open-telemetry/opentelemetry-js-api/issues/157#issuecomment-1101352108b

Chuckytuh avatar Jul 06 '22 16:07 Chuckytuh