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的服务的信息正常情况下,可能的问题,第一可能性:是消息队列堵塞了,第二可能性是:连接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 # 这个默认值125,指从redis一次性读取多少条数据,关于这个为什么设置为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 #添加这个参数,设置超时时间,默认值这个是5。
添加 timeout 参数 用来设置 超时时间。来减缓网络带来的影响。具体设置的数值根据你业务的情况进行设置。
3. redis 版本过低。
官方建议的redis版本是2.6版本以上,所以如果我们是使用的redis 2.6 以下的版本,那么很大可能性就是版本导致的问题,我们可以使用2.6 以上的版本进行测试。看看是否是版本导致的问题。
redis的新版本安装文档:redis 安装 与错误
作者:理想三旬
本人承接各种项目维护和python项目开发, 如果觉得文章写得不错,或者帮助到您了,请点个赞,加个关注哦。运维学习交流群:544692191
本文版权归作者所有,欢迎转载,如果文章有写的不足的地方,或者是写得错误的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