logstash multiline 把文件处理为单个 event

时间:2023-03-08 18:32:38

需求

多个文本文件需要存到 ES 中去。

每一个文件存放为一个 doc。

每一个文件都是多行的,行数不定,且没有固定的内容格式。

update time: Mon Jun  :: CST
package name: AD-4.0-M6000-LiDuan(--).ssu
SANGFOR-M6000-AD-4.0.
BUILD mother_1. update time: Fri Mar :: CST
package name: AD5.().ssu
SANGFOR-M6000-AD-5.6
BUILD20150105 update time: Fri Mar :: CST
package name: AD6.().ssu
SANGFOR-M6000-AD-6.4
BUILD20160223
GCS_PRODUCT1.2.0

实现

可以通过 logstash-filter-multiline 插件,配置 pattern 为 "EOF",可以实现把每一个文档当作一个 Event 处理。

input {
file {
path => "/home/jdu/unzip/*/*/*/*/*"
discover_interval =>
start_position => "beginning"
ignore_older =>
sincedb_path => "/dev/null"
stat_interval => codec => multiline { //multiline 插件配置
pattern => "EOF" //每行对 EOF 进行匹配尝试,如果不匹配将应用 what 的操作
negate => true //为 true 才会应用 what 的操作
what => "previous" //不匹配 pattern 的行都当作前面一个 event 的内容
}
}
}