Scylla JMX proxy
Go to file
Pekka Enberg c4d8d7087e APIClient: Make API server errors human readable
Make the error messages returned by Scylla API server human readable
from 'nodetool'.

For example, if an API URL is missing, print out the following error:

  [penberg@nero scylla-tools-java]$ ./bin/nodetool getcompactionthreshold ks test4
  nodetool: Scylla API server HTTP GET to URL 'column_family/minimum_compaction/ks:test4' failed: Not found
  See 'nodetool help' or 'nodetool help <command>'.

instead of the scary-looking error that we now print:

  [penberg@nero scylla-tools-java]$ ./bin/nodetool getcompactionthreshold ks test4
  error: Not found
  -- StackTrace --
  java.lang.RuntimeException: Not found
          at com.scylladb.jmx.api.APIClient.getException(APIClient.java:116)
          at com.scylladb.jmx.api.APIClient.getRawValue(APIClient.java:160)
          at com.scylladb.jmx.api.APIClient.getRawValue(APIClient.java:174)
          at com.scylladb.jmx.api.APIClient.getIntValue(APIClient.java:216)
          at com.scylladb.jmx.api.APIClient.getIntValue(APIClient.java:220)
          at org.apache.cassandra.db.ColumnFamilyStore.getMinimumCompactionThreshold(ColumnFamilyStore.java:475)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:498)
          at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

          [snip]
Message-Id: <1458032300-17704-1-git-send-email-penberg@scylladb.com>
2016-03-16 08:34:47 +02:00
dist dist: run as scylla on Ubuntu as well 2016-02-07 10:19:29 +02:00
scripts scylla-jmx: Support local only jmx port by default 2016-03-01 19:52:26 +02:00
src/main/java APIClient: Make API server errors human readable 2016-03-16 08:34:47 +02:00
git-archive-all-license.txt dist: make ubuntu package as 'debian non-native package' 2015-11-25 19:43:38 +09:00
LICENSE.AGPL Change license to AGPLv3 2015-09-22 13:33:24 +03:00
NOTICE Add a NOTICE file for the yammer library 2015-06-11 14:32:45 +03:00
pom.xml pom.xml: Add log4j classes 2016-01-25 20:32:46 +02:00
README.md Rename urchin-mbean.jar to scylla-jmx.jar 2015-12-17 09:27:58 +02:00
SCYLLA-VERSION-GEN version: rename development version to 666.development 2016-01-14 14:40:45 +02:00

Urchin JMX Interface

This is the JMX interface for Scylla

Compile

To compile do:

mvn install

Run

The maven will create an uber-jar with all dependency under the target directory. You should run it with the remote jmx enable so the nodetool will be able to connect to it.

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7199 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar target/scylla-jmx-1.0.jar

Setting IP and Port

By default the the JMX would connect to a node on the localhost on port 10000.

The jmx API uses the system properties to set the IP address and Port. To change the ip address use the apiaddress property (e.g. -Dapiaddress=1.1.1.1) To change the port use the apiport (e.g. -Dapiport=10001)