Search code examples
unixjmxgraphiteinfinispanjmxtrans

How can you push infinispan jmx metrics to graphite with jmxtrans?


I have this configuration file

{
   "servers": [
      {
         "url": "service:jmx:rmi:///jndi/rmi://192.168.167.166:6000/jmxrmi ",
         "alias": "infinispan",
         "username":"admin",
         "password": "admin",
         "queries": [
            {
               "obj": "java.lang:type=Memory",
               "attr": [
                  "HeapMemoryUsage",
                  "NonHeapMemoryUsage"
               ],
               "outputWriters": [
                  {
                     "@class": "com.googlecode.jmxtrans.model.output.GraphiteWriterFactory",
                     "port": 2003,
                     "host": "127.0.0.1",
                     "typeNames": [
                        "name"
                     ]
                  }
               ]
            }
         ],
         "numQueryThreads": 2
      }
   ]
}

graphite is running on localhost, and when I connect with jconsole it conencts fine and the metrics are displayed.

I run './jmxtrans.sh start infinispan.json' from inside the /jmxtrans-jmxtrans-parent-260/jmxtrans folder.

In the jmxtrans.log file I keep getting this exception:

[13 Dec 2016 09:27:04] [Stormpot-pool-3-thread-1] 2448   ERROR (com.googlecode.jmxtrans.model.output.support.pool.RetryingAllocator$1:77) - Error allocating slot
java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.googlecode.jmxtrans.model.output.support.pool.SocketAllocator.allocate(SocketAllocator.java:61)
    at com.googlecode.jmxtrans.model.output.support.pool.SocketAllocator.allocate(SocketAllocator.java:37)
    at com.googlecode.jmxtrans.model.output.support.pool.RetryingAllocator$2.call(RetryingAllocator.java:89)
    at com.googlecode.jmxtrans.model.output.support.pool.RetryingAllocator$2.call(RetryingAllocator.java:86)
    at com.github.rholder.retry.AttemptTimeLimiters$NoAttemptTimeLimit.call(AttemptTimeLimiters.java:78)
    at com.github.rholder.retry.Retryer.call(Retryer.java:160)
    at com.googlecode.jmxtrans.model.output.support.pool.RetryingAllocator.allocate(RetryingAllocator.java:86)
    at stormpot.ReallocatingAdaptor.allocate(ReallocatingAdaptor.java:37)
    at stormpot.BAllocThread.alloc(BAllocThread.java:225)
    at stormpot.BAllocThread.increaseSizeByAllocating(BAllocThread.java:131)
    at stormpot.BAllocThread.replenishPool(BAllocThread.java:106)
    at stormpot.BAllocThread.continuouslyReplenishPool(BAllocThread.java:88)
    at stormpot.BAllocThread.run(BAllocThread.java:80)
    at java.lang.Thread.run(Thread.java:745)

Solution

  • Eventually I figured out the problem was the port where vagrant was forwarding it to in this case 22003:

    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Checking if box 'mayflower/trusty64-puppet3' is up to date...
    ==> default: Clearing any previously set forwarded ports...
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
    ==> default: Forwarding ports...
        default: 443 (guest) => 8443 (host) (adapter 1)
        default: 8125 (guest) => 8125 (host) (adapter 1)
        default: 2003 (guest) => 22003 (host) (adapter 1)