【问题标题】: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 Graphitemetrics-reporter-config 支持的任何其他后端。

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

    几乎所有 Cassandra 监控解决方案都会在内部保存收集到的指标,并允许以后查询它们。我建议查看existing solutions 以了解更多信息。

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

    Nodetool 只会连接到单个主机。

    【讨论】:

    • 你应该可以use your own reporter。另一种选择是实现 Graphite 或 Ganglia 协议。
    • 谢谢斯特凡。我尝试 metrics-reporter-config 将所有指标放在一个 csv 文件中。我可以开始工作了。我还注意到wiki.apache.org/cassandra/Metrics 中提到的指标是唯一可以在 YAML 文件中配置为模式的指标。但是,在此选项中,也会在每个节点上生成指标文件,然后我的报告工具应该定期从每个 Cassandra 节点收集这些指标 csv 文件。这是我的假设正确吗?
    猜你喜欢
    • 2023-03-12
    • 2017-02-18
    • 2016-07-19
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多