使用JMX

时间:2018-12-31 08:54:44

标签: apache-kafka jmx

我正在运行一个Kakfa代理,正在使用JMX进行监视。

此代理是一个以kafka-server-start.sh JMX端口9999开头的进程运行的docker容器,并作为环境变量使用。

当我连接到JMX端口并尝试列出所有域时,得到以下信息;

kafka
kafka.cluster
kafka.controller
kafka.coordinator.group
kafka.coordinator.transaction
kafka.log
kafka.network
kafka.server
kafka.utils

我看不到kafka.producer这是可以理解的,因为此卡夫卡经纪人的生产者是N个不同应用程序的数量,但在这一点上我感到困惑。

如何获取kafka.producer指标。 我是否必须在充当生产者 OR的每个kafka.producer应用程序中公开N指标,是否有一些配置开始在代理上收集kafka.producer指标

执行此操作的正确方法是什么。请帮忙。

2 个答案:

答案 0 :(得分:3)

是的,要捕获生产者JMX指标,您需要在运行kafka生产者实例的所有进程中启用JMX。

答案 1 :(得分:1)

在这种情况下,将生产改写为在不可靠的网络上书写可能会有所帮助。

从这个角度来看,衡量写作特征的最合理的地方似乎是客户端本身(即在您所谓的每个“应用程序”中)。

如果生产者和代理之间的消息丢失了,您仍然可以将统计信息发送到本地“度量标准存储库”(例如,您可能会在record-retry-rate或其他相关度量标准中看到“峰值”)。

此外,将Kafka生产者指标与其他本地指标配对可能非常有用(JVM统计信息,详细的业务指标等)。请记住,客户端几乎肯定会在生产环境中的不同机器上运行,并且可能受与经纪人本身不同的因素的影响。

如果您打算监视您的客户端应用程序(无论如何很可能会发生),那么我只需在此处进行操作(即standard方式)。