Filebeat之多行匹配模式理解记忆方式
1. 概述官方文档关于多方匹配英文比较绕,这里翻译成中文,总结后便于记忆,点击此处查看官方原文1.1 翻译及记忆方式multiline.pattern: '^b#匹配以“Test”开始的行multiline.negate: true | falsemultiline.match: after | before. negatefalse: 双重否定为肯定–匹配pattern;true:否定,不匹配p
·
1. 概述
官方文档关于多方匹配英文比较绕,这里翻译成中文,总结后便于记忆,点击此处查看官方原文
1.1 翻译及记忆方式
multiline.pattern: '^test #匹配以“test”开始的行
multiline.negate: true | false
multiline.match: after | before
- negate false: 双重否定为肯定–匹配pattern;true:否定,不匹配pattern;
- negate 中匹配与否作 主语,理解这点就好记忆了;
- match 意为negate中在未匹配到的之前或者之后;或者未匹配到的在匹配到的之前或者之后
如下图所示:
negate | match | Result |
---|---|---|
false | after | 匹配到的(主语negate)在未匹配到的的后面 |
false | before | 匹配到的(negate)在未匹配到的前面 |
true | after | 未匹配到的(negate)在匹配到的后面 |
true | before | 未匹配到的在匹配到的前 |
1.2 案例
一般来说,Java日志报错不规则的行在规则的行下面,需要把下面的合并到最上面规则的一行上,match为after,如下面:
[beat-logstash-some-name-832-2015.11.28] IndexNotFoundException[no such index]
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:566)
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:133)
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:77)
at org.elasticsearch.action.admin.indices.delete.TransportDeleteIndexAction.checkBlock(TransportDeleteIndexAction.java:75)
针对上面的日志:
1.2.1 匹配行首规则的日志:
multiline.pattern: ‘^\[’
multiline.negate: true #未匹配到的在下面
multiline.match: after
1.2.2 匹配下面几行不规则的日志:
multiline.pattern: ‘^[[:space:]]’
multiline.negate: false #匹配到的在下面
multiline.match: after
更多推荐
所有评论(0)