问题描述
我在日志上创建了一个索引,并且路径具有特殊字符: 例如:
@H_404_5@@params.rs:orgId @params.rs:format
示例网址:
@H_404[email protected] - user [12/Sep/2020:06:25:51 -0400] "GET /v1/resources/manifestinfo?rs:format=json&rs:orgId=123&rs:correlationId=39e8f697-3549-a142-224b-251fc6672a94-32edb97dc3f8 HTTP/1.1" 200 14002 - -
grok解析器:
@H_404_5@rule1 %{ipv4:network.client.ip}\s+-\s+%{word:user}\s+\[%{date("dd/MMM/yyyy:HH:mm:ss Z"):date}\]\s+\"%{word:http.module}\s+\/v1\/resources\/+%{word:onemds.module}\?+%{data:onemds.params:keyvalue("=","/:","","&")}
当我尝试为@H_404_5@@params.rs:orgId添加构面时
我收到错误消息
保存构面时发生错误:构面路径必须包含 仅字母,数字或字符-_。 @ $
解决方法
通过以下方式解决了此问题
rule1 %{ipv4:network.client.ip}\s+-\s+%{word:user}\s+\[%{date("dd/MMM/yyyy:HH:mm:ss Z"):date}\]\s+\"%{word:http.module}\s+\/v1\/resources\/+%{word:onemds.module}\?+%{data:onemds.params:keyvalue("=","/:","",":&")}
从未期望分隔符可以在:&
上方使用2个字符
这有助于删除除第一个以外的所有 rs:。不是一种优雅的方法,但是它适用于我的用例。