我有一台服务器使用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限制?
答案 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
}
(...)
}
希望这可以帮助有同样问题的人