我正在运行一个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
指标
执行此操作的正确方法是什么。请帮忙。
答案 0 :(得分:3)
是的,要捕获生产者JMX指标,您需要在运行kafka生产者实例的所有进程中启用JMX。
答案 1 :(得分:1)
在这种情况下,将生产改写为在不可靠的网络上书写可能会有所帮助。
从这个角度来看,衡量写作特征的最合理的地方似乎是客户端本身(即在您所谓的每个“应用程序”中)。
如果生产者和代理之间的消息丢失了,您仍然可以将统计信息发送到本地“度量标准存储库”(例如,您可能会在record-retry-rate
或其他相关度量标准中看到“峰值”)。
此外,将Kafka生产者指标与其他本地指标配对可能非常有用(JVM统计信息,详细的业务指标等)。请记住,客户端几乎肯定会在生产环境中的不同机器上运行,并且可能受与经纪人本身不同的因素的影响。
如果您打算监视您的客户端应用程序(无论如何很可能会发生),那么我只需在此处进行操作(即standard方式)。