Monitoring JVM Metrics with ClickStack
This guide shows you how to monitor JVM applications with ClickStack using the OpenTelemetry Java agent to collect metrics. You'll learn how to:
- Attach the OpenTelemetry Java agent to your JVM application
- Configure the agent to send metrics to ClickStack via OTLP
- Use a pre-built dashboard to visualize heap memory, garbage collection, threads, and CPU
A demo dataset with sample metrics is available if you want to test the integration before instrumenting your production applications.
Time Required: 5-10 minutes
Integration with existing JVM application
This section covers configuring your existing JVM application to send metrics to ClickStack using the OpenTelemetry Java agent.
If you would like to test the integration before configuring your production setup, you can test with our demo dataset in the demo dataset section.
Prerequisites
- ClickStack instance running
- Existing Java application (Java 8+)
- Access to modify JVM startup arguments
Get ClickStack API key
The OpenTelemetry Java agent sends data to ClickStack's OTLP endpoint, which requires authentication.
- Open HyperDX at your ClickStack URL (e.g., http://localhost:8080)
- Create an account or log in if needed
- Navigate to Team Settings → API Keys
- Copy your Ingestion API Key
Download OpenTelemetry Java agent
Download the OpenTelemetry Java agent JAR file:
This downloads the agent to your current directory. You can place it wherever makes sense for your deployment (e.g., /opt/opentelemetry/ or alongside your application JAR).
Configure JVM startup arguments
Add the Java agent to your JVM startup command. The agent automatically collects JVM metrics and sends them to ClickStack.
Option 1: Command line flags
Replace the following:
opentelemetry-javaagent.jar→ Full path to the agent JAR (e.g.,/opt/opentelemetry/opentelemetry-javaagent.jar)my-java-app→ A meaningful name for your service (e.g.,payment-service,user-api)YOUR_API_KEY→ Your ClickStack API key from the command abovemy-application.jar→ Your application's JAR file namehttp://localhost:4318→ Your ClickStack endpoint (uselocalhost:4318if ClickStack runs on the same machine, otherwise usehttp://your-clickstack-host:4318)
Option 2: Environment variables
Alternatively, use environment variables:
Replace the following:
opentelemetry-javaagent.jar→ Full path to the agent JARmy-java-app→ Your service nameYOUR_API_KEY→ Your ClickStack API keyhttp://localhost:4318→ Your ClickStack endpointmy-application.jar→ Your application's JAR file name
The OpenTelemetry Java agent automatically collects these JVM metrics:
- Memory:
jvm.memory.used,jvm.memory.limit,jvm.memory.committed,jvm.memory.used_after_last_gc - Garbage Collection:
jvm.gc.duration - Threads:
jvm.thread.count - Classes:
jvm.class.count,jvm.class.loaded,jvm.class.unloaded - CPU:
jvm.cpu.time,jvm.cpu.count
Verify metrics in HyperDX
Once your application is running with the agent, verify metrics are flowing to ClickStack:
- Open HyperDX at http://localhost:8080 (or your ClickStack URL)
- Navigate to Chart Explorer
- Search for metrics starting with
jvm.(e.g.,jvm.memory.used,jvm.gc.duration,jvm.thread.count)
Demo dataset
For users who want to test the JVM metrics integration before instrumenting their applications, we provide a sample dataset with pre-generated metrics showing realistic JVM behavior from a medium-sized microservice with steady moderate traffic.
Download the sample dataset
The dataset includes 24 hours of JVM metrics showing:
- Heap memory growth with periodic garbage collection events
- Thread count variations
- Realistic GC pause times
- Class loading activity
- CPU utilization patterns
Start ClickStack
If you don't already have ClickStack running:
Wait a few moments for ClickStack to fully start up.
Verify the demo data
Once imported:
- Open HyperDX at http://localhost:8080 and log in (create an account if needed)
- Navigate to the Search view and set source to Metrics
- Set the time range to 2025-12-06 14:00:00 - 2025-12-09 14:00:00
- Search for
jvm.memory.usedorjvm.gc.duration
You should see metrics for the demo service.
HyperDX displays timestamps in your browser's local timezone. The demo data spans 2025-12-07 14:00:00 - 2025-12-08 14:00:00 (UTC). Set your time range to 2025-12-06 14:00:00 - 2025-12-09 14:00:00 to ensure you see the demo metrics regardless of your location. Once you see the metrics, you can narrow the range to a 24-hour period for clearer visualizations.
Dashboards and visualization
To help you monitor JVM applications with ClickStack, we provide a pre-built dashboard with essential visualizations for JVM metrics.
Import the pre-built dashboard
- Open HyperDX and navigate to the Dashboards section
- Click Import Dashboard in the upper right corner under the ellipses
- Upload the
jvm-metrics-dashboard.jsonfile and click Finish Import
View the dashboard
The dashboard will be created with all visualizations pre-configured:
For the demo dataset, set the time range to 2025-12-07 14:00:00 - 2025-12-08 14:00:00 (UTC). Adjust based on your local timezone.
Troubleshooting
Agent not starting
Verify the agent JAR exists:
Check Java version compatibility (requires Java 8+):
Look for agent startup log message: When your application starts, you should see:
No metrics appearing in HyperDX
Verify ClickStack is running and accessible:
Check that metrics exporter is configured:
Check application logs for OpenTelemetry errors: Look for any error messages related to OpenTelemetry or OTLP export failures in your application logs.
Verify network connectivity: If ClickStack is on a remote host, ensure port 4318 is accessible from your application server.
Verify agent version: Ensure you're using the latest stable agent version (currently 2.22.0), as newer versions often include performance improvements.
Next steps
Now that you have JVM metrics flowing into ClickStack, consider:
- Set up alerts for critical metrics like high heap usage, frequent GC pauses, or thread exhaustion
- Explore other ClickStack integrations to unify your observability data
Going to production
This guide demonstrates configuring the OpenTelemetry Java agent for local testing. For production deployments, include the agent JAR in your container images and configure via environment variables for easier management. For larger environments with many JVM instances, deploy a centralized OpenTelemetry Collector to batch and forward metrics from multiple applications instead of sending directly to ClickStack.
See Ingesting with OpenTelemetry for production deployment patterns and collector configuration examples.