重新启动 Logstash 后,有时会观察到 Logstash 会重复日志事件。想知道什么是正确的申请方式start_position
, sincedb_path
, sincedb_write_interval
配置选项。
- 当同一位置有多个文件时会发生什么情况(如下例所示
/home/tom/testData/*.log
) - 当文件轮换发生时会发生什么,例如
XXX.log
文件重命名为XXX-<date>.log
和一个新的XXX.log
文件已创建。在这种情况下,名称不会改变,但 inode 会改变。
如果有人能对此有所启发,我将不胜感激。
input {
file {
path => "/home/tom/testData/*.log"
type => "log"
start_position => "beginning"
sincedb_path => "/persistent/loc"
sincedb_write_interval => 10
}
}
最佳答案
start_position(开始或结束)仅用于logstash尚未看到的文件。使用“开始”的唯一原因是当您尝试加载较旧的文件时。
sincedb_path 只需是一个logstash 对注册表具有写权限的目录即可。
sincedb_write_interval 定义logstash 写入sincedb 注册表的频率。较大的值会让您面临 Logstash 崩溃的风险。
当您有多个与您的 glob 匹配的文件时,logstash 通过在注册表中包含多个条目来单独跟踪它们。
注册表包含 inode 号,因此logstash知道在这种类型的轮换中要做什么。
关于Logstash 文件输入 : sincedb_path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573097/