从本节开始,我们讲Logstash一个最重要的插件,过滤器插件(Filter),常见的过滤器插件如下:
1、Grok插件: 正则捕获
grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结构。他是目前logstash 中解析非结构化日志数据最好的方式。
Grok 的语法规则是: %{语法: 语义}
语法”指的就是匹配的模式,例如使用NUMBER模式可以匹配出数字,IP模式则会匹配出127.0.0.1这样的IP地址。那么默认Logstash在安装完以后默认就有几百个模式给我使用,基本都够用。也就是说,grok插件是根据这些模式的功能去完成日志的过滤的。
语义是指对前面语法进行的标识定义,这个是自定义的。
那么我们举一个列子:比如有这么一条日志文件:
192.168.1.111 [07/Feb/2019:16:24:19 0800] "GET / HTTP/1.1" 403 5039
我们要通过grok插件进行过滤,那么根据上面讲到的语法,我们可以定义出如下的匹配模式对日志进行过滤
那么,%{IP:clientip}匹配模式将获得的结果为:这个模式中的clientip是可以进行自定义的。
clientip: 192.168.1.111
%{HTTPDATE:timestamp}匹配模式将获得的结果为:
timestamp: 07/Feb/2019:16:24:19 0800
而%{QS:referrer}匹配模式将获得的结果为:
referrer: "GET / HTTP/1.1"
就是说通过这些模式我们就能把输入的日志的字段信息取出来进行过滤,对吧。
那么这些默认的模式在哪里呢?在Logstash的安装目录下,如下图
进入这个文件夹,我们可以看到各种应用的匹配模式,比如JAVA 、REDISt、Mongdb
那么我们看一下基于Grok的基础应用的匹配模式:
我们会发现Grok匹配模式里边有很多规则,这些规则自己可以调用来过滤日志。这个文件大家多熟悉。
那么接下来,在实际生产应用中,怎么去用这个grok插件呢?这里有一个Grok在线调试网站,用于运维、开发人员进行Grok匹配模式的调试,进而根据正确的调试模式去设置Logstash配置文件。那么我们看一下这个网站:http://grokdebug.herokuapp.com/
那么通过上面的平台的调试基于日志输入、我们可以匹配出以下模式:
%{IP:clientip} [%{HTTPDATE:timestamp}] %{QS:referrer} %{NUMBER:response} %{NUMBER:bytes}
匹配出的模式将上面的日志分成了5个字段,将输入内容分割为不同的数据字段,这对于日后解析和查询日志数据非常有用,这正是使用grok的目的。
那么接下来,我们实际动手一下吧~~~ 请看下面事件配置截图:
配置文件接下:
1,标准输入
2,将接收到的Mesage内容按照平台设定的匹配模式进行切割,分5个字段进行切割
3,标准输出
那么,启动一下服务,看一下效果:服务启动成功
那么我们输入一条日志,看输出结果:如图:输入上面的日志信息:
192.168.1.111 [07/Feb/2019:16:24:19 0800] "GET / HTTP/1.1" 403 5039
如下图所示:
那我们看一下字段内容:
1,clientip bytes referer reposnse timestamp,5个字段都切割输出了。
2,message内容也完整的输出了。
那么,上面就是一个简单的过滤的功能,我们已经实现了。那这就是Grok过滤插件的应用。
2,总结
接下来,我们根据这个结果跟配置文件,做filter插件的其它更多插件的使用。那么本节,大家需要掌握grok插件各种模式的匹配用法,Grok调试在线平台的使用。好的今天就讲这些。大家再学习一下。