前言:
之前的博客中写了通过正则配置filebeat的多行文本,正则在logstash的gork中也起了至关重要的作用,下面就让我们来了解一下正则吧,今天上午看了菜鸟教程关于正则的知识点,对正则有了些许了解,通过这些了解把filebeat中的正则复制一把吧;
正则表达式(regular expression)一种文本模式,描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
[xyz]匹配[]中的任意一个字符。如 ‘[abc]’ 可以匹配 “plain” 中的 ‘a’,[^xyz]正好相反
[[:alpha:]] 代表 字母,[[:^alpha:]]取反
[[:alnum:]] 代表 字母与数字字符
\p{Greek}希腊字母表(Unicode字母表) \P{Greek}取反
[:alnum:] 代表英文大小写字节及数字,亦即 0-9,A-Z,a-z
[:alpha:] 代表任何英文大小写字节,亦即 A-Z,a-z
[:blank:] 代表空白键与 [Tab] 按键两者
[:cntrl:] 代表键盘上面的控制按键,亦即包括 CR,LF,Tab,Del.. 等等
[:digit:] 代表数字而已,亦即 0-9
[:graph:] 除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:] 代表小写字节,亦即 a-z
[:print:] 代表任何可以被列印出来的字节
[:punct:] 代表标点符号 (punctuation symbol),亦即:” ’ ? ! ; : # $…
[:upper:] 代表大写字节,亦即 A-Z
[:space:] 任何会产生空白的字节,包括空白键,[Tab],CR 等等
[:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9,A-F,a-f 的数字与字节
中括号表达式:
普通字符在中括号内表示其本身,即,它在输入文本中匹配一次其本身。
filebeat中的正则
菜鸟教程菜鸟不菜,很好的教程
正则表达式图片就是从这里抄过来滴
logstash中的Grok过滤:
%{Syntax:SEMANTIC}: `Syntax`代表匹配值的类型,例如,`0.11`可以`NUMBER`类型所匹配,`10.222.22.25`可以使用`IP`匹配。 `SEMANTIC`表示存储该值的一个变量声明,它会存储在`elasticsearch`当中方便`kibana`做字段搜索和统计 你可以将一个`IP`定义为客户端IP地址`client_ip_address`,eg:`%{IP:client_ip_address}` 所匹配到的值就会存储到`client_ip_address`这个字段里边,类似数据库的列名, 也可以把event log中的数字当成数字类型存储在一个指定的变量当中,比如响应时间`http_response_time`, 日志: %{LOGLEVEL:level} %{WORD:logLevel}