grok规则常用表达式


● USERNAME 或 USER

用户名,由数字、大小写及特殊字符(._-)组成的字符串

比如:1234、Bob、Alex.Wong等

● EMAILLOCALPART

电子邮件用户名部分,首位由大小写字母组成,其他位由数字、大小写及特殊字符(_.+-=:)组成的字符串。注意,国内的QQ纯数字邮箱账号是无法匹配的,需要修改正则

比如:stone、Gary_Lu、abc-123等

● EMAILADDRESS

电子邮件

比如:stone@abc.com、Gary_Lu@gmail.com、abc-123@163.com等

● HTTPDUSER

Apache服务器的用户,可以是EMAILADDRESS或USERNAME

● INT

整数,包括0和正负整数

比如:0、-123、43987等

● BASE10NUM 或 NUMBER

十进制数字,包括整数和小数

比如:0、18、5.23等

● BASE16NUM

十六进制数字,整数

比如:0x0045fa2d、-0x3F8709等

● BASE16FLOAT

十六进制数字,整数和小数

● WORD

字符串,包括数字和大小写字母

比如:String、3529345、ILoveYou等

● NOTSPACE

不带任何空格的字符串

● SPACE

空格字符串

● QUOTEDSTRING 或 QS

带引号的字符串

比如:"This is an apple"、'What is your name?'等

● UUID

标准UUID

比如:550E8400-E29B-11D4-A716-446655440000

● MAC

MAC地址,可以是Cisco设备里的MAC地址,也可以是通用或者Windows系统的MAC地址

● IP

IP地址,IPv4或IPv6地址

比如:127.0.0.1、FE80:0000:0000:0000:AAAA:0000:00C2:0002等

● HOSTNAME

主机名称

● IPORHOST

IP或者主机名称

● HOSTPORT

主机名(IP)+端口

比如:127.0.0.1:3306、api.stozen.NET:8000等

● PATH

路径,Unix系统或者Windows系统里的路径格式

比如:/usr/local/nginx/sbin/nginx、c:\windows\system32\clr.exe等

● URIPROTO

URI协议

比如:http、ftp等

● URIHOST

URI主机

比如:www.stozen.Net、10.0.0.1:22等

● URIPATH

URI路径

比如://www.stozen.net/abc/、/api.PHP等

● URIPARAM

URI里的GET参数

比如:?a=1&b=2&c=3

● URIPATHPARAM

URI路径+GET参数

比如://www.stozen.net/abc/api.php?a=1&b=2&c=3

● URI

完整的URI

比如:http://www.stozen.net/abc/api.php?a=1&b=2&c=3

日期时间表达式

● MONTH

月份名称

比如:Jan、January等

● MONTHNUM

月份数字

比如:03、9、12等

● MONTHDAY

日期数字

比如:03、9、31等

● DAY

星期几名称

比如:Mon、Monday等

● YEAR

年份数字

● HOUR

小时数字

● MINUTE

分钟数字

● SECOND

秒数字

● TIME

时间

比如:00:01:23

● DATE_US

美国日期格式

比如:10-15-1982、10/15/1982等

● DATE_EU

欧洲日期格式

比如:15-10-1982、15/10/1982、15.10.1982等

● ISO8601_TIMEZONE

ISO8601时间格式

比如:+10:23、-1023等

● TIMESTAMP_ISO8601

ISO8601时间戳格式

比如:2016-07-03T00:34:06+08:00

● DATE

日期,美国日期%{DATE_US}或者欧洲日期%{DATE_EU}

● DATESTAMP

完整日期+时间

比如:07-03-2016 00:34:06

● HTTPDATE

http默认日期格式

比如:03/Jul/2016:00:36:53 +0800

● Log表达式

LOGLEVEL

日志等级

比如:Alert、alert、ALERT、Error等


grok规则配置实例


grok规则:%{表达式:自定义名称},其中自定义名称将在kibana界面中显示,并用于过滤时使用。

下面以nginx日志规则为例,列出grok规则和nginx log format的对照表:


grok规则

Nginx log  format

%{IPORHOST:http_host}

采用IPORHOST格式,对应IP地址

$remote_addr

-

-

-

$remote_user

\[%{HTTPDATE:timestamp}\]

采用HTTPDATE格式,[]字符需要用\转义

[$time_local]

\"(?:%{WORD:http_verb} %{NOTSPACE:http_request}  HTTP/%{NUMBER:http_version}\"

%{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-))

http_verb(字符串)http_request(不带任何空格的字符串)http_version(数字)三个字段对应$requesthttp_status_code(数字)对应$statusbytes_read(数字)对应$body_bytes_sent

"$request" $status

$body_bytes_sent

%{QS:referrer}

QS为带引号的字符串

"$http_referer"

%{QS:agent}

"$http_user_agent"

%{QS:forwarded}

"$http_x_forwarded_for"