Logstash的filter插件在7.5.1版本中,有多达46种。介绍filter插件的官网地址,感兴趣的话可以自行研究,点此跳转
本文主要讲解filter插件中的grok。通过在filter中使用grok,可以把日志中的关键字快速匹配出来。
grok主要有两部分:自定义正则表达式和系统预定义的模式表达式。
推荐一款在线匹配正则的网站——Grok Debugger,点此跳转
该网站界面如下:
在上面的框输入你要匹配的字符串,下面的框输入正则表达式,在最下面就会自动显示匹配结果。
grok自定义正则匹配的语法:(?<字段名>正则表达式),示例如下。
正则化的内容是截取"uuid=“和”%或者&&&&"中间的字段。
再来几组正则化感受下,正则化各语言差不多,写得多了自然熟悉了
(?(.*)(?=Report)/?) 获取Report之前的字符
(?(?=Report)(.*)/?) 获取Report之后的字符
(?(?<=report).*?(?=msg)) 截取report和msg之间的值 不包含report和msg本身
(?(report).*?(?=msg)) 截取包含report但不包含msg
(?(?<=report).*?(msg)) 截取不包含report但包含msg
(?(report).*?(msg|request)) 输出以report开头,以msg或者以request结尾的所有包含头尾信息
(?(report).*?(?=(msg|request))) 输出以report开头,以msg或者以request结尾的不包含头尾信息
grok模式表达式的语法是%{模式类型:变量名},如%{IP :ip_from}将匹配一段IP地址,并且命名为ip_from。其中,变量名不是必须的。示例如下:
为了方便理解,下面列举一些常用的grok模式,更多grok模式点此跳转github链接。常用的模式匹配,都在这个链接里的"grok-patterns"子目录。
// ipv4如:127.0.0.1
// ipv6如:FB21:1233:55B2:AA44:12B8:6761:890F:AB31
// 如:08:00:20:0A:8C:6D
// . 匹配除\n和空格以外的任何字符
// * 相当于0-正无穷
// ? 为懒惰模式,匹配到第一个就结束
// 实测DATA用在正则化的最后是无法匹配到任何字符的,这个时候可以考虑用WORD等代替。
// 如:hello_world、String、 I_love_code
// 如 "hey, girls!"
// 如:[email protected]
/*
* 首位由大小写字母组成,其他位由数字、大小写及特殊字符(_.+-=\:\)组成的字符串
* 注意,国内的QQ纯数字邮箱账号是无法匹配的
// 如:[email protected] 匹配 admin
/*
* 由数字、大小写及特殊字符(._-)组成的字符串
*/
// 如:admin、ec2-user
INT //正整数、0、负整数都可,如 -1234、0、12412
BASE10NUM 或 NUMBER //十进制数,包括整数和小数,如: 345、 3.1415926
BASE16NUM //十六进制整数,如:0xa12F、0xDc34
BASE16FLOAT //十六进制数字,包括整数和小数
// 如: 9584dba3-fe26-418d-8625-2d71a5d78049
HOSTNAME //主机名,如www.baidu.com
IPORHOST // IP或者主机名称
HOSTPORT //主机名+端口号,127.0.0.1:8080
// 如: /home/ec2-user/docker_config
MONTH //月份名称,如:Jan、January
MONTHNUM //月份数字,如:06、1、12
MONTHDAY //日期数字,如:15、29、31、09
DAY //星期几,如:Tues、Friday
YEAR //年份数字,如:2017、1995
HOUR //小时数字,如:24、13
MINUTE //分钟数字,如:13、59
SECOND //秒钟数字,如:12、54
TIME //时间,如:12:34:12
DATE_US //美国日期格式,如:10-15-1982、10/15/1982
DATE_EU //欧洲日期格式,如:15-10-1982、15.10.1982
TIMESTAMP_ISO8601 //ISO8601时间戳格式,如:2016-07-03T00:34:06+08:00
// 如:Info、Error、Warning
最后,限于笔者经验水平有限,欢迎读者就文中的观点提出宝贵的建议和意见。如果想获得更多的学习资源或者想和更多的是技术爱好者一起交流,可以关注我的公众号『全菜工程师小辉』后台回复关键词领取学习资料、进入后端技术交流群和程序员副业群。同时也可以加入程序员副业群Q群:735764906 一起交流。