4.1 KiB
		
	
	
	
	
	
			
		
		
	
	Datadog Java Tracer
Motivations
The Datadog Java Tracer is an OpenTracing-compatible tracer. It provides all resources needed to instrument your code. Opentracing introduces the concept of the span. A span is timed operation representing an action in the code. The span can be linked together. And a trace is a list of spans, each related to the same top action/operation.
Let's see an example. When a client does a request on a Http Endpoint, asking for some BD resources, Opentracing provides a way for measuring the time consumed for each operation:
TRACE:
   client ---> HTTP Endpoint ---> DB Query/Result ---> Custom processing ---> client
  
   SPAN 1 (Root Span) ................................................... (end)   - 200ms
   |--------SPAN 2 (Child of 1).................................(end)             - 100ms
            |-----------SPAN 3 (Child of 2).(end)                                 - 50 ms
            |----------------------------------------SPAN 4 (Child of 2)..(end)   - 50 ms
This shows a very simple example of how works Opentracing. Here, the tracer produces a trace composed of 4 spans, each representing a specific action.
How to load the Datadog Tracer (DDTrace) in the project?
The current implementation uses the trace-resolver feature provides by Opentracing. That means you can add and load the tracer using a Java Agent directly with the JVM.
And then, the DDTrace can be configured using a YAML file: dd-trace.yaml.
By default, the DDTrace tries to reach a local Datadog Agent, but it can change by settings a different
location in the config file. Please, refer to the latest configuration template: dd-trace.yaml
How to use the Datadog Tracer (DDTrace) to instrument the code?
Once, the DDTrace is loaded, you can start to instrument your code using:
- The 
@Traceannotation, - Or the Opentracing SDK.
 
This agent is build on the top of the Open-Tracing contributions and the Datadog tracer.
At the moment, the Datadog Java Agent supports the following framework and librairies:
- Databases
- JDBC connections
 - Mongo
 - Elasticsearch
 
 - Web servers and clients
- Spring Boot
 - Jetty Server
 - Tomcat Servlet
 - Apache HTTP Client
 - OkHttp
 
 - Queueing
- JMS
 
 - Third-party
- AMS SDK Client
 
 
Instrument your code
Here are the instructions. Before start, make sure you have a running Datadog Agent with the APM feature enabled.
- Download the latest Datadog Java Agent version: https://mvnrepository.com/artifact/com.datadoghq/dd-java-agent.
 
<dependency>
    <groupId>com.datadoghq</groupId>
    <artifactId>dd-java-agent</artifactId>
    <version>${dd-trace.version}</version>
</dependency>
- Add to the JVM the agent. This can be done by editing the command line or via the pom file.
 
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20</version>
    <configuration>
        <includes>
            <include>*Test.java</include>
        </includes>
        <excludes>
            <exclude>ElasticSearchInstrumentationTest.java</exclude>
        </excludes>
        <forkCount>3</forkCount>
        <reuseForks>false</reuseForks>
        <argLine>-javaagent:${M2_REPO}/com/datadoghq/dd-java-agent/${dd-trace.version}/dd-java-agent-${dd-trace.version}.jar</argLine>
        <workingDirectory>target/FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
    </configuration>
</plugin>
How it's work
Dig deeper
Du coup le Readme.md de java-trace il faut un truc plutot simple qui expliqe que c la
librarie opentracing compliant de Datadog. Il faut expliquer aussi le resolver et son fichier .yaml
[10:41] Prend peut etre exemple aussi sur une autre lib opentracing compliant
[10:41] Peut etre expliquer ce que c’est un tracer, un span et un ou deux exemple d’instrumentation a la mano¡¡