我正在尝试使用grok表达式从下面发布的表达式中提取服务URL和时间,但是由于存在多个URL,我的解决方案经常检索到错误的URL,因此它并不是真正的一致。
我尝试过%{URIPATH:Path1}%{SPACE}%{URIPATH:ServiceURI}%{SYSLOGTIMESTAMP:time}
这根本不起作用,但是如果我删除了{SYSLOGTIMESTAMP:time}
-它给了我我想要的结果,但是它与其他日志格式不同,因此不一致。因此,我试图找到一种一致的方式来节省时间,并从日志中获取服务URL。
6月12日04:27:35 1560306455传入:信息22.244.42.41 6月12日04:27:22 DPPRD01 [host_services] [0x80e0013a] [mpgw] [info]来源-https(IMS_SSL_29982):trans(2797190703)[12.6 .1.16]:从10.6.17.166接收到针对/ services / NHgetInternetLimitsV1的HTTP / 1.1 POST
我期望的是类似
时间:6月12日04:27:35 服务:NHgetInternetLimitsV1或/ services / NHgetInternetLimitsV1
答案 0 :(得分:0)
您可以使用
%{SYSLOGTIMESTAMP:time}.*POST for %{URIPATH:ServiceURI}
它将提取
{
"time": [
[
"Jun 12 04:27:35"
]
],
"ServiceURI": [
[
"/services/NHgetInternetLimitsV1"
]
]
}
请注意,由于.*POST for
部分的存在,POST for
子字符串之后的最后一个服务URI将被匹配。