互換性

Java Datadog Trace ライブラリはオープンソースです。詳細については、GitHub リポジトリをご覧ください。

サポートされている Java ランタイム

The Java Tracer supports automatic instrumentation for the following Oracle JDK, OpenJDK JVM, and GraalVM runtimes.

Java Tracer v1 (latest)

Java versionsOperating SystemsSupport level
from 22 and upwardWindows (x86, x86-64)
Linux (x86, x86-64, arm64)
Mac (x86, x86-64, arm64)
Beta
from 18 to 21Windows (x86, x86-64)
Linux (x86, x86-64, arm64)
Mac (x86, x86-64, arm64)
GA
from 8 to 17Windows (x86, x86-64)
Linux (x86, x86-64)
Mac (x86, x86-64)
GA
Linux (arm64)
Mac (arm64)
Beta

Datadog は、Java の早期アクセスバージョンを公式にサポートしていません。

Java Tracer v0 (maintenance)

Java バージョンオペレーティングシステムサポートレベル
7 onlyWindows (x86、x86-64)
Linux (x86、x86-64)
Mac (x86、x86-64)
メンテナンス
7 onlyLinux (arm64)
Mac (arm64)
サポート終了

サポートレベル

レベルサポート内容
非対応実装していません。特別なご要望は Datadog サポートにお問い合わせください。
ベータ版初期実装です。まだすべての機能が含まれていない可能性があります。新機能のサポート、バグやセキュリティの修正は、ベストエフォートで提供されます。
一般提供 (GA)全機能の完全実装。新機能、バグやセキュリティの修正を完全サポート。
メンテナンス既存機能の完全実装。新機能は受けません。バグフィックス、セキュリティフィックスのみの対応となります。
サポート終了 (EOL)サポートはありません。

インテグレーション

ベータインテグレーションはデフォルトで無効になっていますが、個別に有効にできます。

  • システムプロパティ: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • 環境変数: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

Web フレームワークの互換性

dd-java-agent には、次のウェブフレームワークの自動トレースのサポートが含まれます。

Web フレームワークのトレーシングでは以下の確認が可能です。

  • HTTP リクエストの応答タイミング
  • tags for the HTTP request (status code, method, etc.)
  • エラーとスタックトレースの取得
  • Web リクエストと分散型トレーシングの間で作成された作業のリンク
サーバーバージョンサポートの種類インスツルメンテーション名 (構成に使用)
Akka-Http サーバー10.0+完全対応akka-httpakka-http-server
Finatra Web2.9+完全対応finatra
Grizzly2.0+完全対応grizzly
Grizzly-HTTP2.3.20+完全対応grizzly-filterchain
Java Servlet 互換2.3+、3.0+完全対応servletservlet-2servlet-3
Jax-RS アノテーションJSR311-API完全対応jax-rsjaxrsjax-rs-annotationsjax-rs-filter
Jetty7.0-12.x完全対応jetty
Micronaut HTTP サーバー2.x完全対応micronaut
Mulesoft4完全対応mule
Netty HTTP サーバー3.8+完全対応netty, netty-3.8, netty-4.0, netty-4.1
Play2.3-2.8完全対応playplay-action
Ratpack1.5+完全対応ratpack
Restlet HTTP サーバー2.2 - 2.4完全対応restlet-http.
Spark Java2.3+ベータ版sparkjava (要 jetty)
Spring Boot1.5+完全対応spring-web または spring-webflux
Spring Web (MVC)4.0+完全対応spring-web
Spring WebFlux5.0+完全対応spring-webflux
Tomcat5.5+完全対応tomcat
Vert.x3.4+完全対応vertx, vertx-3.4, vertx-3.9, vertx-4.0

注: 多くのアプリケーションサーバーは Servlet 互換でそのインスツルメンテーションによって自動的にカバーされます (Websphere、Weblogic、JBoss)。 また、Spring Boot (バージョン 3) のようなフレームワークは、通常、Tomcat、Jetty、Netty など、サポートされた組み込みアプリケーションサーバーを使うため、本質的に機能します。

フレームワークインテグレーションがデフォルトで無効

以下のインスツルメンテーションはデフォルトでは無効になっており、以下の設定により有効にすることができます。

