我正在关注这个仓库 https://github.com/open-telemetry/opentelemetry-lambda/blob/main/collector/README.md部署带有 opentelemetry
扩展的 lambda。
我已经构建了存储库,并通过上传文件 nodejs/packages/layer/build/layer.zip
创建了 lambda 层。然后我创建了一个使用该层的 lambda 并添加了 2 个环境变量:
AWS_LAMBDA_EXEC_WRAPPER = /opt/otel-handler
OPENTELEMETRY_COLLECTOR_CONFIG_FILE = /var/task/collector.yaml
我在项目根目录下创建了一个文件collector.yaml
:
receivers:
otlp:
protocols:
grpc:
exporters:
logging:
loglevel: debug
otlp:
endpoint: http://localhost
service:
pipelines:
traces:
receivers: [otlp]
exporters: [logging, otlp]
当我运行 lambda 时,出现此错误:
2022-12-14T11:50:07.070+11:00 Registering OpenTelemetry
2022-12-14T11:50:07.098+11:00 Exporter "otlp" requested through environment variable is unavailable.
2022-12-14T11:50:07.122+11:00 2022-12-14T00:50:07.121Z undefined WARN Failed extracting version /var/task
它说otlp
不可用。我错过了什么吗?我不确定这是什么意思。
最佳答案
使用自定义层在 AWS Lambda 函数中启用 OpenTelemetry;除了提供您描述的两个环境变量之外,您还需要手动将自定义层添加到函数中。您可以使用 AWS CLI 执行此操作:
aws lambda update-function-configuration --function-name Function --layers <your Lambda layer ARN>
您也可以使用 AWS 控制台:
但请记住,您不需要创建自定义 Lambda 层来启用 OpenTelemetry。 AWS 提供了不同的预构建层供您使用:
- AWS managed Lambda layer for ADOT Java SDK and ADOT Collector
- AWS managed Lambda Layer for ADOT Java Auto-instrumentation Agent and ADOT Collector
- AWS managed Lambda Layer for ADOT JavaScript SDK and ADOT Collector
- AWS managed Lambda Layer for ADOT Python SDK and ADOT Collector
- AWS managed Lambda Layer for ADOT Collector and ADOT Lambda .NET SDK (Manual Instrumentation)
- AWS managed Lambda Layer for ADOT Collector and ADOT Lambda Go SDK (Manual Instrumentation)
关于amazon-web-services - 如何注册 opentelemetry lambda 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74792512/