Compatibilidad

La biblioteca de rastreo Datadog Java es de código abierto. Para obtener más información, consulta el repositorio GitHub.

Tiempos de ejecución compatibles Java

El rastreador Java es compatible con la instrumentación automática para los siguientes tiempos de ejecución Oracle JDK, OpenJDK JVM, y GraalVM.

Rastreador Java v1 (última versión)

Versiones de JavaSistemas operativosNivel de soporte
desde 22 en adelanteWindows (x86, x86-64)
Linux (x86, x86-64, arm64)
Mac (x86, x86-64, arm64)
Beta
desde 18 a 21Windows (x86, x86-64)
Linux (x86, x86-64, arm64)
Mac (x86, x86-64, arm64)
GA
desde 8 a 17Windows (x86, x86-64)
Linux (x86, x86-64)
Mac (x86, x86-64)
GA
Linux (arm64)
Mac (arm64)
Beta

Datadog no ofrece soporte oficial para ninguna versión de acceso anticipado de Java.

Rastreador Java v0 (mantenimiento)

Versiones de JavaSistemas operativosNivel de soporte
Sólo 7Windows (x86, x86-64)
Linux (x86, x86-64)
Mac (x86, x86-64)
Mantenimiento
Sólo 7Linux (arm64)
Mac (arm64)
Fin de vida útil

Niveles de soporte

NivelSoporte proporcionado
Sin soporteSin implementación. Por solicitudes especiales, ponte en contacto con el servicio de asistencia de Datadog.
BetaImplementación inicial. Puede que aún no contenga todas las funciones. La compatibilidad con las nuevas funciones y la corrección de errores y problemas de seguridad se realiza en la medida de lo posible.
Disponibilidad general (GA)Implementación completa de todas las funciones. Soporte completo para nuevas funciones y correcciones de errores y problemas de seguridad.
MantenimientoImplementación completa de las funciones existentes. No recibe nuevas funciones. Soporte sólo para correcciones de errores y problemas de seguridad.
Fin de vida útil (EOL)Sin soporte.

Integraciones

Las integraciones Beta están deshabilitadas por defecto, pero pueden habilitarse individualmente:

  • System Property: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • Variable de entorno: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

Compatibilidad con marcos web

dd-java-agent incluye soporte para rastrear automáticamente los siguientes marcos web.

El rastreo de marcos web proporciona:

  • temporización de solicitud a respuesta HTTP
  • etiquetas (tags) para la solicitud HTTP (código de estado, método, etc.)
  • captura de errores y trazas de stacks tecnológicos
  • vinculación del trabajo creado dentro de una solicitud web y rastreo distribuido
ServidorVersionesTipo de soporteNombres de instrumentaciones (utilizados para la configuración)
Servidor Akka-Http10.0 o posteriorTotalmente compatibleakka-http, akka-http-server
Finatra Web2.9 o posteriorTotalmente compatiblefinatra
Grizzly2.0 o posteriorTotalmente compatiblegrizzly
Grizzly-HTTP2.3.20 o posteriorTotalmente compatiblegrizzly-filterchain
Java Servlet compatible2.3, 3.0 o posteriorTotalmente compatibleservlet, servlet-2, servlet-3
Anotaciones Jax-RSJSR311-APITotalmente compatiblejax-rs, jaxrs, jax-rs-annotations, jax-rs-filter
Jetty7.0-12.xTotalmente compatiblejetty
Servidor HTTP Micronaut2.xTotalmente compatiblemicronaut
Mulesoft4Totalmente compatiblemule
Servidor HTTP Netty3.8 o posteriorTotalmente compatiblenetty, netty-3.8, netty-4.0, netty-4.1
Play2.3-2.8Totalmente compatibleplay, play-action
Ratpack1.5 o posteriorTotalmente compatibleratpack
Servidor HTTP Restlet2.2-2.4Totalmente compatiblerestlet-http.
Spark Java2.3 o posteriorBetasparkjava (requiere jetty)
Spring Boot1.5 o posteriorTotalmente compatiblespring-web o spring-webflux
Spring Web (MVC)4.0 o posteriorTotalmente compatiblespring-web
Spring WebFlux5.0 o posteriorTotalmente compatiblespring-webflux
Tomcat5.5 o posteriorTotalmente compatibletomcat
Vert.x3.4 o posteriorTotalmente compatiblevertx, vertx-3.4, vertx-3.9, vertx-4.0

Nota: Muchos servidores de aplicaciones son compatibles con Servlet y están cubiertos automáticamente por esa instrumentación, como Websphere, Weblogic y JBoss. Además, los marcos como Spring Boot (versión 3) funcionan de forma inherente porque suelen utilizar un servidor de aplicaciones integrado compatible, como Tomcat, Jetty o Netty.

