Lambda Collector 配置
OTel Collector 以单独的 Lambda 层形式提供,与 Instrumentation 层分开,以最大程度地提高用户的灵活性。这与当前的 AWS OpenTelemetry 分布 (ADOT) 实现不同,后者将 instrumentation 和 Collector 打包在一起。
添加 OTel Collector Lambda 层的 ARN
在对应用程序进行 instrumentation 后,应添加 Collector Lambda 层,以收集数据并将其提交到您选择的后端。
查找最新的 Collector 层发布版本,并使用其 ARN,同时将 <region> 标签更改为您的 Lambda 所在的区域。
注意:Lambda 层是区域性资源,这意味着它们只能在发布它们的区域中使用。请确保在与您的 Lambda 函数相同的区域中使用该层。社区在所有可用区域发布层。
配置 OTel Collector
OTel Collector Lambda 层的配置遵循 OpenTelemetry 标准。
默认情况下,OTel Collector Lambda 层使用 config.yaml。
为首选后端设置环境变量
在 Lambda 环境变量设置中,创建一个新的变量来保存您的授权令牌。
更新默认导出器
在您的 config.yaml 文件中,如果首选导出器尚不存在,请将其添加进去。使用您在上一步中为访问令牌设置的环境变量配置您的导出器。
如果没有为导出器设置环境变量,默认配置仅支持使用 debug 导出器发出数据。 这是默认配置
receivers:
otlp:
protocols:
grpc:
endpoint: '0.0.0.0:4317'
http:
endpoint: '0.0.0.0:4318'
exporters:
# NOTE: Prior to v0.86.0 use `logging` instead of `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 Collector 配置,请参阅Amazon Distribution of OpenTelemetry Confmap providers 文档以获取更多信息。
创建自定义配置文件
这是根目录中 collector.yaml 的示例配置文件
#collector.yaml in the root directory
#Set an environment variable 'OPENTELEMETRY_COLLECTOR_CONFIG_URI' to '/var/task/collector.yaml'
receivers:
otlp:
protocols:
grpc:
endpoint: 'localhost:4317'
http:
endpoint: 'localhost:4318'
exporters:
# NOTE: Prior to v0.86.0 use `logging` instead of `debug`.
debug:
awsxray:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [awsxray]
metrics:
receivers: [otlp]
exporters: [debug]
telemetry:
metrics:
address: localhost:8888
使用环境变量映射自定义配置文件
一旦通过 confmap 提供程序设置了 collector 配置,就在您的 Lambda 函数上创建一个环境变量 OPENTELEMETRY_COLLECTOR_CONFIG_URI,并将其值设置为相对于 confmap 提供程序的配置路径。例如,如果您使用的是文件 confmap 提供程序,请将其值设置为 /var/task/<path>/<to>/<filename>。这将告诉扩展程序在哪里找到 collector 配置。
使用 CLI 进行自定义 Collector 配置
您可以通过 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 角色包含对相关存储桶的读取访问权限。
Function:
Type: AWS::Serverless::Function
Properties:
...
Environment:
Variables:
OPENTELEMETRY_COLLECTOR_CONFIG_URI: s3://<bucket_name>.s3.<region>.amazonaws.com/collector_config.yaml