ELK-filebeat配置多行解析(四)
Filebeat收集的文件可能包含跨越多行文本的消息。例如,Java堆栈。为了正确处理这些多行消息,需要在filebeat.yml文件中配置多行设置,以指定哪些行是单个消息的一部分.
##一、 简单示例
|
|
##二. 配置项说明 ###2.1 multiline.pattern 指定正则表达式。匹配的行被视为前一行的延续,其他行视为起始行。
与logstash的正则表达式有所不同。filebeat支持的正则表达式https://www.elastic.co/guide/en/beats/filebeat/6.8/regexp-support.html
###2.2 multiline.negate 定义是否为否定模式。 默认为false,匹配的行会被视为前一行的续行,不匹配的视为多行事件的开始 设置为true 匹配的行被视为多行事件的开始,不匹配的行视为前一行的续行 可以看2.3中的图,有助于理解。
###2.3 multiline.match 设置匹配到的内容附加的位置。插入到前一行还是追加到后一行。before 或 after。
上图为个人理解。不一定对。
###2.4 multiline.flush_pattern 指定一个正则表达式,用来结束多行事件。
###2.5 multiline.max_lines 如果多行消息包含的行数超过max_lines,则将删除所有其他行。默认值为500。
###2.6 multiline.timeout 在指定的时间后,指定的正则即使没有启动新事件,Filebeat也会发送多行事件。默认值为5s。
三、例子
|
|
解析:将所有以日期(xxxx-xx-xx)开头的行,作为多行事件的开始。直至遇到下一个多行事件时结束,或者等待multiline.timeout时间 例如下面的日志会被解析成4条日志:
|
|
官方给的其他例子 https://www.elastic.co/guide/en/beats/filebeat/6.8/_examples_of_multiline_configuration.html