zoukankan      html  css  js  c++  java
  • 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 安装 与错误

  • 相关阅读:
    JSON 体验JSON (二)json格式化日期
    让D2006的控件面板回到D7的样式
    突破网站限制 复制网页内容
    欢迎光临
    加密Access数据库
    取得程序中一些特殊文件夹的位置
    连接带密码的Access数据库
    我被强暴,老公这样回答是人么?(转~非黄)
    【WinCE版凯立德】2012春季版地图下载
    刚刚拍到的日环食金星凌日
  • 原文地址:https://www.cnblogs.com/operationhome/p/9733097.html
Copyright © 2011-2022 走看看