我已经使用jmx_prometheus_javaagent作为java代理在本地启动了Kafka代理实例。
我对当前给定主题的消息速率感兴趣,并在Grafana仪表板中呈现相同的消息。在jconsole中探索MBean,我可以看到一个名为kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=ABCD
的对象,其属性如MeanRate,OneMinuteRate,Count等似乎符合我的目的: -
为了尝试我的设置,我使用一个简单的KafkaProducer向本地kafka经纪人发送非常小的消息,该KafkaProducer能够在少于5秒内发送100万条消息然后停止。对于这个实验,我希望看到那些5s的MeanRate出现峰值,然后再回到0。
问题
即使没有消息进入(生产者已经停止),我也会在生产者停止发送消息后很长时间内看到MeanRate的非零值: -
同样在Prometheus图中反映为: -
普罗米修斯配置: -
- 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来获得准确的邮件进入率?
答案 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提供了有关不同仪器/监控系统处理计数器的各种方式的更多信息。