Lambda采集器配置
OpenTelemetry社区为Collector提供了单独的Lambda层以提供用户最大的灵活性。这与当前的AWS OpenTelemetry(ADOT)实现不同,ADOT将仪表化和Collector绑定在一起。
添加OTel Collector Lambda层的ARN
在为应用程序仪表化后,应该添加Collector Lambda层来收集和提交数据到你选择的后端。
找到最近的Collector层版本,并将其中的<region>
标签更改为你的Lambda函数所在的区域后使用其ARN。
注意:Lambda层是一种区域化的资源,意味着它们只能在发布它们的区域中使用。确保在与Lambda函数相同的区域使用该层。社区在所有可用的区域发布层。
配置OTel Collector
OTel Collector Lambda层的配置遵循OpenTelemetry标准。
默认情况下,OTel Collector Lambda层使用config.yaml
文件。
设置首选后端的环境变量
在Lambda的环境变量设置中创建一个新的变量,保存你的授权令牌(authorization token)。
更新默认导出器
在你的config.yaml
文件中添加你首选的导出器(如果它们尚未存在)。使用先前步骤中为访问令牌设置的环境变量配置你的导出器。
**如果没有设置导出器的环境变量,那么默认配置只支持使用debug导出器发出数据。**以下是默认配置:
receivers:
otlp:
protocols:
grpc:
endpoint: 'localhost:4317'
http:
endpoint: 'localhost: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配置
请找到可用的组件列表,该组件支持自定义配置。要启用调试,你可以使用配置文件将日志级别设置为debug。下面是一个示例:
选择你首选的Confmap提供商
OTel Lambda层支持以下类型的Confmap提供商:file
,env
,yaml
,http
,https
和s3
。要使用不同的Confmap提供商自定义OTel采集器配置,请参考Amazon OpenTelemetry Confmap提供商文档。
创建自定义配置文件
这是一个位于根目录中的collector.yaml
的示例配置文件:
# collector.yaml位于根目录中
# 设置一个名为'OPENTELEMETRY_COLLECTOR_CONFIG_FILE'的环境变量,将其值设置为'/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
使用环境变量映射自定义配置文件
一旦通过confmap提供程序设置了你的采集器配置,就在你的Lambda函数上创建一个环境变量OPENTELEMETRY_COLLECTOR_CONFIG_FILE
,并将路径设置为相对应的confmap提供程序。例如,如果你使用了文件confmap提供者,请将其值设置为/var/task/<path>/<to>/<filename>
。这将告诉扩展程序在哪里找到采集器配置。
使用CLI自定义Collector配置
可以通过Lambda控制台或AWS CLI设置它。
aws lambda update-function-configuration --function-name Function --environment Variables={OPENTELEMETRY_COLLECTOR_CONFIG_FILE=/var/task/collector.yaml}
通过CloudFormation设置配置环境变量
你也可以通过CloudFormation模板来配置环境变量:
Function:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
OPENTELEMETRY_COLLECTOR_CONFIG_FILE: /var/task/collector.yaml
从S3对象加载配置
从S3加载配置将需要将IAM角色附加到你的函数,该角色具有对相关存储桶的读取访问权限。
Function:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
OPENTELEMETRY_COLLECTOR_CONFIG_FILE: s3://<bucket_name>.s3.<region>.amazonaws.com/collector_config.yaml