收集Cassandra Monitoring指标的可能选项

时间:2016-03-01 12:05:49

标签: monitoring jmx cassandra-2.0

我想为Cassandra集群收集不同的指标(如读/写延迟,内存使用,堆大小,cpu使用,压缩计数等),并且该信息将被其他第三方监控工具使用。 所以我开始知道像

这样的选项
  • nodetool(内部使用jmx apis)
  • jmx api(mbean)
  • jconsole(单个Cassandra进程可以跟踪并在内部使用该机器上的jmx读取数据)

但是这里有一些问题:

  • 这是正确的,nodetool不能提供jmx直接提供的所有信息吗?
  • 如果我决定直接使用JMX api收集指标,那么我的监控应用程序是否必须为Cassandra集群中的每个节点单独调用?因此,如果我有50个节点并且jmx正在呼叫节点上运行,那么将有50个呼叫来收集来自每个群集主机的读取延迟吗?
  • 是否有任何方法可以在一个地方收集所有集群节点的数据,例如jmx服务器,然后监控工具可以在单机调用中读取数据?
  • nodetool实用程序如何使用jmx API从集群中的所有节点读取数据?

感谢您的回复。

1 个答案:

答案 0 :(得分:2)

  

这是正确的,nodetool不能提供jmx直接提供的所有信息吗?

正确。 Nodetool不是作为报告解决方案构建的,并不专注于显示性能指标。因此,nodetool不包含JMX提供的许多指标。

  

如果我决定直接使用JMX api收集指标,那么我的监控应用程序是否必须为Cassandra集群中的每个节点单独调用?

是。另一种选择是将Cassandra 推送指标指向指定的端点。例如,您可以将Cassandra配置为push data to Graphitemetrics-reporter-config支持的任何其他后端。

  

有没有办法将所有集群节点的数据收集到jmx服务器等一个地方,然后监控工具可以在单机调用中读取数据?

实际上,所有Cassandra监控解决方案都会在内部保存收集的指标,并允许稍后查询。我建议您查看existing solutions以了解详情。

  

nodetool实用程序如何使用jmx API从集群中的所有节点读取数据?

Nodetool只能连接到一台主机。