JmxProxyBeat - Simple beat for Tomcat JMX exposed over JmxProxyServlet to HTTP
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
beater Make fmt and make simplify Jun 23, 2016
docs Add example dashboard images Apr 27, 2016
etc Add Missing ssl configuration option and comment some beans Sep 20, 2016
.gitignore Cleanup file Sep 19, 2016
.travis.yml Update Go to 1.7.1 Sep 19, 2016
LICENSE Initial commit Apr 12, 2016
Makefile Rename project Apr 18, 2016 Update Go to 1.7.1 Sep 19, 2016
glide.lock Update vendor folder Apr 24, 2016
jmxproxybeat.template-es-5.json Change default template for ES-2 and not ES-5 Apr 26, 2016
jmxproxybeat.yml Added Support for user specificed CA file and url encoding of JMX pat… Jun 21, 2016
main.go Update main.go Jun 22, 2016
main_test.go Rename project Apr 18, 2016

Travis Build Status GoReportCard


Welcome to Jmxproxybeat - simple beat for JMXProxyServlet for Apache Tomcat to retrieve JMX metrics.

This is still development version and I expect changes based on feedback.

This beat retrieves JMX metrics from running JVM of Apache Tomcat and sends them to Logstash or Elasticsearch. JMX metrics are requested via 'JMX Proxy Servlet' configured and enabled in Tomcat for HTTP listener. JMX Proxy Servlet is a lightweight proxy to get and set the Tomcat internals.

Because Jmxproxybeat is not using JAVA, it is lightweight on the system and there is no need for JAVA to get JMX metrics.

Tomcat Versions

Supported Tomcat versions:

Tomcat version
Tomcat 7
Tomcat 8

Tomcat configuration

General reading about Tomcat JMX Proxy servlet.

In order to enable JMX Proxy Servlet in default Tomcat package, minimal configuration in conf/tomcat-users.xml is required. Tomcat restart is also required.

<role rolename="manager-jmx"/>
<user username="tomcat" password="s3cret" roles="manager-jmx"/>

Test if your Tomcat configuration works with your credentials.

Template scheme of the request of the Bean:

Example of request for HeapMemoryUsage

Getting Started with Jmxproxybeat

Ensure that this folder is at the following location: ${GOPATH}/



To build the binary for Jmxproxybeat run the command below. This will generate a binary in the same directory with the name jmxproxybeat.



To run Jmxproxybeat with debugging output enabled, run:

./jmxproxybeat -c jmxproxybeat.yml -e -d "*"

Example JSON output

  "_index": "jmxproxybeat-2016.04.20",
  "_type": "jmx",
  "_id": "AVQ0FOGeegQ15caFDGZ7",
  "_score": null,
  "_source": {
    "@timestamp": "2016-04-20T14:31:03.385Z",
    "bean": {
      "attribute": "MemoryUsed",
      "hostname": "",
      "name": "java.nio:type=BufferPool,name=direct",
      "value": 81920
    "beat": {
      "hostname": "localhost",
      "name": "localhost"
    "type": "jmx"

Kibana example dashboard

JmxProxyBeat1 JmxProxyBeat2

Test - not complete yet

To test Jmxproxybeat, run the following command:

make testsuite


make unit-tests
make system-tests
make integration-tests
make coverage-report

The test coverage is reported in the folder ./build/coverage/

Package - not complete yet

To be able to package Jmxproxybeat the requirements are as follows:

  • Docker Environment >= 1.10
  • $GOPATH/bin must be part of $PATH: export PATH=${PATH}:${GOPATH}/bin

To cross-compile and package Jmxproxybeat for all supported platforms, run the following commands:

cd dev-tools/packer
make deps
make images


Each beat has a template for the mapping in elasticsearch and a documentation for the fields which is automatically generated based on etc/fields.yml. To generate etc/jmxproxybeat.template.json and etc/jmxproxybeat.asciidoc

make update


To clean Jmxproxybeat source code, run the following commands:

make fmt
make simplify

To clean up the build directory and generated artifacts, run:

make clean


To clone Jmxproxybeat from the git repository, run the following commands:

mkdir -p ${GOPATH}/
cd ${GOPATH}/
git clone