我怎么知道Kafka的主题已经满了?

ne5o7dgx  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(320)

假设我用一个分区配置了一个kafka代理

log.retention.bytes=80000 
log.retention.hours=6

如果我尝试用producerapi向代理发送一条记录,而主题的日志在保留期之前就已满,会发生什么情况?
我的留言会被删除吗?或者Kafka会从旧信息中释放一些空间,并添加我的信息?
如何知道主题是否已满,日志是否已被删除,然后才能使用?
有没有一种方法可以在主题已满时监视或公开度量?

ghhaqwfi

ghhaqwfi1#

这不完全是真的,一个主题永远不会满,至少在默认情况下是这样。
我说默认是因为像@mukesh说的 cleanup.policy 将在达到保留时间或大小限制时丢弃旧段,但默认情况下没有大小限制只有时间限制和处理该限制的属性 retention.bytes (默认设置为 -1 ).
它只会让消息有时间限制,注意 retention.bytes 值是按分区设置的,因此要指定主题的限制,必须乘以该主题上的分区数。
编辑:kafka导出了大量的度量(在jmx中),在这些度量中,您可以找到关于片段的全局度量(总数、每个主题的编号、大小、滚动片段的速率等等)。

nhhxz33t

nhhxz33t2#

如果我尝试用producerapi向代理发送一条记录,而主题的日志在保留期之前就已满,会发生什么情况?我的留言会被删除吗?或者Kafka会从旧信息中释放一些空间,并添加我的信息? cleanup.policy 属性,默认情况下为 delete ,表示“当达到保留时间或大小限制时,删除策略将丢弃旧段。”
因此,如果您发送带有producer api的记录并且主题已满,它将丢弃旧的段。
如何知道主题是否已满,日志是否已被删除,然后才能使用?有没有一种方法可以在主题已满时监视或公开度量?
您可以使用以下脚本获取分区大小:

/bin/kafka-log-dirs.sh --describe --bootstrap-server : --topic-list

您需要开发一个脚本,该脚本将在脚本之上运行,以获取主题的当前大小,并定期将其发送给datadog。在datadog中,您可以创建小部件,一旦大小达到特定阈值,它将触发适当的操作(例如发送电子邮件警报)。

相关问题