インスツルメンテーション有効にするには
JAX-WS-Ddd.integration.jax-ws.enabled=true
Mulesoft-Ddd.integration.mule.enabled=true, -Ddd.integration.grizzly-client.enabled=true, -Ddd.integration.grizzly-filterchain.enabled=true
Grizzly-Ddd.integration.grizzly-client.enabled=true
Grizzly-HTTP-Ddd.integration.grizzly-filterchain.enabled=true
Ning-Ddd.integration.ning.enabled=true
Spark Java-Ddd.integration.sparkjava.enabled=true
Hazelcast (client side only)-Ddd.integration.hazelcast.enabled=true
-Ddd.integration.hazelcast_legacy.enabled=true
TIBCO BusinessWorks-Ddd.integration.tibco.enabled=true

: JAX-WS インテグレーションは、@WebService (JAX-WS 1.x) および @WebServiceProvider (JAX-WS 2.x) でアノテーションされたエンドポイントを使用します。

希望する Web フレームワークが見つかりませんか?Datadog では継続的にサポートを追加しています。サポートが必要な場合は、Datadog サポートにお問い合わせください。

ネットワーキングフレームワークの互換性

dd-java-agent には、次のネットワーキングフレームワークの自動トレースのサポートが含まれます。

ネットワーキングのトレーシングでは以下の確認が可能です

  • リクエストの応答タイミング
  • リクエスト用のタグ (応答コードなど)
  • エラーとスタックトレースの取得
  • 分散型トレーシング
フレームワークバージョンサポートの種類インスツルメンテーション名 (構成に使用)
Apache HTTP クライアント4.0+完全対応httpclientapache-httpclientapache-http-client
Apache HTTP 非同期クライアント4.0+完全対応httpasyncclientapache-httpasyncclient
AWS Java SDK1.11+、2.2+完全対応aws-sdk
Camel-OpenTelemetry3.12.0+ベータopentelemetry-1
Commons HTTP クライアント2.0+完全対応commons-http-client
Google HTTP クライアント1.19.0+完全対応google-http-client
Google Pub/Sub1.116.0+完全対応google-pubsub
Grizzly HTTP クライアント1.9+ベータ版grizzly-client
gRPC1.5+完全対応grpcgrpc-clientgrpc-server
HttpURLConnectionすべて完全対応httpurlconnectionurlconnection
Kafka-Clients0.11+完全対応kafka
Kafka-Streams0.11+完全対応kafkakafka-streams
Java RMIすべて分散型トレーシング非対応rmirmi-clientrmi-server
Jax RS クライアント2.0+完全対応jax-rsjaxrsjax-rs-client
Jersey クライアント1.9-2.29完全対応jax-rsjaxrsjax-rs-client
JMS / Jakarta JMS1-3.0+完全対応jms, jms-1, jms-2, jakarta-jms
Netty HTTP クライアント4.0+完全対応nettynetty-4.0netty-4.1
Ning HTTP クライアント1.9.0+ベータ版ning
OkHTTP2.2+完全対応okhttpokhttp-2okhttp-3
Play WSClient1.0+完全対応play-ws
Rabbit AMQP2.7+完全対応amqprabbitmq
Spring SessionAwareMessageListener3.1+完全対応spring-jms-3.1
Spring WebClient5.0+完全対応spring-webfluxspring-webflux-client

Kafka に関する注記: Datadog の Kafka インテグレーションは、ヘッダー API をサポートする Kafka のバージョン 0.11+ で機能します。この API はトレースコンテキストの挿入と抽出に使用されます。バージョンが混在する環境でシステムを稼働させている場合は、Kafka ブローカーが Kafka のより新しいバージョンを間違って報告する場合があります。この場合、トレーサーがローカルのプロデューサーでサポートされていないヘッダーを挿入しようとしたときに問題が発生することがあります。また、古いバージョンのコンシューマーはヘッダーが存在するためにメッセージを収集することができません。これらの問題を回避するために、0.11 より前の Kafka のバージョンが混在している環境では、環境変数: DD_KAFKA_CLIENT_PROPAGATION_ENABLED=false を伴うコンテキストの伝搬を無効化するようにしてください。

JMS に関する注記: Datadog の JMS インテグレーションでは、コンシューマーサービスとプロデューサーサービス間のコンテキスト伝播を維持するために、メッセージオブジェクトのプロパティ x__dash__datadog__dash__trace__dash__idx__dash__datadog__dash__parent__dash__id を自動的に追加して読み込みを行うようにします。

Camel に関する注記: Camel のルートを使った分散型トレースの伝播はサポートされていません。

希望するネットワーキングフレームワークが見つかりませんか?Datadog では継続的にサポートを追加しています。サポートが必要な場合は、Datadog サポートにお問い合わせください。

データストアの互換性

dd-java-agent には、次のデータベースフレームワーク/ドライバーの自動トレースのサポートが含まれます。

データストアのトレーシングでは以下の確認が可能です

  • リクエストの応答タイミング
  • クエリ情報 (サニタイジングされたクエリ文字列など)
  • エラーとスタックトレースの取得
データベースバージョンサポートの種類インスツルメンテーション名 (構成に使用)
Aerospike4.0+完全対応aerospike
Couchbase2.0+完全対応couchbase
Cassandra3.0+完全対応cassandra
Elasticsearch Transport2.0+完全対応elasticsearchelasticsearch-transportelasticsearch-transport-{2,5,6,7} (1 つ選択)
Elasticsearch Rest5.0+完全対応elasticsearchelasticsearch-restelasticsearch-rest-{5,6,7} (1 つ選択)
JDBCN/A完全対応jdbcjdbc-datasource
Jedis1.4+完全対応jedisredis
Lettuce4.0+完全対応lettucelettuce-4-asynclettuce-5-rx
MongoDB3.0-4.0+完全対応mongo
OpenSearch Rest1.x-2.x完全対応opensearchopensearch-rest
OpenSearch Transport1.x-2.x完全対応opensearchopensearch-transport
RediScala1.5+完全対応rediscalaredis
Redisson2.x-3.x完全対応redissonredis
SpyMemcached2.12+完全対応spymemcached
Vert.x Cassandra クライアント3.9+完全対応cassandra
Vert.x Redis クライアント3.9完全対応vertx-redis-client
Vert.x MySQL クライアント3.9+完全対応vertx-sql-client

dd-java-agent は、次を含む一般的な JDBC ドライバーとも互換性があります。

  • Apache Derby
  • Firebird SQL
  • H2 データベースエンジン
  • HSQLDB
  • IBM DB2
  • MariaDB
  • MSSQL (Microsoft SQL Server)
  • MySQL
  • Oracle
  • Postgres SQL
  • ScalikeJDBC

データベースインテグレーションがデフォルトで無効

以下のインスツルメンテーションはデフォルトでは無効になっており、以下の設定により有効にすることができます。

インスツルメンテーション有効にするには
JDBC-Datasource- System Property: -Ddd.integration.jdbc-datasource.enabled=true
- Environment Variable: DD_INTEGRATION_JDBC_DATASOURCE_ENABLED=true

希望するデータストアが見つかりませんか?Datadog では継続的にサポートを追加しています。サポートが必要な場合は、Datadog サポートにお問い合わせください。

フレームワーク互換性の追加

dd-java-agent には、次のフレームワークの自動トレースのサポートが含まれます。

フレームワークバージョンサポートの種類インスツルメンテーション名 (構成に使用)
Apache CXF (Jax-WS)3.0+OpenTelemetry Extensioncxf
Datanucleus JDO4.0+完全対応datanucleus
Dropwizard Views0.7+完全対応dropwizarddropwizard-view
GraphQL14.0+完全対応graphql-java
Hazelcast (client)3.6+ベータ版hazelcast, hazelcast_legacy
Hibernate3.5+完全対応hibernatehibernate-core
Hystrix1.4+完全対応hystrix
JSP Rendering2.3+完全対応jspjsp-renderjsp-compile
JUnit4.1+、5.3+完全対応junitjunit-4junit-5
プロジェクトリアクタ3.1+完全対応reactor-core
Quartz2.x完全対応quartz
RxJava2.x完全対応rxjava
Spring Data1.8+完全対応spring-data
Spring Scheduling3.1+完全対応spring-scheduling
TIBCO BusinessWorks5.14.0+ベータ版tibco, tibco_bw
Twilio SDK< 8.0完全対応twilio-sdk

希望するフレームワークが見つかりませんか?Datadog では継続的にサポートを追加しています。フレームワークのリクエストは、サポートチームまでお気軽にお問い合わせください。

サポートされていないフレームワークを使ったアプリケーションの可視性を向上させるには、次のことを検討してください。

インテグレーションの無効化

大半のインテグレーションはデフォルトで有効になっています。次の設定により、デフォルトを無効に変更できます。

  • システムプロパティ: -Ddd.integrations.enabled=false
  • 環境変数: DD_INTEGRATIONS_ENABLED=false

インテグレーション箱別に有効または無効にできます (上記のデフォルトをオーバーライド)。

  • システムプロパティ: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • 環境変数: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

(各インテグレーションの名前については上記を参照してください。)

既知の問題

  • Bitbucket での Java トレーサーの実行はサポートされていません。
  • Loading multiple Java Agents that perform APM/tracing functions is not a recommended or supported configuration.

GraalVM Native Image support

GraalVM Native Image is a technology that allows you to compile Java applications into native executables. The Datadog Java tracer supports GraalVM Native Image. This allows you to compile your applications into native executables while still benefiting from the tracing capabilities offered by the library.

要件

Use the latest versions of:

セットアップ

To set up the Datadog Java tracer with GraalVM Native Image, follow these steps:

  1. Instrument your application, following the steps described on Tracing Java Applications.
  2. When you build a native executable with the native-image command, add the -J-javaagent:/path/to/dd-java-agent.jar argument. For example:
    native-image -J-javaagent:/path/to/dd-java-agent.jar -jar App.jar
    
  3. (Optional) Enable the profiler integration by adding the following argument: -J-Ddd.profiling.enabled=true –enable-monitoring=jfr.

To set up the Datadog Java tracer with Quarkus Native, follow these steps:

  1. Instrument your application, following the steps described in Tracing Java Applications.
  2. When you build a native executable, use the quarkus.native.additional-build-args property. For example:
    ./mvnw package -Dnative -Dquarkus.native.additional-build-args='-J-javaagent:/path/to/dd-java-agent.jar'
    
  3. (Optional) Enable the profiler integration by adding the following argument: -J-Ddd.profiling.enabled=true –enable-monitoring=jfr.

To set up the Datadog Java tracer with Spring Native, follow these steps:

  1. Instrument your application, following the steps described on Tracing Java Applications.
  2. For Spring Native builds based on Buildpacks, enable the Paketo Buildpack for Datadog using BP_DATADOG_ENABLED=true.
    • You can do this at the build tool level, like Maven:
      <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
            <image>
              ...
              <env>
                ...
                <BP_DATADOG_ENABLED>true</BP_DATADOG_ENABLED>
                ...
              </env>
            </image>
          </configuration>
        </plugin>
      </plugins>
      </build>
      
    • Alternatively, you can use the pack build command with --env BP_DATADOG_ENABLED=true option to enable the Datadog buildpack.
  3. (Optional) Enable the profiler integration by setting the environment variable BP_NATIVE_IMAGE_BUILD_ARGUMENTS=’-J-Ddd.profiling.enabled=true –enable-monitoring=jfr’.

使用方法

After completing the setup, the service should send traces to Datadog.

You can view traces using the Trace Explorer.

Native-image buildpack versions older than 5.12.2

Older native-image buildpack versions expose the following option: USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM.

When this option is false, exceptions like the following can occur:

Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError:
com.oracle.graal.pointsto.constraints.UnsupportedFeatureException:
No instances of datadog.trace.bootstrap.DatadogClassLoader are allowed in the image heap
as this class should be initialized at image runtime. To see how this object got
instantiated use --trace-object-instantiation=datadog.trace.bootstrap.DatadogClassLoader.

Solutions to this issue are:

  • Set USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM explicitly to true in the image env configuration,
  • Or upgrade the native-image buildpack to version 5.12.2 or later. The best way to do this is by upgrading the java-native-image buildpack to 8.13.0 or later.
Paketo buildpack for Datadog versions older than 4.6.0

Paketo buildpack for Datadog had a bug in older versions that materialized with the following error message:

disabling Datadog at launch time is unsupported for Node
ERROR: failed to launch: exec.d: failed to execute exec.d file at path '/layers
paketo-buildpacks_datadog/helper/exec.d/toggle': exit status 1

The solution to this issue is to upgrade to version 4.6.0 or later.

その他の参考資料

お役に立つドキュメント、リンクや記事: