Kafka JMX度量当前消息速率

时间:2017-04-28 10:12:51

标签: java apache-kafka jmx prometheus

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

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

为了尝试我的设置,我使用一个简单的KafkaProducer向本地kafka经纪人发送非常小的消息,该KafkaProducer能够在少于5秒内发送100万条消息然后停止。对于这个实验,我希望看到那些5s的MeanRate出现峰值,然后再回到0。

问题

即使没有消息进入(生产者已经停止),我也会在生产者停止发送消息后很长时间内看到MeanRate的非零值: - after stopping producer

同样在Prometheus图中反映为: -

enter image description here

普罗米修斯配置: -

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

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

正确的方法是什么/ prometheus-query / mbean来获得准确的邮件进入率?

1 个答案:

答案 0 :(得分:1)

你应该使用Count并在普罗米修斯一侧取rate() server: ssl: key-store: /path/to/keystore key-store-password: <password> trust-store: /path/trust/store trust-store-password: <password> 。 JMX导出器附带的example config file已经为您选择了正确的指标。

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

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