grok規則常用表達式
● USERNAME 或 USER
用戶名,由數字、大小寫及特殊字符(._-)組成的字符串
比如:1234、Bob、Alex.Wong等
● EMAILLOCALPART
電子郵件用戶名部分,首位由大小寫字母組成,其他位由數字、大小寫及特殊字符(_.+-=:)組成的字符串。注意,國內的QQ純數字郵箱賬號是無法匹配的,需要修改正則
比如:stone、Gary_Lu、abc-123等
● EMAILADDRESS
電子郵件
比如:[email protected]、[email protected]、[email protected]等
● 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(數字)三個字段對應$request,http_status_code(數字)對應$status,bytes_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" |