Monitoring API Server with an APM
The Cloud CMS API Server is a Java application that launches inside of a Java Servlet Container. As such, Application Performance Montioring (APM) frameworks such as New Relic can be used to monitor performance metrics and other run-time data.
Production Performance
Although APM frameworks are designed such that they do not impact production performance more than is necessary, the impact is not zero. Cloud CMS Support may, therefore, ask you to disable monitoring if necessary to diagnose an issue.
General Setup
APM tools that monitor Java based applications (Such as the Cloud CMS API server) are typcially enabled by including a jar file in the classpath of the JVM running the API server code.
New Relic Setup
Following is an example of configuring New Relic's APM java agent.
Locate the Dockerfile for the API container in your build environment. Download and install the New Relic java agent to the same folder.
Follow New Relic Documentation for installation instruction of their Java agent.
Open the Dockerfile and add the following lines:
# add newrelic java agent
RUN mkdir -p /usr/local/tomcat/newrelic/logs
RUN chmod 777 /usr/local/tomcat/newrelic/logs
ADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jar
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
The Dockerfile file should now look something like this:
FROM cloudcms/api-server:3.2.56
MAINTAINER Cloud CMS <support@cloudcms.com>
# copy the custom properties and classes into place
# this includes the license file in the ./classes/gitana/license directory
COPY ./classes/ /opt/tomcat/shared/classes/
# add newrelic java agent
RUN mkdir -p /usr/local/tomcat/newrelic/logs
RUN chmod 777 /usr/local/tomcat/newrelic/logs
ADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jar
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
Now locate api.env and add this option to the JVM options:
-javaagent:/usr/local/tomcat/newrelic/newrelic.jar
The api.env file should essentially look like this (Note that you may have modified other JVM option values such as max heap memory setting so your file may not look exactly the same):
JAVA_OPTS=-Xmx2048m -javaagent:/usr/local/tomcat/newrelic/newrelic.jar -server -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -Dsun.net.inetaddr.ttl=60 -Djava.net.preferIPv4Stack=true
Finally, update license_key
and app_name
in your newrelic.yml
file. Get license_key
from your New Relic account page
Now start your API container and in a few minutes you should see information become available in your New Relic Dashboard