Logstash:将邮件批量大小限制为10MB

时间:2016-02-25 14:52:18

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

问题

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

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

enter image description here

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限制?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,为了解决这个问题,我在输出中设置了flush_size => 100:为logstash设置了elasticsearch配置。

作为旁注,请在您的域的ES信息中心中查看“免费存储空间”。

编辑:

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

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

答案 1 :(得分:1)

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
      }
(...)
}

希望这可以帮助有同样问题的人