在使用logstash讀取kafka中的數據時過一段時間之後logstash會報出leave group的錯誤,此後數據不再讀入。懷疑是由於kafka每次poll的量太大或者poll的間隔太小,導致上一次度的數據還沒有消費完,就又要去poll,但實際上此時無法繼續去拉取新數據,這樣如果時間久了,可能就會認爲consumer停止了通信,從而被驅除group。
根據自己的應用場景數據量對input中的如下三個配置項做出了測試後的調整:
max_poll_interval_ms=>"60000"
max_poll_records=>"50"
consumer_threads=>"5"
另外,根據上面的猜測,又將logstash的filter中對數據進行處理的filter中的處理邏輯進行了優化,如果使用的是grok插件解析,可以將某兩個較長的字段合併爲一個字段,然後再在後面用ruby插件將其拆分,這樣或許會提高grok中的處理性能,結合上面兩個方面的優化調整,問題得以解決。