JVM in a Kubernetes 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
‑Xshareclasses:none
for HotSpot
-Xshare:off
-XX:-UseTypeSpeculation
Increase ReservedCodeCache to at least 512mb by adding the following flag
-XX:ReservedCodeCacheSize=512m
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 PerformanceWhen running on an AIX system please add the following parameter to reduce the Statistics Overhead and increase performance
-Dtakipi.neo.heapless.inst.pre.vm=path/to/java-executable
Details can be found in the Micro-Agent PropertiesFor example path:
../jre/bin/java
binary
Agent RankingMake sure that the OverOps Micro-Agent is the last
-agentlib
or-agentpath
argument in your argument list if you are using any other agents with your application in addition to OverOps.
Attaching the OverOps Micro-Agent to Containers in Kubernetes
The OverOps Micro-Agent library can be made available to a container through a Persistent Volume or by copying it directly into an image.
Set environment variables to configure the 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
NoteIf 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_OPTIONS
environment variable, start your JVM with
-agentpath:/takipi/lib/libTakipiAgent.so
before the -jar and -cp arguments.
TipFor best results, name your applications and deployments at the JVM level.
see Naming the Application, Server, Deployment for details.
Agent RankingMake sure that the OverOps agent is the last
-agentlib
or-agentpath
argument in your argument list if you are using any other agents with your application in addition to OverOps.
NoteVerify 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.
ImportantAre you seeing this error?
Error relocating libHSAgent.so: __strtod_internal: symbol not found
Persistent Volume
The Micro-Agent can be stored on a persistent volume and mounted into a container at runtime by adding the following to your pod or deployment controller's container spec, modified to use your volume:
env:
- name: TAKIPI_COLLECTOR_HOST
value: "overops-collector-service"
- name: TAKIPI_COLLECTOR_PORT
value: "6060"
- name: TAKIPI_RESOURCES_DIR
value: "/tmp"
- name: JAVA_TOOL_OPTIONS
value: "-agentpath:/takipi/lib/libTakipiAgent.so"
volumeMounts:
- mountPath: /takipi
name: takipi-volume
volumes:
- name: takipi-volume
Download and unzip the latest Micro-Agent to create a takipi
folder on the Persistent Volume.
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
NoteIf you're sharing the same Agent through a mount across multiple containers, set the environment variable
TAKIPI_RESOURCES_DIR=/tmp
to avoid conflicts and to ensure each Agent writes to its own folder.
Copy
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 -
Next Steps
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 2 months ago