Read cassandra matrics using JMX in Java

那年仲夏 提交于 2019-12-22 11:33:36

问题


How can i produce live metrics of Cassandra in Java using JMX/Metrics? I want to run cassandra JMX command to collect cassandra matrices.Examples will be much appreciated.


回答1:


All Cassandra's metrics exposed via JMX are documented in official documentation. And because it uses the Metrics library, you may not need to use JMX to capture metrics - see the note at the end of the referenced page for more information (and conf/metrics-reporter-config-sample.yaml example file from Cassandra's distribution).

P.S. Maybe I misunderstood the question - can you provide more details? Are you looking for commands to collect that metrics from Cassandra? Or code snippets in Java?

From Java you can access the particular metrics with something like this:

JMXServiceURL url = new JMXServiceURL(
    "service:jmx:rmi:///jndi/rmi://[127.0.0.1]:7199/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();

Set<ObjectInstance> objs = mbsc.queryMBeans(ObjectName
                                        .getInstance("org.apache.cassandra.metrics:type=ClientRequest,scope=Read-ALL,name=TotalLatency"), null);
for (ObjectInstance obj : objs) {
    Object proxy = JMX.newMBeanProxy(mbsc, obj.getObjectName(),
       CassandraMetricsRegistry.JmxCounterMBean.class);
    if (proxy instanceof CassandraMetricsRegistry.JmxCounterMBean) {
        System.out.println("TotalLatency = " + ((CassandraMetricsRegistry.JmxCounterMBean) proxy).getCount());
    }
}
jmxc.close();

More detailed example you can find at JmxCollector from cassandra-metrics-collector project...



来源:https://stackoverflow.com/questions/48870404/read-cassandra-matrics-using-jmx-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!