Pyroscope Java agent
The Java profiling agent for Pyroscope.io. Based on async-profiler.
Distribution
The agent is distributed as a single JAR file pyroscope.jar
. It contains native async-profiler libraries for:
- Linux on x64;
- Linux on x86;
- Linux on AArch64;
- Linux on ARM;
- MacOS on x64.
Downloads
Visit releases page to download the latest version of pyroscope.jar
Usage
To run a Java application with the agent:
java -javaagent:pyroscope.jar -jar app.jar
On the startup, the agent deploys the native corresponding library into /tmp/${username}-pyroscope/
.
Configuration
The agent is configured using environment variables.
PYROSCOPE_APPLICATION_NAME
The application name used when uploading profiling data. Generated if not provided.
PYROSCOPE_PROFILING_INTERVAL
Sets the profiling interval in nanoseconds or in other units, if N is followed by ms
(for milliseconds), us
(for microseconds), or s
(for seconds). See async-profiler documentation for details. The default is 10ms
.
PYROSCOPE_UPLOAD_INTERVAL
Sets the profiling interval for uploading snapshots. The default is 10s
.
PYROSCOPE_PROFILER_EVENT
Sets the profiling event. See async-profiler documentation for details. The supported values are cpu
, alloc
, lock
, wall
, and itimer
. The defaults is itimer
.
PYROSCOPE_LOG_LEVEL
The log level: debug
, info
, warn
, error
. The default is info
.
PYROSCOPE_SERVER_ADDRESS
The address of the Pyroscope server. The default is http://localhost:4040
.
PYROSCOPE_AUTH_TOKEN
The authorization token used to upload profiling data.
Building
If you want to build the agent JAR yourself, from this repo run:
./gradlew shadowJar
The file will be in agent/build/libs/pyroscope.jar
.