带有特殊符号的datadog构面路径

问题描述

我在日志上创建了一个索引,并且路径具有特殊字符: 例如:

@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:。不是一种优雅的方法,但是它适用于我的用例。