Lambda采集器配置

添加和配置Collector Lambda层到你的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提供商:fileenvyamlhttphttpss3。要使用不同的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
最后修改 December 10, 2023: translate (a4350d6e)