elasticsearch logstash的持久状态在哪里?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" /> elasticsearch logstash的持久状态在哪里?,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack" />

elasticsearch logstash的持久状态在哪里?

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 => ",

我想利用logstash和来监视目录中的新文件,并将它们处理为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"
    }
}
我主要关心的是弹性和完整性

弹性-一年多前,我在他解释这方面挑战的地方观看了演讲。他解释说,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

用于删除一小时内未访问的所有文件。还有其他方法。

不知道为什么这会被否决?