在 Java 中使用 JMX 读取 cassandra 矩阵
Read cassandra matrics using JMX in Java
如何使用 JMX/Metrics 在 Java 中生成 Cassandra 的实时指标?我想 运行 cassandra JMX 命令来收集 cassandra matrices.Examples 将不胜感激。
官方文档中通过 JMX are documented 公开的所有 Cassandra 指标。并且因为它使用 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 中找到更详细的示例...
如何使用 JMX/Metrics 在 Java 中生成 Cassandra 的实时指标?我想 运行 cassandra JMX 命令来收集 cassandra matrices.Examples 将不胜感激。
官方文档中通过 JMX are documented 公开的所有 Cassandra 指标。并且因为它使用 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 中找到更详细的示例...