使用Java中的JMX读取cassandra matrics

时间:2018-02-19 16:35:07

标签: cassandra jmx

如何使用JMX / Metrics在Java中生成Cassandra的实时指标?我想运行cassandra JMX命令来收集cassandra矩阵。例如,非常感谢。

1 个答案:

答案 0 :(得分:2)

所有Cassandra的指标都通过官方文档中的JMX are documented公开。由于它使用Metrics库,您可能不需要使用JMX来捕获指标 - 请参阅引用页面末尾的注释以获取更多信息(以及来自Cassandra发行版的conf/metrics-reporter-config-sample.yaml示例文件)。

P.S。也许我误解了这个问题 - 你能提供更多细节吗?您是否在寻找从Cassandra收集指标的命令?或者用Java编写代码片段?

从Java中,您可以使用以下内容访问特定的指标:

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();

您可以在cassandra-metrics-collector项目的JmxCollector找到更详细的示例......