Java アプリケーションのインスツルメンテーション
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

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

AWS インテグレーションDatadog Forwarder をインストールしたら、以下の手順に従ってアプリケーションをインスツルメントし、Datadog にメトリクス、ログ、トレースを送信します。

構成

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

プロジェクトのコンフィギュレーションに基づき以下のいずれかのコマンドを実行することで、Datadog Lambda ライブラリをローカルにインストールできます。最新のバージョンに関しては、最新のリリースを参照してください。

pom.xml に以下の依存関係を含めます。

<repositories>
  <repository>
    <id>datadog-maven</id>
    <url>https://dl.bintray.com/datadog/datadog-maven</url>
  </repository>     
</repositories>
<dependency>
  <groupId>com.datadoghq</groupId>
  <artifactId>datadog-lambda-java</artifactId>
  <version>0.0.5</version>
  <type>pom</type>
</dependency>

build.gradle に以下を含めます。

repositories {
  maven { url "https://dl.bintray.com/datadog/datadog-maven" }
}
dependencies {
  implementation 'com.datadoghq:datadog-lambda-java:0.0.5'
}

関数の構成

  1. Lambda 関数の AWS X-Ray アクティブトレースを有効にします。

Datadog Forwarder をロググループにサブスクライブ

メトリクス、トレース、ログを Datadog へ送信するには、関数の各ロググループに Datadog Forwarder Lambda 関数をサブスクライブする必要があります。

  1. まだの場合は、Datadog Forwarder をインストールします
  2. [DdFetchLambdaTags のオプションが有効であることを確認します5
  3. Datadog Forwarder を関数のロググループにサブスクライブします

Datadog サーバーレスモニタリングの利用

以上の方法で関数を構成すると、Serverless Homepage でメトリクス、ログ、トレースを確認できるようになるはずです。

カスタムメトリクスの送信をご希望の場合は、以下のコード例をご参照ください。

public class Handler implements RequestHandler<APIGatewayV2ProxyRequestEvent, APIGatewayV2ProxyResponseEvent> {
    public Integer handleRequest(APIGatewayV2ProxyRequestEvent request, Context context){
        DDLambda dd = new DDLambda(request, lambda);

        Map<String,String> myTags = new HashMap<String, String>();
            myTags.put("product", "latte");
            myTags.put("order","online");

        // カスタムメトリクスを送信
        dd.metric(
            "coffee_house.order_value", // メトリクス名
            12.45,                      // メトリクスの値
            myTags);                    // 関連するタグ

        URL url = new URL("https://example.com");
        HttpURLConnection hc = (HttpURLConnection)url.openConnection();

        // Datadog 分散型トレーシングヘッダを追加
        hc = (HttpURLConnection) dd.addTraceHeaders(hc);

        hc.connect();
    }
}