Logstash 内置了120种默认表达式 可以查看patterns 里面对表达式做了分组 每个文件为一组 文件内部有对应的表达式模式。下面只是部分常用的。
常用表达式表达式标识
名称
详情
匹配例子
USERNAME 或 USER
用户名
由数字、大小写及特殊字符(._-)组成的字符串
1234、Bob、Alex.Wong
EMAILLOCALPART
用户名
首位由大小写字母组成 其他位由数字、大小写及特殊字符(_. - :)组成的字符串。注意 国内的QQ纯数字邮箱账号是无法匹配的 需要修改正则
windcoder、windcoder_com、abc-123
EMAILADDRESS
电子邮件
windcoder abc.com、windcoder_com gmail.com、abc-123 163.com
HTTPDUSER
Apache服务器的用户
可以是EMAILADDRESS或USERNAME
INT
整数
包括0和正负整数
0、-123、43987
BASE10NUM 或 NUMBER
十进制数字
包括整数和小数
0、18、5.23
BASE16NUM
十六进制数字
整数
0x0045fa2d、-0x3F8709
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
IP或者主机名称
HOSTPORT
主机名(IP) 端口
127.0.0.1:3306、api.windcoder.com:8000
PATH
路径
Unix系统或者Windows系统里的路径格式
/usr/local/nginx/sbin/nginx、c:\\windows\\system32\\clr.exe
URIPROTO
URI协议
http、ftp
URIHOST
URI主机
windcoder.com、10.0.0.1:22
URIPATH
URI路径
//windcoder.com/abc/、/api.php
URIPARAM
URI里的GET参数
?a 1 b 2 c 3
URIPATHPARAM
URI路径 GET参数
/windcoder.com/abc/api.php?a 1 b 2 c 3
URI
完整的URI
https://windcoder.com/abc/api.php?a 1 b 2 c 3
LOGLEVEL
Log表达式
Log表达式
Alert、alert、ALERT、Error
日期时间表达式
表达式标识
名称
匹配例子
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-01-1892、10/01/1892/
DATE_EU
欧洲日期格式
01-10-1892、01/10/1882、01.10.1892
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
自定义grok表达式
语法解释
%{HOSTNAME} 匹配请求的主机名
%{TIMESTAMP_ISO8601:time},代表时间戳
%{LOGLEVEL} 代表日志级别
%{URIPATHPARAM} 代表请求路径
%{INT} 代表字符串整数数字大小
%{NUMBER} 可以匹配整数或者小数
%{UUID} 匹配类似091ece39-5444-44a1-9f1e-019a17286b48
%{IP}, 匹配ip
%{WORD}, 匹配请求的方式
%{GREEDYDATA},匹配所有剩余的数据
(?([\\S ]*)) 自定义正则
\\s*或者\\s ,代表多个空格
\\S 或者\\S*,代表多个字符
大括号里面:xxx,相当于起别名
(? class_info ([\\S ]*)), 自定义正则匹配多个字符
举例操作如下
列1
[2019-08-22 12:25:51.441] [TSC_IHU] [ERROR] [c.e.c.t.i.t.s.IhuTsaUplinkServiceImpl] Activation/Bind uplink, query UserSession by Token failure!
grok调试如下
\\[%{TIMESTAMP_ISO8601:time}\\]\\s*%{DATA:thread}\\s*\\[%{LOGLEVEL:level}\\]\\s*%{GREEDYDATA:data}
列2
2019-09-12 14:16:36.320 08:00 INFO 930856f7-c78f-4f12-a0f1-83a2610b2dfc DispatcherConnector ip-192-168-114-244 [Mqtt-Device-1883-worker-18-1] com.ericsson.sep.dispatcher.api.transformer.v1.MessageTransformer { TraceID : 930856f7-c78f-4f12-a0f1-83a2610b2dfc , clientId : 5120916600003466K4GA1059 , username : LB37622Z3KX609880 }
%{TIMESTAMP_ISO8601:access_time}\\s*%{LOGLEVEL:level}\\s*%{UUID:uuid}\\s*%{WORD:word}\\s*%{HOSTNAME:hostname}\\s*\\[%{DATA:work}\\]\\s*(? api ([\\S ]*))\\s*(? TraceID ([\\S ]*))\\s*%{GREEDYDATA:message_data}
列3
192.168.125.138 - - [12/Sep/2019:14:10:58 0800] GET /backend/services/ticketRemind/query?cid msgType 1 pageSize 100 pageIndex 1 langCode zh HTTP/1.1 200 91
grok调试如下
%{IP:ip}\\s*%{DATA:a}\\s*\\[%{HTTPDATE:access_time}\\]\\s*%{DATA:b}%{WORD:method}\\s*%{URIPATH:url}%{URIPARAM:param}\\s*%{URIPROTO:uri}%{DATA:c}%{NUMBER:treaty}%{DATA:d}\\s*%{NUMBER:status}\\s*%{NUMBER:latency_millis}
列4
[08/Nov/2019:11:40:24 0800] tc-com.g-netlink.net - - 192.168.122.58 192.168.122.58 192.168.125.135 80 GET 200 /geelyTCAccess/tcservices/capability/L6T7944Z0JN427155 ?pageIndex 1 pageSize 2000 vehicleType 0 21067 17
grok调试如下
\\[%{HTTPDATE:access_time}\\] %{DATA:hostname} %{DATA:username} %{DATA:fwd_for} %{DATA:remote_hostname} %{IP:remote_ip} %{IP:local_ip} %{NUMBER:local_port} %{DATA:method} %{DATA:status} %{DATA:uri} %{DATA:query} %{NUMBER:bytes} %{NUMBER:latency_ms}
作者 走路带风的帅界扛把子
出处 http://www.cnblogs.com/zhangan/
本文版权归作者和博客园共有 欢迎转载 但必须给出原文链接 并保留此段声明 否则保留追究法律责任的权利。
分类: 93、大数据分布式存储丶ELK
本文链接: http://agrok.immuno-online.com/view-779094.html