elasticsearch logstash的持久状态在哪里?
我想利用logstash和来监视目录中的新文件,并将它们处理为Elasticsearch。通过类似于以下配置,这是很容易实现的:elasticsearch logstash的持久状态在哪里?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我想利用logstash和来监视目录中的新文件,并将它们处理为Elasticsearch。通过类似于以下配置,这是很容易实现的: input { file { path => "/csv/*.csv" start_position => "beginning" sincedb_path => "/dev/null" } } filter { csv { separator => ",
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"
}
}
我主要关心的是弹性和完整性
弹性-一年多前,我在他解释这方面挑战的地方观看了演讲。他解释说,logstash(当时)保存着内存中的所有状态,无法抵御失败。这仍然是真的吗?他暗示可能在文件中存储状态,这个文件现在存在吗?如果在读取CSV文件的过程中,LogSTASH崩溃,我需要它在它重新启动时停止的地方继续。这可能吗
诚信——经过大量的谷歌搜索,似乎是这样的。我的数据可能不是幂等的,我不能容忍读取同一个Csv两次。然而,logstash似乎不会继续反复尝试读取同一个文件,因此有一些机制可以防止读取同一个文件(至少是立即读取)。在读取Csv文件(删除、重命名、移动)后,此时建议采取什么策略来“做点什么”,如果这不可能,那么清理Csv文件的最佳做法是什么,因为它们不能永远挂起。从5.2开始就在代码中,到5.6,它们被视为生产质量。这将把管道中的事件持久化到本地文件,该文件将在重新启动时读取
至于不重读文件,这多年来一直是Logstash的核心部分。这种机制称为sincedb
,您指定的文件插件具有sincedb参数来配置它sincedb_path
指定将使用的sincedb_文件本身,而sincedb_write_interval
指定使用文件偏移量更新数据库的频率
为了清理您的文件,Logstash绝对不提供这样的机制,而是有意将其留给操作员。为此有多种机制,其中只有一种是cron作业,每小时运行一次,如下所示:
find /var/log/csv-archive/ -atime 0.083 -type f |xargs rm
用于删除一小时内未访问的所有文件。还有其他方法。不知道为什么这会被否决?