【发布时间】:2017-10-27 17:01:20
【问题描述】:
我想利用 logstash 和 Csv filter plugin 来监视目录中的新文件并将它们处理到 Elasticsearch 中。这很容易通过类似的配置实现:
input {
file {
path => "/csv/*.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
}
}
output {
elasticsearch {
hosts => "${ELASTICSEARCH_URL}"
index => "myData"
document_type => "auto"
}
}
我主要关心的是弹性和诚信。
弹性 - 我观看了 João Duarte 的演讲,他在一年前解释了这方面的挑战。他解释说,logstash(当时)将所有状态都保存在内存中,并且对失败没有弹性。这仍然是真的吗?他暗示可能将状态存储在一个文件中,这个文件现在存在吗?如果 logstash 在读取 Csv 文件的过程中崩溃,我需要它在重新启动时从中断的地方继续。这可能吗?
诚信 - 经过大量谷歌搜索后,Logstash is still incapable of deleting (or renaming) the Csv file after it's read 似乎。我的数据可能不是幂等的,我不能容忍两次读取相同的 Csv。然而,logstash 似乎不会继续尝试一遍又一遍地读取同一个文件,因此有一些机制可以防止读取同一个文件(至少立即)。目前建议什么策略在读取 csv 文件(删除、重命名、移动)后“做某事”,如果这是不可能的,那么清理 csv 文件的最佳实践是什么,因为它们不能永远闲逛。
【问题讨论】:
-
不知道为什么这会被否决?
标签: elasticsearch logstash kibana elastic-stack