Lambdaコレクター設定

コレクターLambdaレイヤーをあなたのLambdaに追加して設定する

OpenTelemetry コミュニティは、ユーザーに最大限の柔軟性を与えるために、コレクターを計装レイヤーとは別のLambdaレイヤーで提供しています。 これは、計装とコレクターをバンドルしている現在の AWS Distribution of OpenTelemetry (ADOT) の実装とは異なります。

OTelコレクターLambdaレイヤーのARNを追加する

アプリケーションの計装が完了したら、コレクターLambdaレイヤーを追加してデータを収集し、選択したバックエンドに送信します。

最新のコレクターレイヤーリリースを見つけ、そのARNを使用します。 <region>タグをラムダがいるリージョンに変更します。

注意: ラムダレイヤーはリージョンで分かれたリソースであり、公開されているリージョンでのみ使用できます。Lambda関数と同じリージョンでレイヤーを使用するようにしてください。コミュニティは、利用可能なすべてのリージョンでレイヤーを公開しています。

OTelコレクターの設定

OTelコレクターLambdaレイヤーの設定は、OpenTelemetry標準にしたがっています。

デフォルトでは、OTelコレクターLambdaレイヤーはconfig.yamlを使用します。

希望するバックエンドの環境変数を設定する

Lambda環境変数の設定で、認証トークンを格納する新しい変数を作成します。

デフォルトエクスポーターを更新する

もしまだ存在していなければ、config.yaml ファイルに好みのエクスポーターを追加します。 前のステップでアクセストークンのために設定した環境変数を使用して、エクスポーターを設定します。

エクスポーターに環境変数が設定されていない場合、デフォルトの設定は、デバッグエクスポーターを使用したデータ送信のみをサポートします 以下はデフォルトの設定です。

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: '0.0.0.0:4317'
      http:
        endpoint: '0.0.0.0:4318'

exporters:
  # 注意: v0.86.0 より前のバージョンでは、`debug` のかわりに `logging` を使用すること
  debug:
    verbosity: detailed

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [debug]
    metrics:
      receivers: [otlp]
      exporters: [debug]
  telemetry:
    metrics:
      address: localhost:8888

Lambdaを公開する

Lambdaの新しいバージョンをパブリッシュして、行った変更を有効にします。

高度な OTel コレクターの設定

カスタム構成でサポートされる利用可能なコンポーネントのリストは、こちらをご覧ください。 デバッグを有効にするには、設定ファイルを使ってログレベルをデバッグに設定します。 以下の例を参照してください。

希望のConfmapプロバイダーを選択する

OTel Lambdaレイヤーは fileenvyamlhttphttpss3 といった種類の Confmap プロバイダーをサポートしています。 異なる Confmap プロバイダーを使用して OTel コレクターの設定をカスタマイズするには、Amazon Distribution of OpenTelemetry Confmap providers document を参照してください。

カスタム設定ファイルの作成

以下はルートディレクトリにある 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 より前のバージョンでは `debug` のかわりに `logging` を使用すること
  debug:
  awsxray:

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [awsxray]
    metrics:
      receivers: [otlp]
      exporters: [debug]
  telemetry:
    metrics:
      address: localhost:8888

環境変数を使ってカスタム設定ファイルをマップする

confmapプロバイダーを通してコレクターを設定したら、Lambda関数に環境変数 OPENTELEMETRY_COLLECTOR_CONFIG_URI を作成し、その値としてconfmapプロバイダーの設定のパスを設定します。 たとえば、ファイルconfigmapプロバイダーを使用している場合は、その値を /var/task/<path>/<to>/<filename> に設定します。 これにより、拡張モジュールにコレクターの設定がどこにあるかを伝えます。

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ロールに、関連するバケットへの読み取りアクセスが含まれている必要があります。

Function:
  Type: AWS::Serverless::Function
  Properties:
    ...
    Environment:
      Variables:
        OPENTELEMETRY_COLLECTOR_CONFIG_URI: s3://<bucket_name>.s3.<region>.amazonaws.com/collector_config.yaml