EC2 の Collector ゲートウェイを使用して AWS Lambda 関数をインストルメンテーションする

Splunk OpenTelemetry Lambda レイヤーは、多くのプログラミング言語用の AWS Lambda 関数を自動的にインストルメンテーションします。次の手順に従って、操作を開始します。

ランタイム用のレイヤーと EC2 の Collector ゲートウェイを使用して、AWS Lambda 関数を Splunk Observability Cloud 用に自動的にインストルメンテーションできます。Collector ゲートウェイを使用すると、データを集約し、負荷を軽減できます。

以下の手順に従って、Java、Python、または Node.js 関数用の Splunk OpenTelemetry Lambda レイヤーをインストールしてください。オールインワンのデフォルトの展開手順については、「AWS Lambda 関数を Splunk Observability Cloud にインストルメンテーションする」を参照してください。

互換性と必要条件をチェック

Splunk OpenTelemetry Lambdaレイヤーは、AWS Lambdaの以下のランタイムをサポートしています:

  • Java 8.al2、11、17、21

  • Python 3.9以上

  • Node.js 14以上

  • Go 1.21

AWS Lambdaレイヤーは、標準的なx86_64システムで90MBのオンディスクを必要とします。

詳細については、AWSのドキュメントサイトでLambdaのランタイムやその他のシステム要件を検索してください。

言語用のAWS Lambdaレイヤーをインストールする

以下の手順に従って、Splunk OpenTelemetry Lambda レイヤーを使用して関数をインストルメンテーションします:

  1. AWS Lambdaコンソールで、インストルメンテーションしたい関数を選択します。

  2. Layers セクションで Add a layer を選択し、次に Specify an ARN を選択します。

  3. AWS Lambda 関数のリージョンの Amazon Resource Name (ARN) を、アーキテクチャーに合ったリストからコピーします:

    Java x86_64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-java.md

    Java ARM64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-java-arm.md

    Node.js x86_64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-js.md

    Node.js ARM64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-js-arm.md

    Python x86_64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-python.md

    注: サーバーレスフレームワークを使った Python 関数については、「サーバーレスフレームワークのサポート」を参照してください。
    Python ARM64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-apm-python-arm.md

    注: サーバーレスフレームワークを使った Python 関数については、「サーバーレスフレームワークのサポート」を参照してください。
  4. 選択したARNを Specify an ARN フィールドに貼り付け、Add を選択します。

  5. Splunk レイヤーが Layers テーブルに表示されていることを確認します。

  6. (オプション) 前の手順を繰り返して、Splunk Infrastructure Monitoring 用の AWS Lambda メトリクス拡張レイヤーをインストールします。

    Standard x86_64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-lambda-metrics.md

    Graviton2 ARM64

    https://raw.githubusercontent.com/signalfx/lambda-layer-versions/main/splunk-apm/splunk-lambda-metrics-arm.md

注: AWS CLI やその他の自動化ツールを使って、Lambda レイヤーの更新を自動化できます。

Splunk OpenTelemetry Lambda レイヤーを設定する

以下の手順に従って、Splunk OpenTelemetry Lambda レイヤーに必要な設定を追加します:

  1. AWS Lambdaコンソールで、インストルメンテーションしている関数を開きます。

  2. Configuration に移動し、次に Environment variables に移動します。

  3. Edit を選択します。

  4. Add environment variable を選択して、以下の各環境変数を追加します:

    環境変数

    説明

    SPLUNK_REALM

    Splunk レルムを見つけるには、「Note about realms」を参照してください。

    SPLUNK_ACCESS_TOKEN

    エクスポータがデータを Splunk Observability Cloud に直接送信するための Splunk 認証トークン。「Authentication token」を参照してください。EC2 の Splunk OTel Collector にデータを送信するには、「EC2 で Collector ゲートウェイをセットアップする」を参照してください。

    AWS_LAMBDA_EXEC_WRAPPER

    プログラミング言語に応じて、環境変数の値を設定します:

    Java
    # Select the most appropriate value
    
    # Wraps regular handlers that implement RequestHandler
    /opt/otel-handler
    
    # Same as otel-handler, but proxied through API Gateway,
    # with HTTP context propagation activated
    /opt/otel-proxy-handler
    
    # Wraps streaming handlers that implement RequestStreamHandler
    /opt/otel-stream-handler
    注: AWS SDK v2 インストルメンテーションのみがデフォルトでアクティブ化されます。他のライブラリをインストルメントするには、OpenTelemetry Java SDK から対応するライブラリのインストルメンテーションをインクルードするようにコードを修正してください。
    Python
    /opt/otel-instrument
    Node.js
    /opt/nodejs-otel-handler

    OTEL_SERVICE_NAME

    サービス名

    (オプション) OTEL_RESOURCE_ATTRIBUTES

    この環境変数を deployment.environment=<name-of-your-environment> に設定することで、関数のデプロイ環境の名前を定義します。

  5. Save を選択し、環境変数が表に表示されていることを確認します。

メトリクスインジェストのモードを構成するには、「メトリクスの設定」を参照してください。

注: デフォルトでは、レイヤーは Collector レイヤーを使用する localhost 上の Collector インスタンスにテレメトリを送信します。ローカルの Collector を使用しない場合は、データ転送モードの Collector のアドレスを指定する必要があります。「EC2 で Collector ゲートウェイをセットアップする」を参照してください。

EC2 で Collector ゲートウェイをセットアップする

インストルメンテーションされたAWS Lambda関数からEC2で実行されているCollectorゲートウェイにスパンとメトリクスを送信するには、以下を実行します:

  1. Collector をゲートウェイモードで、機能が到達できるサービス(EC2など)を展開します。「データ転送(ゲートウェイ)モード」を参照してください。

  2. インストルメンテーションしたい AWS Lambda 関数が EC2の Collector ゲートウェイに到達でき、同じ VPC 内にあることを確認します。

  3. ConfigurationEnvironment variables の順に移動し、次に Edit を選択します。

  4. 以下の環境変数をインストルメンテーションされた関数に追加します:

    • OTEL_EXPORTER_OTLP_TRACES_ENDPOINT に、ゲートウェイを実行するEC2インスタンスのアドレスを指定します。例: http://10.0.0.123:4318/v1/traces

    • otlp の値を持つ OTEL_TRACES_EXPORTER

    • http/protobuf の値を持つ OTLP_EXPORTER_OTLP_TRACES_PROTOCOL

    • false の値を持つ SPLUNK_LAMBDA_LOCAL_COLLECTOR_ENABLED

    • SPLUNK_METRICS_ENDPOINT に、ゲートウェイを実行するEC2インスタンスのアドレスを指定します。例: http://10.0.0.123:9943

  5. Collector の設定でアクセストークンとレルムを設定済みの場合は、SPLUNK_ACCESS_TOKENSPLUNK_REALM 環境変数を削除してください。

Splunk Observability Cloud にデータが表示されることを確認する

AWS Lambda 関数が実行されるたびに、トレースデータとメトリクスデータが Splunk Observability Cloud に表示されます。データが表示されない場合、「Splunk OpenTelemetry Lambda レイヤーのトラブルシューティング」を参照してください。