我使用了自定义的正则去匹配字段,单个使用没有问题,但是组合使用就有问题,应该怎么把这些字段连接起来使用
(?<remote_addr>^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
(?<request>[|][A-Z].*[A-Z][/][1-9][.][0-9][|])
(?<http_host_status>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[|]\d{1,3})
(?<body_bytes_sent>[|]\d{1,2}[|])
(?<http_user_agent>[-][|][A-z].*[)])
(?<request_time>[|]\d{1,2}[.]\d{1,3}[|])
(?<upstream_response_time>[|]\d{1,2}[.]\d{1,3}$)
单个使用都可以正常匹配
但是不能连接,似乎转义符有问题
我得日志
172.31.180.252|-|04/Jul/2018:11:20:10 +0800|GET /redishandle.ws/oc/getOrderDataByStore/HZH249?timestamp=1530674405337&sign=5DEFCBD9091E5F23B21489A8072F0805 HTTP/1.0|172.31.61.13|200|24|-|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)|-|0.008|172.31.61.119:8080|200|0.002
顺便推荐一个不用翻墙的grok调试网址
http://grok.qiexun.net/
图片是连接后出来的东西
(?<remote_addr>^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
(?<request>[|][A-Z].*[A-Z][/][1-9][.][0-9][|])
(?<http_host_status>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[|]\d{1,3})
(?<body_bytes_sent>[|]\d{1,2}[|])
(?<http_user_agent>[-][|][A-z].*[)])
(?<request_time>[|]\d{1,2}[.]\d{1,3}[|])
(?<upstream_response_time>[|]\d{1,2}[.]\d{1,3}$)
单个使用都可以正常匹配
但是不能连接,似乎转义符有问题
我得日志
172.31.180.252|-|04/Jul/2018:11:20:10 +0800|GET /redishandle.ws/oc/getOrderDataByStore/HZH249?timestamp=1530674405337&sign=5DEFCBD9091E5F23B21489A8072F0805 HTTP/1.0|172.31.61.13|200|24|-|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)|-|0.008|172.31.61.119:8080|200|0.002
顺便推荐一个不用翻墙的grok调试网址
http://grok.qiexun.net/
图片是连接后出来的东西
1 个回复
Dm
赞同来自:
%{HOST:remote_addr}\|-\|%{dd:time_local}\|%{GREEDYDATA:request} /%{GREEDYDATA:info}
可以先利用他默认提供的 grok-patterns中的正则,一般都能满足,特殊的自己再去构建