filebeat
filebeat合并多行日志示例
本节中的示例包括以下内容:
- 将Java堆栈跟踪日志组合成一个事件
- 将C风格的日志组合成一个事件
- 结合时间戳处理多行事件
Java堆栈跟踪
Java示例一
Java堆栈跟踪由多行组成,每一行在初始行之后以空格开头,如本例中所述:
1 | Exception in thread "main" java.lang.NullPointerException |
要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:
1 | multiline.pattern: '^[[:space:]]' |
此配置将以空格开头的所有行合并到上一行。
Java示例二
下面是一个Java堆栈跟踪日志,稍微复杂的例子:
1 | Exception in thread "main" java.lang.IllegalStateException: A book has a null property |
要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:
1 | multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:' |
此配置解释如下:
- 将以空格开头的所有行合并到上一行
- 并把以Caused by开头的也追加到上一行
C风格的日志
一些编程语言在一行末尾使用反斜杠 \
字符,表示该行仍在继续,如本例中所示:
1 | printf ("%10.10ld \t %10.10ld \t %s\ |
要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:
1 | multiline.pattern: '\\$' |
此配置将以\字符结尾的任何行与后面的行合并。
时间戳
来自Elasticsearch等服务的活动日志通常以时间戳开始,然后是关于特定活动的信息,如下例所示:
1 | [2015-08-24 11:49:14,389][INFO ][env ] [Letha] using [1] data paths, mounts [[/ |
要将这些行整合到Filebeat中的单个事件中,请使用以下多行配置:
1 | multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}' |
此配置使用negate: true和match: after设置来指定任何不符合指定模式的行都属于上一行。
应用程序事件
有时您的应用程序日志包含以自定义标记开始和结束的事件,如以下示例:
1 | [2015-08-24 11:49:14,389] Start new event |
要在Filebeat中将其整合为单个事件,请使用以下多行配置:
1 | multiline.pattern: 'Start new event' |
此配置把指定字符串开头,指定字符串结尾的多行合并为一个事件。