我使用了多行logstash过滤器。它在少数情况下失败。
例如,我尝试使用多个块解析报表。我使用多行过滤器形成了这些块/段。
Page 1 Date Title Author
Data................................................................................
....................................................................................
<delimiter>
当我使用100块测试时,每次它都没有正确附加1或2块。 需要
Page 1 Date Title Author
作为单个消息并解析它并作为另一个消息保留
注意:
另一个观察是,有时块的第一部分说
Page 21 Date Title Author
被解析,然后是
Page 20 Date Title Author
Data................................................................................
....................................................................................
<delimiter>
prev块然后最后解析不完整块的剩余部分。 这是某种多线程问题吗?
修改 我的配置文件看起来像这样:
input{
file{
path=>"/home/tudit/input.txt"
start_position=>"beginning"
}
}
filter{
multiline{
pattern => "^\f"
negate => true
what => "previous"
enable_flush=>"true"
}
grok{
match=>["message","Page%{SPACE}%{NUMBER:page_no:int}"]
}
grok{
match=>["message","(?<date>%{MONTHDAY}%{SPACE}%{MONTH}%{SPACE}%{YEAR})"]
}
grok{
match=>["message","Author:%{SPACE}%{WORD:author}"]
}
grok{
match=>["message","Title:%{SPACE}%{WORD:title}"]
}
date{
match => [ "date", "dd MMM YYYY" ]
}
}
output {
stdout{
codec=>"rubydebug"
}
elasticsearch{
embedded=> "true"
host=> "localhost"
}
}
\ f是分隔符。