JVM in a Docker Container
If you're attaching the OverOps Micro-Agent to an environment that's running Java 10 or 11 or any IBM Java version, please follow these guidelines:
When attaching an OverOps Agent to a JVM that is running Java 10 or 11 or any IBM java versions, follow these guidelines:
Turn off Class Sharing: This can be done using the following flags:
for IBM Java
Increase ReservedCodeCache to at least 512mb by adding the following flag
The Agent should appear last in the VM arguments list before specifying the main class or jar.
When adding/removing 3rd party packages, the Agent should be restarted.
Additionally, if you wish to upgrade your own compiler to target Java 10/11, then you'll have to upgrade your Collector (SaaS) or Collector + backend (On-Premises) to support it.
AIX - Statistic Overhead and Performance
When running on an AIX system please add the following parameter to reduce the Statistics Overhead and increase performance
Details can be found in the Micro-Agent Properties
For example path:
Attaching the OverOps Micro-Agent to Docker Containers
The OverOps Micro-Agent library can be made available to a container through a mount or by copying it directly into an image.
Set environment variables to configure the Micro-Agent to connect to the Collector and to attach the Micro-Agent to all running JVMs inside the container.
TAKIPI_COLLECTOR_HOST=collector TAKIPI_COLLECTOR_PORT=6060 JAVA_TOOL_OPTIONS=-agentpath:/takipi/lib/libTakipiAgent.so
Make sure that the OverOps Micro-Agent is the last
-agentpathargument in your argument list if you are using any other agents with your application in addition to OverOps.
If you're running more than one JVM inside a container and you do not want OverOps to monitor all of them, you'll need to modify the command used to start your JVM.
Instead of setting the
JAVA_TOOL_OPTIONSenvironment variable, start your JVM with
-agentpath:/takipi/lib/libTakipiAgent.sobefore the -jar and -cp arguments.
For best results, name your applications and deployments at the JVM level.
see Naming the Application, Server, Deployment for details.
Verify that the
-Dtakipi.*JVM arguments are located before the -jar and -cp arguments.
The OverOps Micro-Agent is a native agent and is OS-specific. If using an:
- Alpine Linux based image, use the Alpine Agent
- Red Hat and Debian based images, use the Standard Agent.
Are you seeing this error?
Error relocating libHSAgent.so: __strtod_internal: symbol not found
Mounting the Micro-Agent into a container at runtime is the preferred approach.
To mount the Micro-Agent into your image, first download and unzip the latest Micro-Agent to create a
- For Red Hat / Debian based images: https://s3.amazonaws.com/app-takipi-com/deploy/linux/takipi-agent-latest.tar.gz
- For Alpine Linux based images (beta): https://s3.amazonaws.com/app-takipi-com/deploy/alpine/takipi-agent-latest.tar.gz
The Alpine Linux image is currently in Beta and not supported.Refer to Software and Hardware Requirements for supported OS versions.
Now run your image with the required environment variables set and the mount attached.
docker run \ -e TAKIPI_RESOURCES_DIR=/tmp \ -e TAKIPI_COLLECTOR_HOST=localhost \ -e TAKIPI_COLLECTOR_PORT=6060 \ -e JAVA_TOOL_OPTIONS=-agentpath:/takipi/lib/libTakipiAgent.so \ --mount type=bind,source="$(pwd)"/takipi,target=/takipi \ example/your-image-here:latest
If you're sharing the same Micro-Agent through a mount across multiple containers, set the environment variable
TAKIPI_RESOURCES_DIR=/tmpto avoid conflicts and to ensure each Agent writes to its own folder.
If you're running the Collector on the same host machine as the JVM with the Micro-Agent, use
To copy the Micro-Agent into your image, add the following lines to your Dockerfile:
# set default environmental variables ENV TAKIPI_COLLECTOR_HOST=collector ENV TAKIPI_COLLECTOR_PORT=6060 ENV JAVA_TOOL_OPTIONS=-agentpath:/takipi/lib/libTakipiAgent.so # download and install the agent - extracts into the `takipi` folder. # NOTE: use the correct Agent for your OS RUN curl -sL https://s3.amazonaws.com/app-takipi-com/deploy/linux/takipi-agent-latest.tar.gz | tar -xvzf -
Confirm connectivity by going to https://app.overops.com.
Naming your Application, Server, Deployment
- Option 1: Using JVM arguments passed at application start-up
- Option 2: Using JAR or WAR manifest attributes
Updated about 3 years ago