使用Logstash filter grok过滤日志文件

Posted 马哥Linux运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Logstash filter grok过滤日志文件相关的知识,希望对你有一定的参考价值。


Eason,企业一线运维实战者,马哥教育原创作者联盟成员,热爱分享Linux应用技术的感想和原创知识。”


Logstash Filter Plugin Grok


Logstash提供了一系列filter过滤plugin来处理收集到的log event,根据log event的特征去切分所需要的字段,方便kibana做visualize和dashboard的data analysis。所有logstash支持的event切分插件查看这里。下面我们主要讲grok切分。

Grok基本介绍


1.Grok 使用文本片段切分的方式来切分日志事件,语法如下:

使用Logstash filter grok过滤日志文件

SYNTAX代表匹配值的类型,例如,0.11可以NUMBER类型所匹配,10.222.22.25可以使用IP匹配。

使用Logstash filter grok过滤日志文件

可以使用如下grok pattern来匹配这种记录

使用Logstash filter grok过滤日志文件

在logstash conf.d文件夹下面创建filter conf文件,内容如下

使用Logstash filter grok过滤日志文件

以下是filter结果

使用Logstash filter grok过滤日志文件

grok内置的默认类型有很多种,读者可以自行查看。


2.使用自定义类型
更多时候logstash grok没办法提供你所需要的匹配类型,这个时候我们可以使用自定义。

第一种,直接使用oniguruma语法去匹配文本片段,语法如下

使用Logstash filter grok过滤日志文件

假设你需要匹配的文本片段为一个长度为10或11的十六进制的值,使用下列语法可以获取该片段,并把值赋予queue_id

使用Logstash filter grok过滤日志文件

第二种,创建自定义pattern文件

创建文件夹patterns,在此文件夹下面创建一个文件,文件名随意,eg: postfix

使用Logstash filter grok过滤日志文件

然后将patterns file引入,告诉logstash你的自定义类型文件,以下面的event log record为例子:

使用Logstash filter grok过滤日志文件

在logstash conf.d文件夹下面创建filter conf文件,内容如下

使用Logstash filter grok过滤日志文件

匹配结果如下:

使用Logstash filter grok过滤日志文件

推荐使用grokdebugger来写匹配模式,输入event log record,再逐步使用pattern微调切分,下方会根据你所写的模式将输入切分字段。

使用Logstash filter grok过滤日志文件

使用Logstash filter grok过滤日志文件

3.其他常用内置方法

add_field: 当pattern匹配切分成功之后,可以动态的对某些字段进行特定的修改或者添加新的字段,使用%{fieldName}来获取字段的值
Exmaple:

使用Logstash filter grok过滤日志文件

使用Logstash filter grok过滤日志文件

如果somefield=dad,logstash会将foo_dad新字段加入elasticsearch,并将值Hello world, dad赋予该字段

add_tag: 为经过filter或者匹配成功的event添加标签
Example:

使用Logstash filter grok过滤日志文件


好的内容离不开作者的持续付出,给他一次小小的打赏我们将获得持续不断的有料干货,⬇️美女和帅哥都会至少打赏1元哟⬇️⬇️

以上是关于使用Logstash filter grok过滤日志文件的主要内容,如果未能解决你的问题,请参考以下文章

logstash使用filter删除不需要的日志

logstash实战filter插件之grok(收集apache日志)

Logstash的filter插件-Grok

Logstash,grok 过滤器不适用于固定长度字段

Logstash Grok过滤器Apache访问日志

Logstash收集nginx日志之使用grok过滤插件解析日志