ELK中Logstash失效問題處理記錄

環境:

系統均爲CentOS 7.5 64位

Elasticsearch:6.0.0

Logstash:6.0.1

Kibana:6.0.0

filebeat:6.0.1

集羣有三臺服務器,其中Elasticsearch 主節點master,Logstash,Kibana都部署在服務器A上,其餘B和C分別部署Elasticsearch子節點,與A一併組成Elasticsearch集羣,而filebeat部署在生產環境上負責採集應用日誌

 

故障問題:

某日機房停電後發現logstash日誌無限反饋

Could not retrieve remote IP address for beats input 

並伴有 

[WARN ][io.netty.channel.AbstractChannelHandlerContext] An exception 'java.lang.NullPointerException' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
java.io.IOException: Connection reset by peer

的java空指針異常信息

 

處理過程:

1.首先嚐試重啓整個Elasticsearch集羣,包括所有filebeat,問題依舊

2.其次調整服務器所在虛擬機內存和CPU,以及硬盤i/o份額,甚至重啓虛擬機服務端所在物理機,問題依舊

3.谷歌到elasticsearch社區裏的問答板塊有老外表示找到logstash根目錄下的vendor/bundle/jruby/2.3.0/gems/logstash-input-beats-5.0.3-java/lib/logstash/inputs/beats/message_listener.rb文件,找到

begin
        hash.get("@metadata").put("ip_address", ctx.channel().remoteAddress().getAddress().getHostAddress())
      rescue #should never happen, but don't allow an error here to stop beats input
        input.logger.warn("Could not retrieve remote IP address for beats input.")
      end

並刪除之後可解決該問題,操作後問題依舊

4.依然是谷歌elasticsearch社區裏的問答板塊有老外表示升級logstash版本可解決,於是下載了logstash-6.2.0,幹掉當前正在運行的logstash進程,確保默認的服務端口5044不再被佔用,然後拷貝原logstash的config目錄下的conf後綴配置文件和patterns目錄到新的logstash的對應目錄下,表示繼承原有的日誌過濾規則和配置,之後啓動logstash-6.2.0,打開kibana,發現能夠正常展示出日誌,問題解決

 

總結:

1.在elasticsearch社區裏查詢解決方案的時候發現較多的人認爲是logstash內置的與filebeat通訊的插件的問題,在升級插件或者logstash後得到解決,疑似爲舊版本的bug。

2.在升級logstash的時候選用的新版本注意不要和當前elasticsearch以及filebeat,kibana等版本差距過大,避免出現不兼容等問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章