![JMX 和 collectd 为 Apache Kafka 报告了错误的测量结果](https://linux22.com/image/697557/JMX%20%E5%92%8C%20collectd%20%E4%B8%BA%20Apache%20Kafka%20%E6%8A%A5%E5%91%8A%E4%BA%86%E9%94%99%E8%AF%AF%E7%9A%84%E6%B5%8B%E9%87%8F%E7%BB%93%E6%9E%9C.png)
我正在使用 JMX 从 Apache Kafka 收集指标并通过 collectd 发送到可视化和监控服务 Librato。问题是某些指标似乎报告错误。例如,在没有人使用 Kafka 集群的情况下,某些节点报告每分钟传入消息数量较高(例如 15,000 条),而其他节点则报告 0 条,这与预期一致。
以下是 collectd 中的一个指标配置:
<MBean "kafka-all-messages">
ObjectName "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec"
InstancePrefix "all"
<Value>
InstancePrefix "kafka-messages-in"
Type "counter"
Table false
Attribute "MeanRate"
</Value>
</MBean>
以下是 Librato 中的图表:
有人知道哪里出了问题吗?是我的 collectd 配置有问题吗,Type
或者类似这样的问题?
答案1
只是对这个问题的一个小小跟进:这不是 JMX 或 collectd 的错误。我通过直接登录到每个 Kafka 代理并读取其 MBean 中的值来验证 JMX、collectd 和 Librato 是否具有一致的值。
问题是我们使用的 Kafka 客户端的自动提交间隔太小,这产生了巨大的发送到每个 Kafka 代理的消息数量。