Kafka JMX 指标当前消息速率

Kum*_*hav 3 java jmx apache-kafka prometheus

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

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

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

问题

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

同样在普罗米修斯图中反映为:-

在此输入图像描述

普罗米修斯配置:-

- pattern : kafka.server<type=(.+), name=(.+)PerSec\w*, topic=(.+)><>MeanRate
  name: kafka_server_$1_$2_mean_rate
  labels:
    topic: "$3"
Run Code Online (Sandbox Code Playgroud)

普罗米修斯查询 -floor(kafka_server_brokertopicmetrics_messagesin_mean_rate)

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

bri*_*zil 5

您应该在 Prometheus 端使用Count并获取它。JMX 导出器附带的示例配置文件已经为您选择了正确的rate()指标

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

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