Filebeat獲取的文件可能包含跨多行文本的消息。例如,多行消息在包含Java堆棧跟蹤的文件中很常見。為了正確處理這些多行事件,你需要在filebeat.yml中配置multiline以指定哪一行是單個事件的一部分。
### 1、配置項
你可以在filebeat.yml的filebeat.inputs區域指定怎樣處理跨多行的消息。例如:
~~~bash
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
~~~
上面的例子中,Filebeat將所有不以 \[ 開始的行與之前的行進行合并。
~~~css
multiline.pattern
指定用于匹配多行的正則表達式
multiline.negate
定義模式是否被否定。默認false。
multiline.match
指定Filebeat如何把多行合并成一個事件。可選的值是 after 或者 before。
multiline.flush_pattern
指定一個正則表達式,多行將從內存刷新到磁盤。
multiline.max_lines
可以合并成一個事件的最大行數。如果一個多行消息包含的行數超過max_lines,則超過的行被丟棄。默認是500。
~~~
### 2、多行配置示例
#### 2.1 Java堆棧跟蹤
Java堆棧跟蹤由多行組成,在初始行之后的每一行都以空格開頭,例如下面這樣:
~~~css
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)
~~~
為了把這些行合并成單個事件,用寫了多行配置:
~~~bash
multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after
~~~
這個配置將任意以空格開始的行合并到前一行
下面是一個稍微更復雜的例子
~~~css
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
~~~
為了合并這個,用下面的配置:
~~~bash
multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
multiline.negate: false
multiline.match: after
~~~
在這個例子中,模式匹配下列行:
1)以空格開頭,后面跟 at 或者 ... 的行
2)以 Caused by: 開頭的行
一些編程語言使用行尾的反斜杠()字符表示該行繼續,如本例所示:
~~~bash
printf ("%10.10ld \t %10.10ld \t %s\
%f", w, x, y, z );
~~~
為了把這樣的多行合并成單個事件,用下列配置:
~~~bash
multiline.pattern: '\\$'
multiline.negate: false
multiline.match: before
~~~
這段配置合并任意以 \\ 結尾的行
#### 2.2 時間戳
下面是以時間戳開始的日志
~~~csharp
[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]
~~~
為了合并這種行,用下列配置:
~~~bash
multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
~~~
#### 2.3 應用事件
有時你的應用日志包含事件,自定義的開始和結束時間,例如:
~~~csharp
[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
~~~
為了合并這種行,用下面的多行配置:
~~~rust
multiline.pattern: 'Start new event'
multiline.negate: true
multiline.match: after
multiline.flush_pattern: 'End event'
~~~
- springcloud
- springcloud的作用
- springboot服務提供者和消費者
- Eureka
- ribbon
- Feign
- feign在微服務中的使用
- feign充當http請求工具
- Hystrix 熔斷器
- Zuul 路由網關
- Spring Cloud Config 分布式配置中心
- config介紹與配置
- Spring Cloud Config 配置實戰
- Spring Cloud Bus
- gateway
- 概念講解
- 實例
- GateWay
- 統一日志追蹤
- 分布式鎖
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安裝
- 1.2 特性
- 1.3 實例
- 1. 整合nacos服務發現
- 2. 整合nacos配置功能
- 1.4 生產部署方案
- 環境隔離
- 原理講解
- 1. 服務發現
- 2. sentinel
- 3. Seata事務
- CAP理論
- 3.1 安裝
- 分布式協議
- 4.熔斷和降級
- springcloud與alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服務框架付費
- SkyWalking
- 介紹與相關資料
- APM系統簡單對比(zipkin,pinpoint和skywalking)
- server安裝部署
- agent安裝
- 日志清理
- 統一日志中心
- docker安裝部署
- 安裝部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定時清理數據
- index Lifecycle Management
- 沒數據排查思路
- ELK自身組件監控
- 多租戶方案
- 慢查詢sql
- 日志審計
- 開發
- 登錄認證
- 鏈路追蹤
- elk
- Filebeat
- Filebeat基礎
- Filebeat安裝部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安裝
- rpm安裝
- docker安裝Logstash
- grok調試
- Grok語法調試
- Grok常用表達式
- 配置中常見判斷
- filter提取器
- elasticsearch
- 安裝
- rpm安裝
- docker安裝es
- 使用
- 概念
- 基礎
- 中文分詞
- 統計
- 排序
- 倒排與正排索引
- 自定義dynamic
- 練習
- nested object
- 父子關系模型
- 高亮
- 搜索提示
- kibana
- 安裝
- docker安裝
- rpm安裝
- 整合
- 收集日志
- 慢sql
- 日志審計s
- 云
- 分布式架構
- 分布式鎖
- Redis實現
- redisson
- 熔斷和降級