Java サーバーレスアプリケーションのインスツルメンテーション

分散型トレーシングでサーバーレスアプリケーションを完全にインスツルメントするには、Java Lambda 関数が Java 8 Corretto (java8.al2) または Java 11 (java11) ランタイムを使用している必要があります。
Lambda 関数が公共のインターネットにアクセスできない VPC にデプロイされている場合、datadoghq.com Datadog サイトには AWS PrivateLink を、それ以外のサイトにはプロキシを使用してデータを送信することができます。
以前に Datadog Forwarder を使用して Lambda 関数をセットアップした場合は、Datadog Forwarder を使用したインスツルメントを参照してください。

インストール

Datadog は、サーバーレスアプリケーションのインスツルメンテーションを有効にするためのさまざまな方法を提供しています。以下からニーズに合った方法を選択してください。Datadog では、一般的に Datadog CLI の使用を推奨しています。

  1. Datadog Lambda 拡張機能のインストール

    COPY --from=public.ecr.aws/datadog/lambda-extension:<TAG> /opt/extensions/ /opt/extensions
    

    <TAG> を特定のバージョン番号 (たとえば 28) または latest に置き換えます。利用可能なタグのリストは、Amazon ECR リポジトリで確認できます。

  2. Datadog Java APM クライアントをインストールする

    RUN yum -y install tar wget gzip
    RUN wget -O /opt/dd-java-agent.jar https://dtdg.co/latest-java-tracer
    
  3. Datadog Lambda ライブラリのインストール

    Maven を使用している場合は、以下の依存関係を pom.xml に含め、VERSION を最新のリリースに置き換えます (前の v は省きます): Maven Cental:

    <dependency>
      <groupId>com.datadoghq</groupId>
      <artifactId>datadog-lambda-java</artifactId>
      <version>VERSION</version>
    </dependency>
    

    Gradle を使用している場合は、以下の依存関係を build.gradle に含め、VERSION を最新のリリースに置き換えます (前の v は省きます): Maven Cental:

    dependencies {
      implementation 'com.datadoghq:datadog-lambda-java:VERSION'
    }
    
  4. 必要な環境変数を設定する

    • JAVA_TOOL_OPTIONS-javaagent:"/opt/java/lib/dd-java-agent.jar" -XX:+TieredCompilation -XX:TieredStopAtLevel=1 に設定します
    • DD_JMXFETCH_ENABLEDfalse に設定します
    • DD_TRACE_ENABLEDtrue に設定します。
    • DD_SITE を設定します。(右側で正しい SITE が選択されていることを確認してください)。
    • DD_API_KEY_SECRET_ARN を、Datadog API キーが安全に保存されている AWS シークレットの ARN に設定します。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue権限が必要です。迅速なテストのために、代わりに DD_API_KEY を使用して、Datadog API キーをプレーンテキストで設定することができます。
  1. Datadog Lambda 拡張機能のインストール

    以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。

    arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:28

  2. Datadog Java APM クライアントをインストールする

    以下のフォーマットで、ARN を使用して Lambda 関数にレイヤーを構成します。

    arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-java:6

  3. Datadog Lambda ライブラリのインストール

    Maven を使用している場合は、以下の依存関係を pom.xml に含め、VERSION を最新のリリースに置き換えます (前の v は省きます): Maven Cental:

    <dependency>
      <groupId>com.datadoghq</groupId>
      <artifactId>datadog-lambda-java</artifactId>
      <version>VERSION</version>
    </dependency>
    

    Gradle を使用している場合は、以下の依存関係を build.gradle に含め、VERSION を最新のリリースに置き換えます (前の v は省きます): Maven Cental:

    dependencies {
      implementation 'com.datadoghq:datadog-lambda-java:VERSION'
    }
    
  4. 必要な環境変数を設定する

    • JAVA_TOOL_OPTIONS-javaagent:"/opt/java/lib/dd-java-agent.jar" -XX:+TieredCompilation -XX:TieredStopAtLevel=1 に設定します
    • DD_JMXFETCH_ENABLEDfalse に設定します
    • DD_TRACE_ENABLEDtrue に設定します。
    • DD_SITE を設定します。(右側で正しい SITE が選択されていることを確認してください)。
    • DD_API_KEY_SECRET_ARN を、Datadog API キーが安全に保存されている AWS シークレットの ARN に設定します。キーはプレーンテキスト文字列として保存する必要があります (JSON blob ではありません)。また、secretsmanager:GetSecretValue権限が必要です。迅速なテストのために、代わりに DD_API_KEY を使用して、Datadog API キーをプレーンテキストで設定することができます。

次のステップ

  • Serverless Homepage でメトリクス、ログ、トレースを見ることができるようになりました。
  • カスタムメトリクスまたは APM スパンを送信して、ビジネスロジックを監視します。
  • テレメトリーの収集に問題がある場合は、トラブルシューティングガイドを参照してください
  • 高度な構成を参照して以下のことを行ってください。
    • タグを使ったテレメトリー接続
    • AWS API Gateway、SQS などのテレメトリーを収集する
    • Lambda のリクエストとレスポンスのペイロードを取得する
    • Lambda 関数のエラーをソースコードにリンクする
    • ログまたはトレースから機密情報をフィルタリングまたはスクラブする

その他の参考資料