filebeat output redis 報錯 i/o timeout
阿新 • • 發佈:2018-12-12
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 引數 用來設定 超時時間。來減緩網路帶來的影響。具體設定的數值根據你業務的情況進行設定。