【问题标题】:Possible options to collect Cassandra Monitoring metrics收集 Cassandra 监控指标的可能选项
【发布时间】:2016-06-13 20:15:18
【问题描述】:
我想为 Cassandra 集群收集不同的指标(如读/写延迟、内存使用情况、堆大小、cpu 使用情况、压缩计数等),这些信息将被其他第三方监控工具使用。
所以我知道了类似的选项
- nodetool(内部使用了jmx api)
- jmx api (mbean)
- jconsole(单个 Cassandra 进程可以跟踪并在内部使用该机器上的 jmx 读取数据)
不过这里有几个查询:
- nodetool 没有提供 jmx 可以直接提供的所有信息,这是否正确?
- 如果我决定直接使用 JMX api 收集指标,那么我的监控应用程序是否必须为 Cassandra 集群中的每个节点单独调用?因此,如果我有 50 个节点并且 jmx 在调用节点上运行,那么是否会有 50 个调用来收集每个集群主机的读取延迟?
- 有没有什么方法可以将所有集群节点的数据收集到一个地方,比如 jmx 服务器,然后监控工具可以在单个机器调用中读取数据?
- nodetool 实用程序如何使用 jmx API 从集群中的所有节点读取数据?
感谢您的回复。
【问题讨论】:
标签:
monitoring
jmx
cassandra-2.0
【解决方案1】:
nodetool 没有提供 jmx 可以直接提供的所有信息,这是正确的吗?
正确。 Nodetool 不是作为报告解决方案构建的,也不专注于显示性能指标。因此 JMX 提供的很多指标都没有被 nodetool 覆盖。
如果我决定直接使用 JMX api 收集指标,那么我的监控应用程序是否必须为 Cassandra 集群中的每个节点单独调用?
是的。另一种选择是让 Cassandra push 指标到指定的端点。例如,您可以将 Cassandra 配置为 push data to Graphite 或 metrics-reporter-config 支持的任何其他后端。
有没有什么方法可以将所有集群节点的数据收集到一个地方,比如 jmx 服务器,然后监控工具可以在单机调用中读取数据?
几乎所有 Cassandra 监控解决方案都会在内部保存收集到的指标,并允许以后查询它们。我建议查看existing solutions 以了解更多信息。
nodetool 实用程序如何使用 jmx API 从集群中的所有节点读取数据?
Nodetool 只会连接到单个主机。