在 datadog 中,如何在不添加分面的情况下查询 json 格式的日志行?

In datadog, how do I query a json formatted log line, WITHOUT adding a facet?

当消息被格式化为 json 时,它会自动转换为属性。似乎如果不先将属性转换为构面就无法查询属性(这仅适用于新的日志行,这意味着您有时必须看到某些内容出现,然后对其进行构面化,然后对其进行调试)。

有没有绕过属性分面要求直接查询消息的方法?

不可能不。已通过 DD 支持确认。

其实是可以的,但是你需要把每条JSON的日志都放在单引号里或者在每条日志前加上一些前缀,这样Datadog代理就会认为这是一个'text'。例如。 log.json 文件应包含引号或前缀的日志以作为纯文本处理:

'{"key1": "value1"}'
'{"key1": "value2"}'
'{"key1": "value3"}'
!{"key1": "value1"}
!{"key1": "value2"}
!{"key1": "value3"}

之后,在 Datadog 日志配置中,您需要添加带有 Grok 解析器过滤器的管道 json(请参阅 Matcher 和 Filter 中的过滤器选项卡):

这使我能够对 JSON 日志中的所有字段执行全文搜索,并自动将所有 JSON 字段解析为属性。

P.S。这个解决方案是 2 年前由 Datadog support 提供的。并且他们似乎正在研究解决方案以允许对 JSON 日志进行全文搜索。