ELK|Could not retrieve remote IP address for beats input.

Sommaire de cet article :
  1. 背景
  2. 搜索
  3. 真凶
  4. 后话

ELK日志采集错误一例

背景

公司的ELK系统搭建在阿里云VPC,当然开发环境与生产环境是在两个地域隔离的.正常情况下,每个地域都是独立完整的环境.疫情期间为了节省一些资源,拿掉了开发环境的ELK,直接将日志打到生产的ELK集群
运行了三四个月一直挺正常,可是近来有同事反映,有日志查询不到,但是看日志确实又有其它的日志正常写入.看logstash的日志提示:

[2020-06-15T16:02:09,880][WARN ][logstash.inputs.beats    ] Could not retrieve remote IP address for beats input.
[2020-06-15T16:02:09,880][WARN ][logstash.inputs.beats    ] Could not retrieve remote IP address for beats input.
[2020-06-15T16:02:09,881][WARN ][logstash.inputs.beats    ] Could not retrieve remote IP address for beats input.
[2020-06-15T16:02:09,881][WARN ][logstash.inputs.beats    ] Could not retrieve remote IP address for beats input.
[2020-06-15T16:02:09,881][WARN ][logstash.inputs.beats    ] Could not retrieve remote IP address for beats input.

搜索

拿着Could not retrieve remote IP address for beats input.的错误,去网上搜索,同样的报错很多,官方论坛上也有看似很靠谱的解决方案

https://discuss.elastic.co/t/could-not-retrieve-remote-ip-address-for-beats-input/104815/6

就是改掉代码去掉这个报错!!!
操作

vi /path_to_logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-beats-5.0.2-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 


直接注释掉
如上图.
然后重启logstash.
正常按理说,到这里,错误注释掉了,代码继续执行,应该解决问题了.但是,很快有了新的转机.

真凶

正巧,另个同事过来找我说,在测试环境发送邮件,正文很正常,带附件就发送失败.因为对方是用Java程序写的,本能觉得应该他Java玩的不溜,语法问题.
用Python,写了一个发现,同样的正文和附件,本机很快,到了开发环境就不行.看来是网络问题
登陆阿里云,找到VPC的出口网关,乖乖竟然限制了最大出口流量2M.先放开到20M再说
如上图,发现出口流量顶峰竟然跑到了14M.

后话

后续几天一直在观察,发现流量顶多也就跑到3M,看来之前是限制的太死了,日志一直没出去,才造成了大量的积压.有节约的想法是好事儿,应该再向前一步,加个监控,这样才能及时感知变化.


相关博文

About rainbird

IOS攻城狮
This entry was posted in ELK and tagged , , , , , , , , , . Bookmark the permalink.

发表评论