在Logstash中将整个文件解析为每个事件

问题描述

我想用Logstash监视包含单个文件的目录,每个文件描述一个事件并由每个键值对组成

   > /var/log/dir/history.*
   > head /var/log/dir/history.1234
     key1 = value1
     key2 = value2
     ...

kv过滤器插件可以解析键值对,但是输入需要某种多行才能将每个文件合并为一个事件。

如果事件在模式匹配处开始/结束,则多行输入插件还需要一个模式来匹配what-keyword。

由于我将整个文件视为一个事件,所以没有真正的正则表达式可以匹配。

如何使用Logstash的多行代码一个文件作为一个事件解析为输入,还是针对该用例有更好的输入插件

解决方法

https://discuss.elastic.co/t/log-file-parsing-and-ingesting-into-es/247806/6那里获得解决方案

也就是说,要提取整个文件,诀窍是匹配不存在的模式

codec => multiline {
  pattern => "^Spalanzanidonotmatchinanycase"
  negate => true
  what => "previous"
  auto_flush_interval => 2
}