Java Agent
The Levo Java Agent captures TLS-encrypted traffic directly from the JVM by instrumenting the SSL/TLS layer at the bytecode level. It works alongside the Levo eBPF Sensor, which reconstructs HTTP requests and responses from the captured bytes.
Prerequisites
- Java 8 or later
- Levo eBPF Sensor installed and running — see Install eBPF Sensor
libnative_ioctl.soaccessible on the host (included in the agent download)
Installation
1. Download and extract
Download the agent package from the Downloads repo and extract it on the application server:
levo-agent-0.9.0-all.jar # main agent JAR
levo-agent-bootstrap-0.9.0.jar # bootstrap JAR
libnative_ioctl.so # native JNI library (amd64)
2. Set the native library path
export LIB_NATIVE_IOCTL_FILE_PATH=/path/to/libnative_ioctl.so
3. Start the application with the agent
java -javaagent:/path/to/levo-agent-0.9.0-all.jar \
-Dbootstrap.jar=/path/to/levo-agent-bootstrap-0.9.0.jar \
-jar your-application.jar
For JRuby applications:
JRUBY_OPTS="-J-javaagent:/path/to/levo-agent-0.9.0-all.jar -J-Dbootstrap.jar=/path/to/levo-agent-bootstrap-0.9.0.jar" ruby app.rb
Quick Start Examples
Standard server-side capture (most applications):
java -javaagent:/path/to/levo-agent-0.9.0-all.jar=LevoSatelliteUrl=localhost:4317,LevoSamplingPercent=100 \
-Dbootstrap.jar=/path/to/levo-agent-bootstrap-0.9.0.jar \
-jar your-application.jar
Full capture with debug logging:
java -javaagent:/path/to/levo-agent-0.9.0-all.jar=LevoSatelliteUrl=localhost:4317,LevoSamplingPercent=100,LevoDebug=true,LevoLogFile=/tmp/levo-agent.log \
-Dbootstrap.jar=/path/to/levo-agent-bootstrap-0.9.0.jar \
-jar your-application.jar
Client-side only (outbound third-party API discovery):
java -javaagent:/path/to/levo-agent-0.9.0-all.jar=TraceClientTrafficOnly=true \
-Dbootstrap.jar=/path/to/levo-agent-bootstrap-0.9.0.jar \
-jar your-application.jar
Configuration Reference
Agent arguments are passed as key=value pairs on the -javaagent: flag, separated by commas. Most settings also accept a JVM system property (-Dlevo.xxx=value) as an alternative.
Precedence order (highest to lowest):
- Agent argument on
-javaagent:flag - JVM system property (
-D...) - Environment variable (logging settings only)
- Built-in default