FileBeat多行消息Multiline

Filebeat獲取的文件可能包含跨多行文本的消息。例如,多行消息在包含Java堆棧跟蹤的文件中很常見。為了正確處理這些多行事件,你需要在filebeat.yml中配置multiline以指定哪一行是單個事件的一部分。

1、配置項

你可以在filebeat.yml的filebeat.inputs區(qū)域指定怎樣處理跨多行的消息。例如:

multiline.pattern: '^\['
multiline.negate: true
multiline.match: after

上面的例子中,F(xiàn)ilebeat將所有不以 [ 開始的行與之前的行進(jìn)行合并。

multiline.pattern
指定用于匹配多行的正則表達(dá)式

multiline.negate
定義模式是否被否定。默認(rèn)false。

multiline.match
指定Filebeat如何把多行合并成一個事件??蛇x的值是 after 或者 before。

multiline.flush_pattern
指定一個正則表達(dá)式,多行將從內(nèi)存刷新到磁盤。

multiline.max_lines
可以合并成一個事件的最大行數(shù)。如果一個多行消息包含的行數(shù)超過max_lines,則超過的行被丟棄。默認(rèn)是500。

2、多行配置示例

2.1 Java堆棧跟蹤

Java堆棧跟蹤由多行組成,在初始行之后的每一行都以空格開頭,例如下面這樣:

Exception in thread "main" java.lang.NullPointerException
        at com.example.myproject.Book.getTitle(Book.java:16)
        at com.example.myproject.Author.getBookTitles(Author.java:25)
        at com.example.myproject.Bootstrap.main(Bootstrap.java:14)

為了把這些行合并成單個事件,用寫了多行配置:

multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after

這個配置將任意以空格開始的行合并到前一行

下面是一個稍微更復(fù)雜的例子

Exception in thread "main" java.lang.IllegalStateException: A book has a null property
       at com.example.myproject.Author.getBookIds(Author.java:38)
       at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
Caused by: java.lang.NullPointerException
       at com.example.myproject.Book.getId(Book.java:22)
       at com.example.myproject.Author.getBookIds(Author.java:35)
       ... 1 more

為了合并這個,用下面的配置:

multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
multiline.negate: false
multiline.match: after

在這個例子中,模式匹配下列行:
1)以空格開頭,后面跟 at 或者 ... 的行
2)以 Caused by: 開頭的行
一些編程語言使用行尾的反斜杠()字符表示該行繼續(xù),如本例所示:

printf ("%10.10ld  \t %10.10ld \t %s\
  %f", w, x, y, z );

為了把這樣的多行合并成單個事件,用下列配置:

multiline.pattern: '\\$'
multiline.negate: false
multiline.match: before

這段配置合并任意以 \ 結(jié)尾的行

2.2 時間戳

下面是以時間戳開始的日志

[2015-08-24 11:49:14,389][INFO ][env                      ] [Letha] using [1] data paths, mounts [[/
(/dev/disk1)]], net usable_space [34.5gb], net total_space [118.9gb], types [hfs]

為了合并這種行,用下列配置:

multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after

2.3 應(yīng)用事件

有時你的應(yīng)用日志包含事件,自定義的開始和結(jié)束時間,例如:

[2015-08-24 11:49:14,389] Start new event
[2015-08-24 11:49:14,395] Content of processing something
[2015-08-24 11:49:14,399] End event

為了合并這種行,用下面的多行配置:

multiline.pattern: 'Start new event'
multiline.negate: true
multiline.match: after
multiline.flush_pattern: 'End event'

鏈接:https://www.imooc.com/article/70007
來源:慕課網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Filebeat是本地文件的日志數(shù)據(jù)采集器,可監(jiān)控日志目錄或特定日志文件(tail file),并將它們轉(zhuǎn)發(fā)給El...
    康康6840閱讀 63,167評論 2 39
  • title: filebeat config date: 2017-06-11 03:22:31 categori...
    bdslinux閱讀 4,320評論 0 5
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,276評論 0 5
  • 為了手動配置Filebeat(代替用模塊),你可以在filebeat.yml中的filebeat.inputs區(qū)域...
    我是一名搬運工閱讀 6,688評論 0 2
  • 自虐又開始了 就是不想讓自己停下來 停止前進(jìn)的步伐 7月請見證我的進(jìn)步 …… 自虐之1――肘倒立后彎 還是要繼續(xù)練...
    舒涵vivian閱讀 486評論 1 7

友情鏈接更多精彩內(nèi)容