Enable Symbol Database for Java

Join the Private Beta

Interested in an improved user experience when creating Dynamic Instrumentation probes? Join the Symbol Database private beta here.

Request Access

Symbol Database is a feature of Dynamic Instrumentation in private beta.

Requirements

Installation

To run your service with Dynamic Instrumentation enabled, and additionally enable Symbol Database uploads:

  1. Set the -Ddd.symbol.database.upload.enabled flag or the DD_SYMBOL_DATABASE_UPLOAD_ENABLED environment variable to true.
  2. Set the -Ddd.symbol.database.includes flag or the DD_SYMBOL_DATABASE_INCLUDES environment variable to your package prefix (for example, com.datadoghq). The setting expects a comma-separated list, so you can add multiple prefixes.
  3. Specify the dd.service and dd.version Unified Service Tags.

Example service startup command:

java \
    -javaagent:dd-java-agent.jar \
    -Ddd.service=<YOUR_SERVICE> \
    -Ddd.env=<YOUR_ENVIRONMENT> \
    -Ddd.version=<YOUR_VERSION> \
    -Ddd.dynamic.instrumentation.enabled=true \
    -Ddd.symbol.database.upload.enabled=true \
    -Ddd.symbol.database.includes=<YOUR_PACKAGE_PREFIX> \
    -jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
export DD_SYMBOL_DATABASE_UPLOAD_ENABLED=true
export DD_SYMBOL_DATABASE_INCLUDES=<YOUR_PACKAGE_PREFIX>
java \
    -javaagent:dd-java-agent.jar \
    -jar <YOUR_SERVICE>.jar <YOUR_SERVICE_FLAGS>

Note: The -javaagent argument needs to be before -jar, adding it as a JVM option rather than an application argument. For more information, see the Oracle documentation:

# Correct:
$ java -javaagent:dd-java-agent.jar ... -jar my-service.jar -more-flags

# Incorrect:
$ java -jar my-service.jar -javaagent:dd-java-agent.jar ...
  1. After starting your service with Symbol Database enabled, you can use Symbol Database’s IDE-like features on the APM > Dynamic Instrumentation page.