我想从一个Kafka主题中得到一些统计数据:
已写入邮件总数
在过去12小时内,最后一小时内,总共写入的邮件。。。
我可以安全地假设在给定的时间戳内读取主题中每个分区的偏移量(使用 getOffsetsByTimes
)你应该告诉我在那个特定时间写的信息的数量吗?
我可以对每个分区的所有偏移量求和,然后计算时间戳1和时间戳2之间的差。有了这些数据,我应该能计算出许多统计数字。
有时这些数据会给我错误的结果?我不需要100%的精度,但我希望有一个可靠的解决方案。当然,假设主题没有被删除/重置。
还有其他不使用第三方工具的替代方案吗(我无法轻松安装其他工具,我需要应用程序中的数据)
1条答案
按热度按时间mcdcgff01#
(使用getoffsetsbytimes)应该告诉我在该特定时间内写入的消息数吗?
在《Kafka:权威指南》中提到
getOffsetsByTime
不是基于消息,而是基于段文件。这意味着时间索引查找不会读入段文件,而是获取包含您感兴趣的时间的第一个段(这一点可能在Kafka新书发行后有所改变)如果你不需要准确度,这应该没问题。请注意,压缩主题没有顺序排列的偏移量,因此
abs(offset@time2 - offset@time1)
对于“一个主题中的所有现有消息”不太适用。否则,代理会公开大量jmx度量,比如字节数和消息速率,您可以使用grafana来聚合和绘制这些度量。