我正在使用logstash(v2.3.3-1)索引从S3到AWS ElasticSearch的大约800,000个文档,有些文档被索引2到3次,而不是只有一次。
文件是静态的(没有更新或触摸它们)并且它们非常小(每个大约是1.1KB)。
该过程需要很长时间才能在t2.micro(~1day)上运行。
我正在使用的配置是:
input {
s3 {
bucket => "$BUCKETNAME"
codec => "json"
region => "$REGION"
access_key_id => '$KEY'
secret_access_key => '$KEY'
type => 's3'
}
}
filter {
if [type] == "s3" {
metrics {
meter => "events"
add_tag => "metric"
}
}
}
output {
if "metric" in [tags] {
stdout { codec => line {
format => "rate: %{[events][rate_1m]}"
}
}
} else {
amazon_es {
hosts => [$HOST]
region => "$REGION"
index => "$INDEXNAME"
aws_access_key_id => '$KEY'
aws_secret_access_key => '$KEY'
document_type => "$TYPE"
}
stdout { codec => rubydebug }
}
}
我现在运行了两次同样的问题(进入不同的ES索引),被索引的文件> 1x每次都不同。
感激不尽的任何建议!
答案 0 :(得分:1)
s3输入非常脆弱。它记录最后一个文件的处理时间,因此不会处理共享相同时间戳的任何文件,并且无法从同一个桶读取多个logstash实例。正如你所看到的那样,确定要处理哪些文件的速度也很慢(这里有很大一部分责任归于亚马逊)。
当我使用单个logstash读取文件,然后删除(或备份到另一个存储桶/文件夹)文件以使原始存储桶尽可能为空时,