使用Kafka偏移量来计算书面消息统计信息

时间:2019-01-17 22:36:37

标签: apache-kafka

我想从Kafka主题中获得一些统计数据:

  • 全部书面信息
  • 最近12个小时,最后1个小时内的总计书面消息...

我是否可以安全地假设,在给定的时间戳下(使用getOffsetsByTimes读取主题中每个分区的偏移量,应该可以得到在该特定时间内写入的消息数?

我可以求和每个分区的所有偏移量,然后计算时间戳1和时间戳2之间的差。有了这些数据,我应该能够计算出很多统计信息。

在某些情况下,这些数据可能给我带来错误的结果?我不需要100%的精度,但是我希望有一个可靠的解决方案。当然,假设该主题未删除/重置。

还有其他不使用第三方工具的选择吗? (我无法轻松安装其他工具,并且我的应用程序中需要数据)

1 个答案:

答案 0 :(得分:2)

  

(使用getOffsetsByTimes)应该给我特定时间写入的消息数量?

Kafka:权威指南中,它提到getOffsetsByTime不是基于消息的,而是基于段文件的。这意味着时间索引查找不会读入段文件中,而是获取包含您感兴趣的时间的第一个段。(自本书发行以来,在较新的Kafka发行版中可能已更改)

如果您不需要准确性,那应该没问题。请注意,压缩的主题没有一个接一个的顺序偏移,因此,简单的abs(offset@time2 - offset@time1)对于“主题中的现有消息总数”将不起作用。

否则,代理会公开很多JMX指标,例如字节入和消息速率,例如,您可以使用Grafana对其进行汇总和绘制。