Skip to content

Instantly share code, notes, and snippets.

@burnsie7
Last active February 7, 2018 17:45
Show Gist options
  • Save burnsie7/7681c44a3b6245e6489fbd6a3748a76a to your computer and use it in GitHub Desktop.
Save burnsie7/7681c44a3b6245e6489fbd6a3748a76a to your computer and use it in GitHub Desktop.
java apm setup

install agent v6

sudo DD_API_KEY=REDACTED bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

copy and edit trace-agent.conf

sudo cp /etc/datadog-agent/trace-agent.conf.example /etc/datadog-agent/trace-agent.conf

Add to config:

[trace.config]
env = test

/etc/datadog-agent/datadog.yaml

apm_enabled: true

/etc/datadog-agent/trace-agent.yaml

[trace.config]
env = test

download dd-java-agent

wget -O dd-java-agent.jar 'https://search.maven.org/remote_content?g=com.datadoghq&a=dd-java-agent&v=LATEST'

install java

sudo apt-get update
sudo apt-get install openjdk-8-jdk
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

install Maven

sudo apt-get install maven

create maven project

mkdir maven-projects
cd maven-projects
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

add trace dependencies and build info to pom file

  <dependencies>
    <dependency>
        <groupId>com.datadoghq</groupId>
        <artifactId>dd-trace-api</artifactId>
        <version>0.3.0</version>
    </dependency>
    <!-- OpenTracing API -->
    <dependency>
        <groupId>io.opentracing</groupId>
        <artifactId>opentracing-api</artifactId>
        <version>0.31.0</version>
    </dependency>

    <!-- OpenTracing Util -->
    <dependency>
        <groupId>io.opentracing</groupId>
        <artifactId>opentracing-util</artifactId>
        <version>0.31.0</version>
    </dependency>

    <!-- Datadog Tracer (only needed if you do not use dd-java-agent) -->
    <dependency>
        <groupId>com.datadoghq</groupId>
        <artifactId>dd-trace-ot</artifactId>
        <version>0.3.0</version>
    </dependency>
  </dependencies>
  <build>
      <plugins>
          <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
              <source>1.8</source>
              <target>1.8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>

src/main/java/com/mycompany/app/App.java

package com.mycompany.app;
import datadog.trace.api.Trace;

public class App
{
    public static void main(String[] args) throws InterruptedException {
        printAll();
        Thread.sleep(2000);
    }

    @Trace
    public static void printAll() throws InterruptedException {
        printOne();
        printOne();
        printTwo();
        Thread.sleep(1000);
    }

    @Trace
    public static void printOne() throws InterruptedException {
        System.out.println("Hello World");
        Thread.sleep(100);
    }

    @Trace
    public static void printTwo() throws InterruptedException {
        printOne();
        printOne();
        Thread.sleep(500);
    }
}

add the trace library and trace annotations to the code

mvn package

execute using javaagent

java -javaagent:/home/ubuntu/dd-java-agent.jar -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment