diff --git a/dd-java-agent-ittests/src/test/resources/logback.xml b/dd-java-agent-ittests/src/test/resources/logback.xml index 7c338c2170..75a1c06e16 100644 --- a/dd-java-agent-ittests/src/test/resources/logback.xml +++ b/dd-java-agent-ittests/src/test/resources/logback.xml @@ -9,7 +9,7 @@ - + diff --git a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java index be2e726be1..b1219fc2e5 100644 --- a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java +++ b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/TraceAnnotationsManager.java @@ -123,6 +123,8 @@ public class TraceAnnotationsManager { return scripts; } + log.debug("Loading rules with classloader {}", classLoader == null ? "bootstrap" : classLoader); + final List scriptNames = new ArrayList<>(); // Load default and custom rules @@ -140,7 +142,7 @@ public class TraceAnnotationsManager { log.warn("Failed to install scripts", e); } } - log.trace(sw.toString()); + log.debug(sw.toString()); } catch (IOException | URISyntaxException e) { log.warn("Failed to load OpenTracing agent rules", e); } diff --git a/dd-java-agent/src/main/resources/dd-trace-supported-framework.yaml b/dd-java-agent/src/main/resources/dd-trace-supported-framework.yaml index a21b1679fe..3c98c42095 100644 --- a/dd-java-agent/src/main/resources/dd-trace-supported-framework.yaml +++ b/dd-java-agent/src/main/resources/dd-trace-supported-framework.yaml @@ -34,35 +34,14 @@ opentracing-cassandra-driver: - com.datastax.driver.core.RemoteEndpointAwareNettySSLOptions - com.datastax.driver.core.GuavaCompatibility -opentracing-web-servlet-filter: - - artifact: jetty-server - supported_version: (8\.|9\.).* -# identifying_present_classes: - - - artifact: tomcat_catalina - supported_version: (8\.|9\.).* +opentracing-jms-2_producer: + - artifact: javax.jms-api + supported_version: 2\..* identifying_present_classes: - - org.apache.catalina.WebResource - - org.apache.catalina.webresources.TrackedInputStream - - org.apache.catalina.webresources.AbstractArchiveResource + - javax.jms.JMSContext + - javax.jms.CompletionListener - - artifact: tomcat-embed-core - supported_version: (8\.|9\.).* - identifying_present_classes: - - org.apache.catalina.WebResource - - org.apache.catalina.webresources.TrackedInputStream - - org.apache.catalina.webresources.AbstractArchiveResource - -opentracing-okhttp3: - - artifact: okhttp - supported_version: 3\..* - identifying_present_classes: - - okhttp3.Cookie - - okhttp3.ConnectionPool - - okhttp3.Headers - -# For rules opentracing-jms-2_{consumer,producer} -opentracing-jms-2: +opentracing-jms-2_consumer: - artifact: javax.jms-api supported_version: 2\..* identifying_present_classes: @@ -82,3 +61,45 @@ opentracing-mongo-driver: identifying_present_classes: - com.mongodb.operation.AsyncReadOperation - com.mongodb.client.model.MapReduceAction + +opentracing-mongo-driver-helper: + - artifact: mongo-java-driver + supported_version: 3\..* + identifying_present_classes: + - com.mongodb.operation.AsyncReadOperation + - com.mongodb.client.model.MapReduceAction + + - check: + artifact: mongodb-driver-async + supported_version: 3\..* + identifying_present_classes: + - com.mongodb.operation.AsyncReadOperation + - com.mongodb.client.model.MapReduceAction + +opentracing-okhttp3: + - artifact: okhttp + supported_version: 3\..* + identifying_present_classes: + - okhttp3.Cookie + - okhttp3.ConnectionPool + - okhttp3.Headers + +opentracing-web-servlet-filter_jetty: + - artifact: jetty-server + supported_version: (8\.|9\.).* +# identifying_present_classes: + +opentracing-web-servlet-filter_tomcat: + - artifact: opentracing-web-servlet-filter_tomcat + supported_version: (8\.|9\.).* + identifying_present_classes: + - org.apache.catalina.WebResource + - org.apache.catalina.webresources.TrackedInputStream + - org.apache.catalina.webresources.AbstractArchiveResource + + - artifact: opentracing-web-servlet-filter_tomcat + supported_version: (8\.|9\.).* + identifying_present_classes: + - org.apache.catalina.WebResource + - org.apache.catalina.webresources.TrackedInputStream + - org.apache.catalina.webresources.AbstractArchiveResource diff --git a/dd-java-agent/src/main/resources/otarules.btm b/dd-java-agent/src/main/resources/otarules.btm index 40346208ab..1f50d23637 100644 --- a/dd-java-agent/src/main/resources/otarules.btm +++ b/dd-java-agent/src/main/resources/otarules.btm @@ -8,26 +8,16 @@ ### -# Instrument Mongo client -# ======================== -RULE opentracing-mongo-driver -CLASS com.mongodb.MongoClientOptions$Builder -METHOD build -HELPER com.datadoghq.trace.agent.integration.MongoHelper -AT ENTRY -IF getState($0) == 0 -DO - patch($this); -ENDRULE - -RULE mongo-decorator -CLASS io.opentracing.contrib.mongo.TracingCommandListener -METHOD decorate -HELPER com.datadoghq.trace.agent.integration.MongoHelper +# Instrument Apache HTTP Client +# ============================= +RULE opentracing-apache-httpclient +CLASS org.apache.http.impl.client.HttpClientBuilder +METHOD create() +HELPER com.datadoghq.trace.agent.integration.ApacheHTTPClientHelper AT EXIT IF TRUE DO - decorate($1, $2); + $! = patch($!); ENDRULE @@ -45,19 +35,6 @@ DO ENDRULE -# Instrument Apache HTTP Client -# ============================= -RULE opentracing-apache-httpclient -CLASS org.apache.http.impl.client.HttpClientBuilder -METHOD create() -HELPER com.datadoghq.trace.agent.integration.ApacheHTTPClientHelper -AT EXIT -IF TRUE -DO - $! = patch($!); -ENDRULE - - # Instrument Cassandra client # =========================== RULE opentracing-cassandra-driver @@ -71,48 +48,6 @@ DO ENDRULE -# Instrument Jetty -# =========================== -# State 0 - no filter installed -# State 1 - filter installed -RULE opentracing-web-servlet-filter_jetty -CLASS org.eclipse.jetty.servlet.ServletContextHandler -METHOD -HELPER com.datadoghq.trace.agent.integration.JettyServletHelper -AT EXIT -IF getState($0.getServletContext()) == 0 -DO - patch($this) -ENDRULE - - -# Instrument Tomcat -# =========================== -RULE opentracing-web-servlet-filter_tomcat -CLASS org.apache.catalina.core.ApplicationContext -METHOD -IMPORT javax.servlet.Filter -HELPER com.datadoghq.trace.agent.integration.TomcatServletHelper -AT EXIT -IF TRUE -DO - patch($this) -ENDRULE - - -# Instrument OkHttp -# =========================== -RULE opentracing-okhttp3 -CLASS okhttp3.OkHttpClient$Builder -METHOD build() -HELPER com.datadoghq.trace.agent.integration.OkHttpHelper -AT ENTRY -IF TRUE -DO - patch($this) -ENDRULE - - # Instrument JMS # =========================== RULE opentracing-jms-2_producer @@ -136,3 +71,67 @@ DO $! = patch($!); ENDRULE + +# Instrument Mongo client +# ======================== +RULE opentracing-mongo-driver +CLASS com.mongodb.MongoClientOptions$Builder +METHOD build +HELPER com.datadoghq.trace.agent.integration.MongoHelper +AT ENTRY +IF getState($0) == 0 +DO + patch($this); +ENDRULE + +RULE opentracing-mongo-driver-helper +CLASS io.opentracing.contrib.mongo.TracingCommandListener +METHOD decorate +HELPER com.datadoghq.trace.agent.integration.MongoHelper +AT EXIT +IF TRUE +DO + decorate($1, $2); +ENDRULE + + +# Instrument OkHttp +# =========================== +RULE opentracing-okhttp3 +CLASS okhttp3.OkHttpClient$Builder +METHOD build() +HELPER com.datadoghq.trace.agent.integration.OkHttpHelper +AT ENTRY +IF TRUE +DO + patch($this) +ENDRULE + + +# Instrument Servlet - Jetty +# =========================== +# State 0 - no filter installed +# State 1 - filter installed +RULE opentracing-web-servlet-filter_jetty +CLASS org.eclipse.jetty.servlet.ServletContextHandler +METHOD +HELPER com.datadoghq.trace.agent.integration.JettyServletHelper +AT EXIT +IF getState($0.getServletContext()) == 0 +DO + patch($this) +ENDRULE + + +# Instrument Servlet - Tomcat +# =========================== +RULE opentracing-web-servlet-filter_tomcat +CLASS org.apache.catalina.core.ApplicationContext +METHOD +HELPER com.datadoghq.trace.agent.integration.TomcatServletHelper +AT EXIT +IF TRUE +DO + patch($this) +ENDRULE +