我有新行分隔的JSON,如下面的
{
"httpRequest": {
"requestMethod": "GET",
"requestUrl": "/foo/submit?proj=56"
}
}
现在我需要在第一个资源(someTenant)中没有动态部分的url,并且将查询参数添加为elasticsearch中的字段即ie。预期的规范化网址是
"requestUrl": "/{{someTenant}}/submit?{{someParams}}"
我已经在logstash配置中有以下过滤器,但不知道如何在特定字段上执行正则表达式操作序列并将其添加为新字段。
json{
source => "message"
}
这样我可以聚合唯一的端点,尽管由于可变路径参数和查询参数,日志中的URL不同。
答案 0 :(得分:0)
由于此问题标有grok
,我会继续并假设您可以使用grok
过滤器。
使用grok
过滤器并从requestUrl
字段创建新字段,然后您可以使用URIPATHPARAM grok模式将各种组件与requestUrl
分开,如下所示,
grok {
match => {"requestUrl" => "%{URIPATHPARAM:request_data}"}
}
这将产生以下输出,
{
"request_data": [
[
"/foo/submit?proj=56"
]
],
"URIPATH": [
[
"/foo/submit"
]
],
"URIPARAM": [
[
"?proj=56"
]
]
}
上进行测试
感谢