Lambda Collector 配置

将 Collector Lambda 层添加到您的 Lambda 并进行配置

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 提供程序:fileenvyamlhttphttpss3。要使用不同的 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