logstash - Logstash HTTP 输出插件中的 UnknownException

标签 logstash

我的 logstash 中的一些请求使 http 输出插件失败,并且日志显示

[2020-10-16T18:44:54,574][ERROR][logstash.outputs.http ] [HTTP Output Failure] Could not fetch URL {:url=>"https://www.example.com/api.php", :method=>:post, :body=>"{"id":"test"}", :headers=>{"Content-Type"=>"text/plain"}, :message=>"Connection reset", :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}

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

我的 logstash 输出配置是

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

最佳答案

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

  ::Manticore::Timeout,
  ::Manticore::SocketException,
  ::Manticore::ClientProtocolException,
  ::Manticore::ResolutionFailure,
  ::Manticore::SocketTimeout

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

我可以想到两个选项。

  1. 调试在网络级别发生连接重置的原因并解决根本问题。 Ex: API端防火墙或网络白名单,API需要相互认证
  2. 如果 1 不是一个选项并且您确定重试是一个选项并且会解决您的问题,请 fork github 存储库,将 Manticore::UnknownException 添加到可重试异常列表中,并且使用该版本的插件。

关于logstash - Logstash HTTP 输出插件中的 UnknownException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64680262/

相关文章:

java - 是否可以直接从jvm应用程序登录到Logstash?

elasticsearch - 为什么我的默认RabbitMQ配置具有如此低的吞吐量?

linux - Logstash高可用部署

ruby - 如何在 logstash 配置文件中添加 ruby​​ 代码?

elasticsearch - 可视化和分析来自Kafka的数据

ruby - Grok RSpec 测试失败

elasticsearch - 使用kibana 4时可以将其全部从elasticsearch中删除

elasticsearch - 是否可以通过Logstash中的先前值更改字段

elasticsearch - 创建Elasticsearch映射时为非法的参数

proxy - 为Logstash配置代理