Order rules alphabetically and ensure matches.

This commit is contained in:
Tyler Benson 2017-08-22 16:39:08 -07:00
parent 60cfb392c4
commit 55edba486a
4 changed files with 123 additions and 101 deletions

View File

@ -9,7 +9,7 @@
</layout> </layout>
</appender> </appender>
<root level="INFO"> <root level="DEBUG">
<appender-ref ref="console"/> <appender-ref ref="console"/>
</root> </root>

View File

@ -123,6 +123,8 @@ public class TraceAnnotationsManager {
return scripts; return scripts;
} }
log.debug("Loading rules with classloader {}", classLoader == null ? "bootstrap" : classLoader);
final List<String> scriptNames = new ArrayList<>(); final List<String> scriptNames = new ArrayList<>();
// Load default and custom rules // Load default and custom rules
@ -140,7 +142,7 @@ public class TraceAnnotationsManager {
log.warn("Failed to install scripts", e); log.warn("Failed to install scripts", e);
} }
} }
log.trace(sw.toString()); log.debug(sw.toString());
} catch (IOException | URISyntaxException e) { } catch (IOException | URISyntaxException e) {
log.warn("Failed to load OpenTracing agent rules", e); log.warn("Failed to load OpenTracing agent rules", e);
} }

View File

@ -34,35 +34,14 @@ opentracing-cassandra-driver:
- com.datastax.driver.core.RemoteEndpointAwareNettySSLOptions - com.datastax.driver.core.RemoteEndpointAwareNettySSLOptions
- com.datastax.driver.core.GuavaCompatibility - com.datastax.driver.core.GuavaCompatibility
opentracing-web-servlet-filter: opentracing-jms-2_producer:
- artifact: jetty-server - artifact: javax.jms-api
supported_version: (8\.|9\.).* supported_version: 2\..*
# identifying_present_classes:
- artifact: tomcat_catalina
supported_version: (8\.|9\.).*
identifying_present_classes: identifying_present_classes:
- org.apache.catalina.WebResource - javax.jms.JMSContext
- org.apache.catalina.webresources.TrackedInputStream - javax.jms.CompletionListener
- org.apache.catalina.webresources.AbstractArchiveResource
- artifact: tomcat-embed-core opentracing-jms-2_consumer:
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:
- artifact: javax.jms-api - artifact: javax.jms-api
supported_version: 2\..* supported_version: 2\..*
identifying_present_classes: identifying_present_classes:
@ -82,3 +61,45 @@ opentracing-mongo-driver:
identifying_present_classes: identifying_present_classes:
- com.mongodb.operation.AsyncReadOperation - com.mongodb.operation.AsyncReadOperation
- com.mongodb.client.model.MapReduceAction - 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

View File

@ -8,26 +8,16 @@
### ###
# Instrument Mongo client # Instrument Apache HTTP Client
# ======================== # =============================
RULE opentracing-mongo-driver RULE opentracing-apache-httpclient
CLASS com.mongodb.MongoClientOptions$Builder CLASS org.apache.http.impl.client.HttpClientBuilder
METHOD build METHOD create()
HELPER com.datadoghq.trace.agent.integration.MongoHelper HELPER com.datadoghq.trace.agent.integration.ApacheHTTPClientHelper
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
AT EXIT AT EXIT
IF TRUE IF TRUE
DO DO
decorate($1, $2); $! = patch($!);
ENDRULE ENDRULE
@ -45,19 +35,6 @@ DO
ENDRULE 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 # Instrument Cassandra client
# =========================== # ===========================
RULE opentracing-cassandra-driver RULE opentracing-cassandra-driver
@ -71,48 +48,6 @@ DO
ENDRULE 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 <init>
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 <init>
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 # Instrument JMS
# =========================== # ===========================
RULE opentracing-jms-2_producer RULE opentracing-jms-2_producer
@ -136,3 +71,67 @@ DO
$! = patch($!); $! = patch($!);
ENDRULE 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 <init>
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 <init>
HELPER com.datadoghq.trace.agent.integration.TomcatServletHelper
AT EXIT
IF TRUE
DO
patch($this)
ENDRULE