1. 程式人生 > >filebeat output redis 報錯 i/o timeout

filebeat output redis 報錯 i/o timeout

filebeat output  redis 報錯 i/o timeout

先把報錯內容貼出來。

ERROR redis/client. go:214 Failed to RPUSH to redis list with write tcp 172.16.73.32:54822->172.16.73.33:52611:   i/o timeout
ERROR redis/client. go:92  Failed to publish events: write tcp 1172.16.73.32:54822->172.16.73.33:52611: i/o timeout

報錯內容是寫入超時了。解析問題,第一可能性:是訊息佇列堵塞了,第二可能性是:連線redis 伺服器的網路不太好。

1 redis訊息佇列阻塞

我的錯誤就是這個,我在logstash 進行讀取redis 的時候配置出了問題,解析也出了問題,所以導致訊息佇列阻塞了,filebeat 也自然寫不進去了。

解決辦法:

先檢查 logstash 的input的配置:

正確配置例項:

input {
    redis {
      host => "172.16.73.33"  #redis ip
      port => "52611"         #redis 埠
      password =>"123456"     #redis 密碼
      db 
=> 9          # 指定redis 庫 batch_count => 1     # 這個 data_type => "list" #資料型別 key => "filebeat" #key 值名稱    } }

output 的配置也需要指定正確 ,否則輸出不出去,也是會堵塞的。

檢查 input 堵塞了還是 output  堵塞了,我們可以先讓output 輸出到控制檯 ,然後看是否可以輸出資料,可以的話就是 ouput  的配置有誤。

反之則是我們的 input 獲取不到訊息佇列 ,檢查input 的配置是否正確。

 2. 連線redis 網路不太好。

由於一些網路原因會導致我們連線redis 會超時 ,最後導致 io  timeout .我們可以在filebeat 裡面進行設定超時時間來避免這一問題。

filebeat.yml

output.redis:
  hosts: ["172.16.73.33:52611"]   password: "123456"  key: "filebeat"  db: 9  timeout: 60   #新增這個引數,設定超時時間。

新增 timeout  引數 用來設定 超時時間。來減緩網路帶來的影響。具體設定的數值根據你業務的情況進行設定。