使用 JMX 收集“kafka.producer”指标

Gathering `kafka.producer` metrics using JMX

我有一个 Kakfa 代理 运行,我正在使用 JMX 对其进行监控。

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

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

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

我看不出 kafka.producer 这是可以理解的,因为这个 Kafka 代理的生产者有 N 个不同的应用程序,但此时我很困惑。

如何获得 kafka.producer 指标。 我是否必须在充当生产者的每个 N 应用程序中公开 kafka.producer 指标 或者 是否有一些配置开始收集 kafka.producer 指标仅限经纪人。

这样做的正确方法是什么。请帮忙

在此上下文中,将 producing 改写为 通过不可靠的网络 写入可能会有所帮助。

从这个角度来看,衡量写作特征 最合理的地方似乎是客户本身(即在每个 "application" 中,如您所说)。

如果生产者和代理之间的消息丢失,您仍然可以将统计信息发送到本地 "metric store"(例如,您可以在 record-retry-rate 或某些地方看到 "spike"其他相关指标)。

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

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

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