Logstash HTTP输出插件中的未知异常

Logstash HTTP输出插件中的未知异常,logstash,Logstash,我日志中的一些请求未能通过http输出插件,日志显示 [2020-10-16T18:44:54574][ERROR][logstash.outputs.http][http 输出失败]无法获取URL {:url=>”https://www.example.com/api.php“,:method=>:post, :body=>“{”id:“test”},:headers=>{“Content Type”=>“text/plain”}, :message=>“连接重置”,:class=>“Mant

我日志中的一些请求未能通过http输出插件,日志显示

[2020-10-16T18:44:54574][ERROR][logstash.outputs.http][http 输出失败]无法获取URL {:url=>”https://www.example.com/api.php“,:method=>:post, :body=>“{”id:“test”},:headers=>{“Content Type”=>“text/plain”}, :message=>“连接重置”,:class=>“Manticore::UnknownException”, :backtrace=>[“/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/manticore-0.6.4-java/lib/manticore/response.rb:37:in
block in initialize'“/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/manticore-0.6.4-java/lib/manticore/response.rb:79:in
call', “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:239:in
send_event'“/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:175:in
send_events', “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:124:in
multi_-receive'”,org/logstash/config/ir/compiler/OutputStrategyExt.java:118:in
multi_-receive', org/logstash/config/ir/compiler/AbstractOutputDelegatorExt.java:101:in
multi_receive'”,/usr/share/logstash/logstash core/lib/logstash/java_pipeline.rb:239:in
block in start_workers',:will_retry=>false}

原因是什么?以及如何修复它,即稍后重试

我的日志存储输出配置为

output {
    if [message] == "..." {
        http {
            format=>"message"
                http_method=>"post"
                url=>"xxx"
                message=>'...'
        }
    }
}

Logstash Http输出插件使用Manticore Http客户端。如果异常属于以下类别,它将自动重试。检查

对于您的用例,http客户端正在获取
Manticore::UnknownException
,这不是重试默认列表的一部分。我看不到使用配置覆盖它的方法

我可以想出两个选择

  • 调试在网络级别发生连接重置的原因,并解决根本问题。例如:防火墙或网络白名单在API端,API需要相互验证
  • 如果1不是一个选项,并且您确信重试是一个选项,并且可以解决您的问题,那么请退出github repo,将
    Manticore::UnknownException
    添加到可重试异常列表中,并使用该版本的插件

  • 您可以实现重试策略,如果这是一个临时问题,那么这可能很有用。如果您一直面临这个问题,我建议您查看API端点的网络连接,看看是否存在导致连接重置的错误配置,检查API端是否存在阻止连接的防火墙或网络白名单,或者API是否需要相互身份验证,并且是否希望logstash http输出显示客户端证书。@karanshah但是为什么连接重置不会触发重试?能否用logstash输出配置更新问题?@karanshah已更新(其实没有特别设置)
    retry\u failed
    选项确定logstash输出插件是否会重试请求。默认情况下,该选项设置为true,因此它应该无限次地重试。我很惊讶为什么在您的情况下不会发生这种情况。可以在错误消息中看到
    will\u retry=>false
    ,需要查看输出插件如何确定何时重试请求我不知道什么时候可以。
      ::Manticore::Timeout,
      ::Manticore::SocketException,
      ::Manticore::ClientProtocolException,
      ::Manticore::ResolutionFailure,
      ::Manticore::SocketTimeout