Kafka JMX 指标当前消息输入速率

Kafka JMX Metric Current Rate of Messages In

我已经在本地使用 jmx_prometheus_javaagent 作为 java 代理启动了 Kafka 代理实例。

我对针对给定主题的当前消息传入率感兴趣,并在 Grafana 仪表板中呈现相同的消息。在 jconsole 中探索 MBean,我可以看到一个名为 kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=ABCD 的对象,它具有 MeanRate、OneMinuteRate、Count 等属性,这似乎符合我的目的:-

为了尝试我的设置,我使用一个简单的 KafkaProducer 向本地 kafka 代理发送非常小的消息,该 KafkaProducer 能够在不到 5 秒的时间内发送 100 万条消息,然后停止。对于这个实验,我期望看到 MeanRate 在这 5 秒后出现峰值,然后回到 0。

问题

即使没有消息传入(生产者已停止),在生产者停止发送消息很久之后,我仍然看到 MeanRate 的非零高值:-

普罗米修斯图中也反映为:-

普罗米修斯配置:-

- pattern : kafka.server<type=(.+), name=(.+)PerSec\w*, topic=(.+)><>MeanRate
  name: kafka_server___mean_rate
  labels:
    topic: ""

Prometheus 查询 - floor(kafka_server_brokertopicmetrics_messagesin_mean_rate)

什么是正确的 way/prometheus-query/mbean 来获得准确的消息传入率?

您应该使用 Count 并在 Prometheus 端使用 rate()。 JMX 导出器附带的 example config file 已经为您选择了正确的指标。

MeanRate 是自二进制启动以来的每秒平均速率,因此它不是很有用。 OneMinuteRate、FiveMinuteRate 和 FifteenMinuteRate 是指数移动平均线,因此也会随着时间衰减。

https://www.youtube.com/watch?v=67Ulrq6DxwA 提供了有关不同 instrumentation/monitoring 系统处理计数器的各种方式的更多信息。