elasticsearch,logstash,logstash-configuration,Amazon Web Services,elasticsearch,Logstash,Logstash Configuration" /> elasticsearch,logstash,logstash-configuration,Amazon Web Services,elasticsearch,Logstash,Logstash Configuration" />

Amazon web services Logstash:将消息批大小限制为10MB 问题

Amazon web services Logstash:将消息批大小限制为10MB 问题,amazon-web-services,elasticsearch,logstash,logstash-configuration,Amazon Web Services,elasticsearch,Logstash,Logstash Configuration,我有一个带有Logstash的服务器作为日志引擎。Logstash实例配置为将其日志保存在AWS Elasticsearch实例中 几个小时前,我在ES cluster Kibana视图中不再看到任何日志: logstash日志文件有许多类似的错误: {:timestamp=>"2016-02-25T14:39:46.232000+0000", :message=>"Got error to send bulk of actions: [413] {\"Message\":

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

几个小时前,我在ES cluster 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\u size=>50
问题
我如何将日志存储请求大小限制为ES强制执行的10MB限制?

我也遇到了同样的问题,为了解决这个问题,我在输出中设置了
flush\u size=>100
:日志存储的elasticsearch配置

作为旁注,请在ES dashboard中为您的域选中“可用存储空间”

编辑:

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

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/
github端的bug:

我还降低了
flush\u size=>10
,但有时仍会出现问题。因此,我在跟踪源时,创建了几个输出,向它们添加ID以帮助跟踪,并添加了一个后备大小:
retry\u max\u items=>1

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

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

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

通过这一点,我找到了问题的根源,并发现我有近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的限制,所以我也没有注意到我的错误:)