regex - 如何使用 grok 从日志中提取服务 url 组件
问题描述
我正在尝试使用 grok 表达式从下面发布的表达式中提取服务 url 和超时,但是因为有多个 url——我的解决方案经常检索错误的 url——所以它并不是真正一致的。
我试过了%{URIPATH:Path1}%{SPACE}%{URIPATH:ServiceURI}%{SYSLOGTIMESTAMP:time}
这根本不起作用,但如果我删除{SYSLOGTIMESTAMP:time}
- 它会给我我正在寻找的结果,但它与其他日志不一致,因为它们具有不同的格式。所以我试图找到一种一致的方式来获取时间和服务 URL 从日志中。
Jun 12 04:27:35 1560306455 INCOMING:信息 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] :从 10.6.17.166 收到 /services/NHgetInternetLimitsV1 的 HTTP/1.1 POST
我期望的是
时间:6 月 12 日 04:27:35 服务:NHgetInternetLimitsV1 或 /services/NHgetInternetLimitsV1
解决方案
您可以使用
%{SYSLOGTIMESTAMP:time}.*POST for %{URIPATH:ServiceURI}
它会提取
{
"time": [
[
"Jun 12 04:27:35"
]
],
"ServiceURI": [
[
"/services/NHgetInternetLimitsV1"
]
]
}
请注意,由于部分原因,将匹配子字符串.*POST for
之后的最后一个服务 URI 。POST for
推荐阅读
- flutter - 如何在颤动的文本字段中拥有来自选定项目的文本
- ruby-on-rails - 过滤器链因 :validate_sign_up_params 渲染或重定向而停止
- sql-server - 为什么矩阵上 SSRS 中的备用背景颜色反映在超过 1 行上
- roblox - 机器人 | 帮助修复公告牌 GUI 中的截止 GUI
- python - 如何使用 aiohttp_jinja2 获取部分 url?
- php - 如何对foreach数据求和
- javascript - 拖动div时如何防止代码运行
- javascript - 通过 findIndex 按索引查找对象,如果没有找到则返回第一项
- fuzzywuzzy - Fuzzy Wuzzy 没有将每个字符串与 String_List 中的每个其他字符串进行比较
- python - 我已经导入了一个函数,但不能使用其中的变量