Lambda Collector 配置
OpenTelemetry 社区将 Collector 作为独立的 Lambda 层提供,与插桩层分开, 为用户提供了最大的灵活性。这与当前的 AWS OpenTelemetry 发行版(ADOT)不同, 后者将插桩和 Collector 打包在一起。
添加 OTel Collector Lambda 层的 ARN
完成应用的自动插桩后,你应添加 Collector Lambda 层来收集并提交数据至所选后端。
请查找最新的 Collector 层发布版本,
将其中的 ARN 中的 <region>
标签替换为你的 Lambda 所在区域。
注意:Lambda 层是区域性资源,仅能在其发布所在的 AWS 区域中使用。请确保使用与你的 Lambda 功能相同区域的层。社区会在所有可用区域中发布这些层。
配置 OTel Collector
OTel Collector Lambda 层的配置遵循 OpenTelemetry 标准。
默认情况下,OTel Collector Lambda 层使用 config.yaml
文件进行配置。
设置目标后端的环境变量
在 Lambda 的环境变量设置中,创建一个新的变量,用于存放你的认证 token。
更新默认的导出器配置
在你的 config.yaml
文件中添加所需的导出器,如果默认中尚未包含。
使用前一步中设置的环境变量来配置导出器。
如果没有为导出器设置环境变量,默认配置仅支持使用 debug 导出器输出数据。 默认配置如下所示:
receivers:
otlp:
protocols:
grpc:
endpoint: '0.0.0.0:4317'
http:
endpoint: '0.0.0.0:4318'
exporters:
# 注意:v0.86.0 之前请使用 `logging` 而非 `debug`
debug:
verbosity: detailed
service:
pipelines:
traces:
receivers: [otlp]
exporters: [debug]
metrics:
receivers: [otlp]
exporters: [debug]
telemetry:
metrics:
address: localhost:8888
发布你的 Lambda
发布 Lambda 的新版本以使配置更改生效。
高级 OTel Collector 配置
你可以通过自定义配置启用更多组件。若需调试 Collector, 可在配置文件中设置日志级别为 debug。如下所示。
选择所用的 Confmap 提供程序
OTel Lambda 层支持以下类型的配置映射提供程序:
file
、env
、yaml
、http
、https
和 s3
。
要使用不同的 Confmap 提供程序来自定义 Collector 配置,请参考
Amazon OpenTelemetry 发行版的 Confmap 提供程序文档。
创建自定义配置文件
以下为根目录下 collector.yaml
的示例配置文件:
# collector.yaml 放在根目录中
# 设置环境变量 'OPENTELEMETRY_COLLECTOR_CONFIG_URI' 为 '/var/task/collector.yaml'
receivers:
otlp:
protocols:
grpc:
endpoint: 'localhost:4317'
http:
endpoint: 'localhost:4318'
exporters:
# 注意:v0.86.0 之前请使用 `logging` 而非 `debug`
debug:
awsxray:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [awsxray]
metrics:
receivers: [otlp]
exporters: [debug]
telemetry:
metrics:
address: localhost:8888
通过环境变量映射自定义配置文件
配置完成后,在 Lambda 功能上设置环境变量 OPENTELEMETRY_COLLECTOR_CONFIG_URI
,
值为配置文件的路径(取决于 Confmap 提供程序)。例如,若使用文件 Confmap 提供程序,
应将其值设置为 /var/task/<路径>/<文件名>
。该变量告知扩展从哪里加载 Collector 配置。
通过 CLI 设置自定义配置路径
你可以在 Lambda 控制台中设置,也可以使用 AWS CLI:
aws lambda update-function-configuration --function-name Function --environment Variables={OPENTELEMETRY_COLLECTOR_CONFIG_URI=/var/task/collector.yaml}
通过 CloudFormation 设置配置环境变量
也可在 CloudFormation 模板中配置环境变量:
Function:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
OPENTELEMETRY_COLLECTOR_CONFIG_URI: /var/task/collector.yaml
从 S3 加载配置
若从 S3 加载配置,需确保绑定至功能的 IAM 角色具有读取相应 S3 桶的权限。
Function:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
OPENTELEMETRY_COLLECTOR_CONFIG_URI: s3://<bucket_name>.s3.<region>.amazonaws.com/collector_config.yaml
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!