如何使用 grok 从日志中提取服务 url 组件
How to use a grok to extract Service url component out of log
我正在尝试使用 grok 表达式来提取服务 url 并在下面发布的表达式中超时,但是因为有多个 urls - 我的解决方案经常检索到错误的 url - 所以它不是很一致。
我试过了%{URIPATH:Path1}%{SPACE}%{URIPATH:ServiceURI}%{SYSLOGTIMESTAMP:time}
这根本不起作用,但如果我删除 {SYSLOGTIMESTAMP:time}
- 它会给我正在寻找的结果,但它与其他日志不一致,因为它们具有不同的格式。所以我试图找到一种一致的方式来获取时间,并从日志中获取服务 URL。
Jun 12 04:27:35 1560306455 INCOMING: information 22.244.42.41 Jun 12 04:27:22 DPPRD01 [host_services][0x80e0013a][mpgw][info] source-https(IMS_SSL_29982): trans(2797190703)[12.6.1.16]: Received HTTP/1.1 POST for /services/NHgetInternetLimitsV1 from 10.6.17.166
我期望的是这样的
time : Jun 12 04:27:35
service : NHgetInternetLimitsV1 or /services/NHgetInternetLimitsV1
您可以使用
%{SYSLOGTIMESTAMP:time}.*POST for %{URIPATH:ServiceURI}
它将提取
{
"time": [
[
"Jun 12 04:27:35"
]
],
"ServiceURI": [
[
"/services/NHgetInternetLimitsV1"
]
]
}
请注意,由于 .*POST for
部分,将匹配 POST for
子字符串之后的最后一个服务 URI。
我正在尝试使用 grok 表达式来提取服务 url 并在下面发布的表达式中超时,但是因为有多个 urls - 我的解决方案经常检索到错误的 url - 所以它不是很一致。
我试过了%{URIPATH:Path1}%{SPACE}%{URIPATH:ServiceURI}%{SYSLOGTIMESTAMP:time}
这根本不起作用,但如果我删除 {SYSLOGTIMESTAMP:time}
- 它会给我正在寻找的结果,但它与其他日志不一致,因为它们具有不同的格式。所以我试图找到一种一致的方式来获取时间,并从日志中获取服务 URL。
Jun 12 04:27:35 1560306455 INCOMING: information 22.244.42.41 Jun 12 04:27:22 DPPRD01 [host_services][0x80e0013a][mpgw][info] source-https(IMS_SSL_29982): trans(2797190703)[12.6.1.16]: Received HTTP/1.1 POST for /services/NHgetInternetLimitsV1 from 10.6.17.166
我期望的是这样的
time : Jun 12 04:27:35 service : NHgetInternetLimitsV1 or /services/NHgetInternetLimitsV1
您可以使用
%{SYSLOGTIMESTAMP:time}.*POST for %{URIPATH:ServiceURI}
它将提取
{
"time": [
[
"Jun 12 04:27:35"
]
],
"ServiceURI": [
[
"/services/NHgetInternetLimitsV1"
]
]
}
请注意,由于 .*POST for
部分,将匹配 POST for
子字符串之后的最后一个服务 URI。