在日常的日志中,因为业务的不同,日志会呈现出多种形态,此时,需写多个 Grok 切割,为提高 Grok 的运行效率,可根据日志出现的频率高低,优先匹配出现频率更高的那个 Grok,这样,大概率日志在前面几个 Grok 中就匹配上了,避免了无效的匹配。
在日志切割中,Grok 匹配是性能开销最大的部分,故避免重复的 Grok 匹配,能极大的提高 Grok 的切割性能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
如何丢弃字段切割
在某些情况下,我们需要的只是日志==中间的几个字段==,但不好跳过前面的部分,比如
1 |
|
其中,我们只需要 44 这个值,它可能代码响应延迟,那么可以这样切割(即 Grok 中不附带 :some_field 这个部分):
1 |
|
add_pattern() 转义问题
大家在使用 add_pattern() 添加局部模式时,容易陷入转义问题,比如如下这个 pattern(用来通配文件路径以及文件名):
1 |
|
如果我们将其放到全局 pattern 目录下(即 pipeline/pattern 目录),可这么写:
1 |
|
如果使用 add_pattern(),就需写成这样:
# my-test.p
add_pattern('source_file', '(/?[\\w_%!$@:.,-]?/?)(\\S+)?')
即这里面反斜杠需要转义。
本文摘自杏耀技术的文章转载请注明出处。