【问题标题】:Logstash: Limit the message batch size to 10MBLogstash:将消息批量大小限制为 10MB
【发布时间】:2016-06-08 10:12:49
【问题描述】:

问题

我有一个使用 Logstash 作为日志引擎的服务器。 Logstash 实例配置为将其日志保存在 AWS Elasticsearch 实例中。

几个小时前,我在 ES 集群 Kibana 视图中不再看到任何日志:

logstash 日志文件有很多类似的错误:

{:timestamp=>"2016-02-25T14:39:46.232000+0000", 
 :message=>"Got error to send bulk of actions: [413] 
 {\"Message\":\"Request size exceeded 10485760 bytes\"}", 
 :level=>:error}

我已与 AWS 支持人员交谈,他们确认他们的 ES 机器将请求大小限制为 10MB。

我尝试了什么

  • 在配置中设置flush_size => 50

问题

如何将 Logstash 请求大小限制为 ES 强制执行的 10MB 限制?

【问题讨论】:

    标签: amazon-web-services elasticsearch logstash logstash-configuration


    【解决方案1】:

    我有同样的问题,要解决我在输出中设置flush_size => 100:logstash 的elasticsearch 配置。

    作为旁注,在您的域的 ES 仪表板中检查“可用存储空间”。

    编辑:

    对于此更改后的第一次运行,我从命令行而不是作为恶魔运行 logstash:

    /opt/logstash/bin/logstash -f /etc/logstash/conf.d/
    

    【讨论】:

      【解决方案2】:

      github 端的错误:https://github.com/awslabs/logstash-output-amazon_es/issues/55

      我也降低了flush_size => 10,但有时还是有问题。所以我什么时候跟踪源,创建了几个输出,向它们添加 ID 以帮助跟踪并添加一个后备大小:retry_max_items => 1

      然后我使用 logstash API,当 logstash 不再输出任何事件时,找到锁定的输出:

      curl -XGET 'localhost:9600/_node/stats/pipeline?pretty' -s | jq . | awk 'BEGIN {FS="{|}|: |\," } /"in":/ { i=$2 ; next }; /"out":/ { o=$2 ; next } /"id":/ { id=$2 }; /name/ { print $0, i-o , id } '

      in-out大于零的输出是无法刷新到amazon_es的输出

      有了这个,我找到了问题的根源,并且我有将近 10MB 的事件。所以我的解决方案是将它们截断到一个合理的大小并最终解决这个问题。

      所以我的设置现在是这样的:

      filter {
      (...)
      # truncate big fields events to ~1MB
      # need the logstash-filter-truncate plugin
        truncate {
          length_bytes => "1048576"
          fields => [ "message", "error" , "error_orig" ]
        }
      (...)
      }
      output {
      (...)
            amazon_es {
              id => "producer"
              hosts => "${ES_HOSTNAME}"
              index => "logstash-%{+YYYY.MM.dd}-%{[type]}-%{[environment]}"
              document_type => "%{[type]}"
              flush_size => 10
              # if still fails, flush one by one until success
              retry_max_items => 1
            }
      (...)
      }
      

      希望对遇到同样问题的人有所帮助

      【讨论】:

      • 对于那些像我一样复制和粘贴以上内容并想知道为什么它似乎不起作用的人,1073741824 字节约为 1GB。 1MB 字节实际上是 1048576。
      • 感谢@smilin_stan,我已经更正了上面的例子。在我的现实生活配置中,我有 128k 的限制,所以我也没有注意到我的错误 :)
      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多