Jolokia

Jolokia

Nowadays world's the most popular programming language is Java. There are mumereos servers running Java, and all they need to be monitored. While Agent have integraton with Java JMX, in some cases JMX cannot be enabled on Servlet Container, because of political or any other reason. Because of all these cases we have developed Servlet Containers monitoring module, based on Jolokia WAR agent.

Jolokia WAR agent can be deployed on any Java Servlet Container like Tomcat, Jetty, Jboss etc ... It will transform JMX mbeans to friendly Json format and expose it via standard HTTP interface.

Jolkia developers describe Jolokia as:

JMX-HTTP bridge giving an alternative to JSR-160 connectors. 
It is an agent based approach with support for many platforms. 
In addition to basic JMX operations it enhances JMX remoting 
with unique features like bulk requests and fine grained security policies.

So in general, Jolokia is a small Open Source application, which makes DevOps lives easy for monitoring any kind of Java based servers. Its can be dynamically attached to running Java process via Java Attache API as well, as statically included to CLASSPATH or installed as stand alone web application. We use Jolokia in number of our checks

check_jmx (Java Attach API)
check _hbase_rest (Java Attach API)
check_hbase_thrift (Java Attach API)
chech_cassandra (By including to CLASSPATH)
chech_elasticsearch (By including to CLASSPATH)
chech_kafka (By including to CLASSPATH)
check_jolokia (As stand alone web app)

Curent manual is about installing Jolokia WAR-Agent, which runs as stand alone web application at your Servlet Engine. Installation of Jolokia and check_jolokia is very easy :

In order to deploy Jolokia WAR-Agent, you should download it from https://jolokia.org/download.html and place to webapps folder. Depending on your Servlet container, it will be auto deployed, or you shall deploy it manually in accordance to Container deployment rules. After the deployment of Jolokia to you Server, you can enable check_jolokia module.

Install
cd ${OE_AGENT_HOME}/checks_enabled
ln -s ../checks_available/check_jolokia ./
Configure

Depending on your setup and jolokia-version, the metrics will be exposed trough http://HOST:PORT/jolokia-war-X.X.X/read Edit conf/java.ini with conducting changes in section Jolokia

[Jolokia]
jolokia: http://127.0.0.1:8888/jolokia-war-1.3.5/read
Provides

As jolokia check is very generic, it will take only metrics provided by java.lang mbean.

Name Description Type Unit
jolokia_daemonthreadcount Amount of running java daemon threads gauge None
jolokia_gc_collectioncount Java garbage collections count counter None
jolokia_gc_collectiontime Time spend on GC during last iteration rate Milliseconds
jolokia_heap_committed Committed Java Heap Memory gauge Bytes
jolokia_heap_max Max Java Heap Memory gauge Bytes
jolokia_heap_used Used Java Heap Memory gauge Bytes
jolokia_lastgcinfo Last GC duration gauge Milliseconds
jolokia_nonheap_committed Committed Java Non Heap Memory gauge Bytes
jolokia_nonheap_max Max Java Non Heap Memory gauge Bytes
jolokia_nonheap_used Used Java Non Heap Memory gauge Bytes
jolokia_peakthreadcount Peak amount of running Java Threads gauge None
jolokia_threadcount Total amount of started threads counter None

All metrics will be prefixed with jolokia_ so you can easily find them in your dashboard application.