遇到可重试错误。将使用指数退避重试 413

Encountered a retryable error. Will Retry with exponential backoff 413

Logstash 不断遇到无法将日志发送到 AWS ElasticSearch 的以下错误消息。

[2021-04-28T16:01:28,253][ERROR][logstash.outputs.amazonelasticsearch] Encountered a retryable error. Will Retry with exponential backoff {:code=>413, :url=>"https://search-xxxx.ap-southeast-1.es.amazonaws.com:443/_bulk"}

这就是为什么我总是需要重新启动 logstash 并且无法配置它导致该问题的原因。关于 Logstash 文档,我将 pipeline.batch.size 大小减少到 100,但没有帮助。请让我知道如何解决该问题。谢谢

pipeline.batch.size: 125
pipeline.batch.delay: 50

413 响应是“负载太大”。重试此操作没有多大意义,因为它可能会永远重复并关闭通过管道的事件流。如果 logstash 和 elasticsearch 之间存在代理或负载平衡器,则可能返回错误,而不是 elasticsearch,在这种情况下,您可能需要重新配置代理。

amazonelasticsearch 接受的最大负载大小将 depend 取决于您 运行 使用的实例类型(向下滚动至网络限制)。对于某些实例类型,它是 10 MB。

在 logstash 中,一批事件在发送到 elasticsearch 时被分成 20 MB 的块。无法调整 20 MB 的限制(除非您想编辑源代码并构建自己的插件)。但是,如果有单个大事件,则必须在一个请求中发送,因此仍然可以发送更大的请求。

由于 20 MB 大于 10 MB,如果您的批处理大小超过 10 MB,这将是一个问题。除了 413 错误之外,我认为您对批量大小没有任何可见性。您将不得不继续减少 pipeline.batch.size 直到错误消失。

我已经解决了我们需要调整的问题,以便根据 max_content_length 选择正确的 ES 实例大小。

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-limits.html