Integraciones de marcos deshabilitadas por defecto

Las siguientes instrumentaciones están deshabilitadas por defecto y pueden habilitarse con los siguientes parámetros:

InstrumentaciónPara habilitar
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-Ddd.integration.hazelcast.enabled=true
-Ddd.integration.hazelcast_legacy.enabled=true
TIBCO BusinessWorks-Ddd.integration.tibco.enabled=true

Nota: La integración JAX-WS instrumenta endpoints anotados con @WebService (JAX-WS 1.x) y @WebServiceProvider (JAX-WS 2.x).

¿No encuentras el marco web que buscas? Datadog añade continuamente soporte adicional. Si necesitas ayuda, ponte en contacto con el servicio de asistencia de Datadog.

Compatibilidad con marcos de red

dd-java-agent incluye soporte para rastrear automáticamente las siguientes estructuras de red.

El rastreo de redes proporciona:

  • temporización de solicitud a respuesta
  • etiquetas para la solicitud (por ejemplo, código de respuesta)
  • captura de errores y trazas de stacks tecnológicos
  • rastreo distribuido
MarcoVersionesTipo de soporteNombres de instrumentaciones (utilizados para la configuración)
Cliente HTTP Apache4.0 o posteriorTotalmente compatiblehttpclient, apache-httpclient, apache-http-client
Cliente HTTP Async Apache4.0 o posteriorTotalmente compatiblehttpasyncclient, apache-httpasyncclient
SDK Java AWS1.11, 2.2 o posteriorTotalmente compatibleaws-sdk
Camel-OpenTelemetry3.12.0 o posteriorBetaopentelemetry-1
Cliente HTTP Commons2.0 o posteriorTotalmente compatiblecommons-http-client
Cliente HTTP Google1.19.0 o posteriorTotalmente compatiblegoogle-http-client
Google Pub/Sub1.116.0 o posteriorTotalmente compatiblegoogle-pubsub
Cliente HTTP Grizzly1.9 o posteriorBetagrizzly-client
gRPC1.5 o posteriorTotalmente compatiblegrpc, grpc-client, grpc-server
HttpURLConnectiontodosTotalmente compatiblehttpurlconnection, urlconnection
Clientes Kafka0.11 o posteriorTotalmente compatiblekafka
Flujos Kafka0.11 o posteriorTotalmente compatiblekafka, kafka-streams
RMI JavatodosRastreo distribuido no soportadormi, rmi-client, rmi-server
Clientes Jax RS2.0 o posteriorTotalmente compatiblejax-rs, jaxrs, jax-rs-client
Cliente Jersey1.9-2.29Totalmente compatiblejax-rs, jaxrs, jax-rs-client
JMS / Jakarta JMS1-3.0 o posteriorTotalmente compatiblejms, jms-1, jms-2, jakarta-jms
Cliente HTTP Netty4.0 o posteriorTotalmente compatiblenetty, netty-4.0, netty-4.1
Cliente HTTP Ning1.9.0 o posteriorBetaning
OkHTTP2.2 o posteriorTotalmente compatibleokhttp, okhttp-2,okhttp-3
Cliente Play WS1.0 o posteriorTotalmente compatibleplay-ws
Rabbit AMQP2.7 o posteriorTotalmente compatibleamqp, rabbitmq
Spring SessionAwareMessageListener3.1 o posteriorTotalmente compatiblespring-jms-3.1
Cliente Spring Web5.0 o posteriorTotalmente compatiblespring-webflux, spring-webflux-client

Nota de Kafka: La integración Kafka de Datadog funciona con la versión de Kafka 0.11+, que soporta la API de cabecera. Esta API se utiliza para inyectar y extraer contextos de rastreo. Si estás ejecutando un entorno de versión mixta, el broker de Kafka podría informar incorrectamente de la versión más reciente de Kafka. Esto causa un problema cuando el rastreador intenta inyectar cabeceras que no son soportadas por el productor local. Además, los consumidores más antiguos no pueden consumir el mensaje debido a la presencia de cabeceras. Para evitar estos problemas, si estás ejecutando un entorno de versión mixta de Kafka con versiones anteriores a la v0.11, deshabilita la propagación de contexto con la variable de entorno: DD_KAFKA_CLIENT_PROPAGATION_ENABLED=false.

Nota de JMS: La integración JMS de Datadog añade y lee automáticamente propiedades de los objetos de mensajes x__dash__datadog__dash__trace__dash__id y x__dash__datadog__dash__parent__dash__id para mantener la propagación del contexto entre los servicios del consumidor y el productor.

Nota de Camel: No se admite la propagación de rastreo distribuido a través de rutas Camel.

