Java
Traces | Metrics | App Logs | Custom Logs | Profiling |
---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ |
This guide walks you through setting up Application Performance Monitoring (APM) on a Java application. These instructions can also be found on the Installation page in your Middleware Account. View example code here.
Prerequisites
- Middleware Host Agent (MW Agent), to install the MW Agent please see our installation guide.
- Java 8+, you can check your Java version with the following command.
java --version
Step 1: Download JAR
Download the latest Middleware instrumentation JAR file from the Github release page.
Step 2: Container Variables
Applications running in a container require an additional environment variable. If your application is not running in a container, move to Step 5.
For Docker containers, add the following environment variable to your application.
MW_AGENT_SERVICE=<DOCKER_BRIDGE_GATEWAY_ADDRESS>
kubectl get service --all-namespaces | grep mw-service
Then add the following environment variable to your application deployment YAML file.
MW_AGENT_SERVICE=mw-service.mw-agent-ns.svc.cluster.local
Step 3: Capture Application Data
Traces
Distributed tracing will be automatically enabled upon completing Step 4: Run Application.
Metrics
Metrics collection will be automatically enabled upon completing Step 4: Run Application.
Application & Custom Logs
Application Logs will be automatically enabled upon completing Step 4: Run Application.
To add custom logs, add this dependency in the pom.xml file.
<dependency>
<groupId>io.github.middleware-labs</groupId>
<artifactId>agent-apm-java</artifactId>
<version>0.0.16</version>
</dependency>
Install the package into the local repository.
mvn install
Import the logger package.
import io.github.middlewarelabs.agentapmjava.Logger;
Then utilize the following functions based on desired log severity levels.
Logger.info("info message");
Logger.debug("debug message");
Logger.warn("warn message");
Logger.error("error message");
Profiling
Application Profiling is automatically enabled upon completing Step 4: Run Application.
Stack Traces
Use the Logger.recordError(e) method to record a stack trace when an error occurs. See an example of this method below.
import io.github.middlewarelabs.agentapmjava.Logger;
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Throwable e) {
Logger.recordError(e);
System.out.println("Something went wrong.");
}
Step 4: Run Application
Run your application with the command given below.
MW_API_KEY={MW_API_KEY} java -javaagent:/PATH/TO/middleware-javaagent-{version}.jar \
-Dotel.service.name={APM-SERVICE-NAME} \
-Dotel.resource.attributes=project.name={APM-PROJECT-NAME} \
-jar <YOUR_APP>.jar