2017-08-08 23 views
1

我目前正在嘗試使用docker-kafka新環境測試kafka保留日誌。Kafka設置默認保留日誌和測試

我用config/server.properties並設置日誌保留如下:

log.retention.ms=2000 
log.retention.check.interval.ms=2000 

創建主題,並加入消息的話,我會通過轉到輸出日誌的位置測試日誌的大小。在我的情況是在/tmp/kafka-logs/<topic-name>。然後只需ls -l即可查看以字節爲單位的大小。

添加更多消息會增加日誌文件的字節大小。如果有更好的方法來檢查日誌,請告訴我。

運行: $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic <topic-name>

我會得到沒有配置輸出。日誌文件在2000毫秒後不會被刪除。

卡夫卡文檔:

毫秒,以保持一個日誌文件中刪除它(在 毫秒)前的數字,如果沒有設置,將使用log.retention.minutes值

但是,設置一個主題級配置有: $ bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic <topic-name> --config retention.ms=2000

與標題檢查CONFIGS: $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic <topic-name>

我看到保留是爲主題設置的。此外,再次檢查日誌大小,它可能會在2000毫秒後刪除日誌,但它會在短時間內清除日誌。

如何爲所有創建的主題設置默認配置?具體涉及日誌保留時間?

此外,還有一個額外的附加問題,是否有創建每個單獨主題的配置文件?我主要是問,因爲我知道如何通過cli設置主題級別的配置,但很好奇,看看這些主題級別的配置是否保存在某個地方。

回答

0

服務器重新啓動後,全局配置用於使用默認配置(沒有覆蓋現有配置的主題級配置)和服務器重新啓動後創建的任何新主題的現有主題。

我再次測試了另一個配置(僅與保留日誌時間有關),並確認對全局配置所做的任何更改均未針對現有主題或新主題進行設置。在另一臺服務器重新啓動後,設置了「新」全局配置。

+1

代理啓動後全局配置將加載到內存,因此任何更改只能在服務器重新啓動後生效。 – amethystic

+0

@amethystic啊我明白了,謝謝! –

1

全局配置log.retention.{hours|minutes|ms} controls the default behavior for all topics. The topic-level config retention.ms`適用於單個主題。

就你而言,由於默認參數值爲7天,因此在設置主題級配置之前,日誌並未被刪除。

+0

我在設置全局配置文件後嘗試創建新主題,但似乎沒有爲所有新主題設置默認行爲 –

+0

您是如何驗證該問題的? – amethystic

+0

我去了日誌的位置,並檢查了日誌文件的字節大小。我在我的文章中也提到了這一點,但我這樣做了:「在我的情況下,它是在'/ tmp/kafka-logs/',然後只是'ls -l'來查看以字節爲單位的大小。另外,我只是補充一點,我不知道做這種檢查的最佳方式,但這種方式似乎至少做到了 –