¿No encuentras el marco de red que buscas? Datadog añade continuamente soporte adicional. Si necesitas ayuda, ponte en contacto con el servicio de asistencia de Datadog.

Compatibilidad con almacenes de datos

dd-java-agent incluye soporte para rastrear automáticamente los siguientes marcos/controladores de bases de datos.

El rastreo del almacén de datos proporciona:

  • temporización de solicitud a respuesta
  • información de la consulta (por ejemplo, una cadena de consulta desinfectada)
  • captura de errores y trazas de stacks tecnológicos
Base de datosVersionesTipo de soporteNombres de instrumentaciones (utilizados para la configuración)
Aerospike4.0 o posteriorTotalmente compatibleaerospike
Couchbase2.0 o posteriorTotalmente compatiblecouchbase
Cassandra3.0 o posteriorTotalmente compatiblecassandra
Elasticsearch Transport2.0 o posteriorTotalmente compatibleelasticsearch, elasticsearch-transport, elasticsearch-transport-{2,5,6,7} (elige uno)
Elasticsearch Rest5.0 o posteriorTotalmente compatibleelasticsearch, elasticsearch-rest, elasticsearch-rest-{5,6,7} (elige uno)
JDBCN/ATotalmente compatiblejdbc, jdbc-datasource
Jedis1.4 o posteriorTotalmente compatiblejedis, redis
Lettuce4.0 o posteriorTotalmente compatiblelettuce, lettuce-4-async, lettuce-5-rx
MongoDB3.0-4.0 o posteriorTotalmente compatiblemongo
OpenSearch Rest1.x-2.xTotalmente compatibleopensearch, opensearch-rest
OpenSearch Transport1.x-2.xTotalmente compatibleopensearch, opensearch-transport
RediScala1.5 o posteriorTotalmente compatiblerediscala, redis
Redisson2.x-3.xTotalmente compatibleredisson, redis
SpyMemcached2.12 o posteriorTotalmente compatiblespymemcached
Cliente Vert.x Cassandra3.9 o posteriorTotalmente compatiblecassandra
Cliente Vert.x Redis3.9Totalmente compatiblevertx-redis-client
Cliente MySQL Vert.x3.9 o posteriorTotalmente compatiblevertx-sql-client

dd-java-agent también es compatible con los controladores JDBC más comunes, incluidos:

  • Apache Derby
  • Firebird SQL
  • Motor de base de datos H2
  • HSQLDB
  • IBM DB2
  • MariaDB
  • MSSQL (Microsoft SQL Server)
  • MySQL
  • Oracle
  • Postgres SQL
  • ScalikeJDBC

Integraciones de bases de datos deshabilitadas por defecto

Las siguientes instrumentaciones están deshabilitadas por defecto y pueden habilitarse con los siguientes parámetros:

InstrumentaciónPara habilitar
Fuente de datos JDBC- System Property: -Ddd.integration.jdbc-datasource.enabled=true
- Environment Variable: DD_INTEGRATION_JDBC_DATASOURCE_ENABLED=true

¿No encuentras los almacenes de datos que buscas? Datadog añade continuamente soporte adicional. Si necesitas ayuda, ponte en contacto con el servicio de asistencia de Datadog.

Compatibilidad con marcos adicionales

dd-java-agent incluye soporte para rastrear automáticamente los siguientes marcos.

MarcoVersionesTipo de soporteNombres de instrumentaciones (utilizados para la configuración)
Datanucleus JDO4.0 o posteriorTotalmente compatibledatanucleus
Vistas de Dropwizard0.7 o posteriorTotalmente compatibledropwizard, dropwizard-view
GraphQL14.0 o posteriorTotalmente compatiblegraphql-java
Hazelcast3.6 o posteriorBetahazelcast, hazelcast_legacy
Hibernate3.5 o posteriorTotalmente compatiblehibernate, hibernate-core
Hystrix1.4 o posteriorTotalmente compatiblehystrix
Renderizado JSP2.3 o posteriorTotalmente compatiblejsp, jsp-render, jsp-compile
JUnit4.1, 5.3 o posteriorTotalmente compatiblejunit, junit-4, junit-5
Project Reactor3.1 o posteriorTotalmente compatiblereactor-core
Quartz2.xTotalmente compatiblequartz
RxJava2.xTotalmente compatiblerxjava
Datos de Spring1.8 o posteriorTotalmente compatiblespring-data
Programación de Spring3.1 o posteriorTotalmente compatiblespring-scheduling
TIBCO BusinessWorks5.14.0 o posteriorBetatibco, tibco_bw
SDK de TwilioAnterior a 8.0Totalmente compatibletwilio-sdk

¿No encuentras el marco que buscas? Datadog está añadiendo soporte continuamente. Para solicitar un marco, ponte en contacto con nuestro magnífico equipo de asistencia.

