Docker
Docker is a container-based virtualization platform. When you run Java applications in a Docker container, you can adjust the application's performance and resource usage by adding JVM options. This document explains how to modify the Dockerfile to add JVM options.
The Docker must have been installed and the Docker images must be built for Java applications.
Applying the agent
Based on an existing Docker image, build an image with the WhaTap agent settings added.
This document covers only the installation of the Java agent. To apply with WhaTap Kubernetes monitoring, see the following.
Creating the Docker build directory
Create a Docker build directory.
mkdir -p {Docker build dir}
Creating the agent configuration file
Create the whatap.conf file.
cat >{Docker build Dir}/whatap.conf <<EOL
#Enter the access key.
license=XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
#Enter the collection server IP.
whatap.server.host=xx.xx.xx.xx/yy.yy.yy.yy
EOL
Creating the Dockerfile
To build an image, you can copy the jar files from the WhaTap image to the -javaagent
option.
cat >/home/silver/whatap/docker/Dockerfile <<EOL
FROM whatap/kube_mon as build
## Create an actual image (Add the WhaTap image)
## $Image_Name (image name)
FROM $Image_Name
RUN mkdir -p /whatap
COPY /data/agent/micro/whatap.agent-*.jar /whatap
COPY ./whatap.conf /whatap/
#...
EOL
Applying JAVA_OPTS
Add the following to JAVA_OPT
:
WHATAP_HOME=/whatap
WHATAP_JAR=ls ${WHATAP_HOME}/whatap.agent-*.jar | sort -V | tail -1
export JAVA_OPTS="-javaagent:${WHATAP_JAR} "
Building the Docker
Build the Docker.
cd docker
docker build -t $Image_Name
In case of Java 17 or later, add the following options for reflection.
--add-opens=java.base/java.lang=ALL-UNNAMED
You can modify the Java agent file name by using the Rename
function. Once the Java agent name has been modified, enter a new name in JAVA_OPTS
.
Example of how to modify the Java agent name
java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.Rename -from whatap.agent-X.Y.Z.jar -to whatap.agent.jar
Viewing the heap histogram
WhaTap's Java Monitoring provides the function to view the status of heap occupancy objects in the JVM memory (sizes for each object in heap memory). In APP > Instance performance analysis, select the Heap histogram tab.
Java versions 6 to 8 support basic functions without the JVM options. However, for some Java versions, the JVM options must be applied as follows:
-
Java 9 to Java 15
-Djdk.attach.allowAttachSelf=true
examplejava -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true -jar {application.jar}
-
Java 16 or later
-Djdk.attach.allowAttachSelf=true
--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMEDexamplejava -javaagent:{WHATAP_HOME}/whatap.agent-X.Y.Z.jar -Djdk.attach.allowAttachSelf=true --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED -jar {application.jar}
It does not support Java 5 or earlier and IBM Java.
Next steps
-
Open source tracing
Depending on the framework or open source library used in applications, you may need to add agent options. For example, when using spring-boot-3.x, feign-client-11, or okhttp3-4.4 with a framework or open source, set the options as follows:
whatap.confweaving=spring-boot-3.0,feign-11,okhttp3-4.4
For information on how to configure the framework or open source library that suits your application environment, see the following.
-
Checking the installation
If you have created a project, installed an agent, and applied all JVM options, see the checklist in the following.
-
Installation troubleshooting
It provides various problems that may occur when installing the agent and specific instructions for resolving them. It provides solutions against various situations, including firewall configuration, SpringBoot and Tomcat JMX configuration, and server configuration using the OSGI framework. For more information, see the following.
-
Agent setting
It provides various features for monitoring by applying some options to the agent configuration file (whatap.conf). It includes basic configuration, configuration for server connection and data transfer, how to manage the configuration files for multiple application servers, and transaction tracing, and more. For more information, see the following.
-
Starting the monitoring
After all settings are made, restart the application server. The agent starts collecting data. First, check whether the monitoring data has been collected in Application Dashboard. For more information about Application Dashboard, see the following.