代码之家  ›  专栏  ›  技术社区  ›  Manish Kumar

在Java中使用JMX读取cassandra矩阵

  •  2
  • Manish Kumar  · 技术社区  · 8 年前

    如何使用JMX/metrics在Java中生成Cassandra的实时度量?我想运行cassandrajmx命令来收集cassandra矩阵。请举例说明。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Alex Ott    8 年前

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

    P、 也许我误解了这个问题-你能提供更多细节吗?您是否正在寻找从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();
    

    更多详细示例,请访问 JmxCollector 来自cassandra metrics collector项目。。。