Para mejorar la visibilidad de las aplicaciones que utilizan marcos no soportados, considera:

Deshabilitación de integraciones

La mayoría de las integraciones están habilitadas por defecto. La siguiente configuración puede cambiar el valor predeterminado a deshabilitado.

  • System Property: -Ddd.integrations.enabled=false
  • Variable de entorno: DD_INTEGRATIONS_ENABLED=false

Las integraciones pueden habilitarse o deshabilitarse individualmente (anulando el valor predeterminado anterior).

  • System Property: -Ddd.integration.<INTEGRATION_NAME>.enabled=true
  • Variable de entorno: DD_INTEGRATION_<INTEGRATION_NAME>_ENABLED=true

(Consulta más arriba el nombre de cada integración.)

Problemas conocidos

  • La ejecución del rastreador Java en Bitbucket no es compatible.
  • La carga de varios Agents Java que realizan funciones de APM/rastreo no es una configuración recomendada o compatible.

Soporte de GraalVM Native Image

GraalVM Native Image es una tecnología que permite compilar aplicaciones Java en ejecutables nativos. El rastreador Java de Datadog es compatible con GraalVM Native Image. Esto te permite compilar tus aplicaciones en ejecutables nativos y seguir disfrutando de las capacidades de rastreo que ofrece la biblioteca.

Requisitos

Utiliza las últimas versiones de:

Configuración

Para configurar el rastreador Java de Datadog con GraalVM Native Image, sigue los pasos a continuación:

  1. Instrumenta tu aplicación, siguiendo los pasos descritos en Rastreo de aplicaciones Java.
  2. Cuando crees un ejecutable nativo con el comando native-image, añade el argumento -J-javaagent:/path/to/dd-java-agent.jar. Por ejemplo:
    native-image -J-javaagent:/path/to/dd-java-agent.jar -jar App.jar
    
  3. (Opcional) Habilita la integración del generador de perfiles añadiendo el siguiente argumento: -J-Ddd.profiling.enabled=true –enable-monitoring=jfr.

Para configurar el rastreador Java de Datadog con Quarkus Native, sigue los pasos a continuación:

  1. Instrumenta tu aplicación, siguiendo los pasos descritos en Rastreo de aplicaciones Java.
  2. Cuando crees un ejecutable nativo, utiliza la propiedad quarkus.native.additional-build-args. Por ejemplo:
    ./mvnw package -Dnative -Dquarkus.native.additional-build-args='-J-javaagent:/path/to/dd-java-agent.jar'
    
  3. (Opcional) Habilita la integración del generador de perfiles añadiendo el siguiente argumento: -J-Ddd.profiling.enabled=true –enable-monitoring=jfr.

Para configurar el rastreador Java de Datadog con Spring Native, sigue los pasos a continuación:

  1. Instrumenta tu aplicación, siguiendo los pasos descritos en Rastreo de aplicaciones Java.
  2. Para compilaciones de Spring Native basadas en paquetes de compilación, activa el paquete de compilación Paketo para Datadog utilizando BP_DATADOG_ENABLED=true.
    • Puedes hacerlo a nivel de la herramienta de compilación, como 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>
      
    • También puedes utilizar el comando pack build con la opción --env BP_DATADOG_ENABLED=true para habilitar el paquete de compilación Datadog.
  3. (Opcional) Habilita la integración del generador de perfiles configurando la siguiente variable de entorno:BP_NATIVE_IMAGE_BUILD_ARGUMENTS=’-J-Ddd.profiling.enabled=true –enable-monitoring=jfr’ .

Uso

Una vez completada la configuración, el servicio debería enviar trazas (traces) a Datadog.

Puedes visualizar las trazas (traces) a través del Explorador de trazas.

Versiones del paquete de compilación Native-Image anteriores a la v5.12.2

Las versiones más antiguas del paquete de compilación Native-Image muestran la siguiente opción: USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM.

Cuando esta opción es false, pueden ocurrir excepciones como las siguientes:

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.

Las soluciones a este problema son:

  • Configurar USE_NATIVE_IMAGE_JAVA_PLATFORM_MODULE_SYSTEM explícitamente como true (verdadero) en la configuración del entorno de la imagen.
  • O actualizar el paquete de compilación native-image a la versión 5.12.2 o superior. La mejor opción es actualizar el paquete de compilación java-native-image a la versión 8.13.0 o superior.
Paquete de compilación Paketo para versiones de Datadog anteriores a la v4.6.0

El paquete de compilación Paketo para Datadog tenía un error en versiones anteriores que se ponía en evidencia a través del siguiente mensaje de error:

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

La solución a este problema es actualizar a la versión 4.6.0 o superior.

Leer más

Más enlaces, artículos y documentación útiles: