【发布时间】:2020-11-04 12:38:09
【问题描述】:
我的logstash中的一些请求使http输出插件失败,并且日志显示
[2020-10-16T18:44:54,574][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:incall'", “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:239:insend_event'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:175:insend_events'", “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-http-5.2.4/lib/logstash/outputs/http.rb:124:inmulti_receive'", "org/logstash/config/ir/compiler/OutputStrategyExt.java:118:inmulti_receive'", “org/logstash/config/ir/compiler/AbstractOutputDelegatorExt.java:101:inmulti_receive'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:239:inblock in start_workers'"], :will_retry=>false}
原因是什么?以及如何修复它,即稍后重试?
我的logstash输出配置是
output {
if [message] == "..." {
http {
format=>"message"
http_method=>"post"
url=>"xxx"
message=>'...'
}
}
}
【问题讨论】:
-
您可以实施重试策略,如果这是一个临时问题,这可能很有用。如果您一直面临这个问题,我建议您查看 API 端点的网络连接,以查看是否存在导致连接重置的错误配置,检查 API 端是否存在阻止连接的防火墙或网络白名单或如果 API 需要相互身份验证并且期望 logstash http 输出呈现客户端证书。
-
@karanshah 但为什么连接重置不会触发重试?
-
你能用logstash输出配置更新问题吗?
-
@karanshah 已更新(实际上并没有什么特别的设置)
-
retry_failed选项决定了logstash 输出插件是否会重试请求。默认情况下设置为 true,因此它应该无限重试。我很惊讶为什么在你的情况下没有发生这种情况。可以在错误消息中看到will_retry=>false,需要查看输出插件如何确定何时重试以及何时不重试。
标签: logstash