是否可以在 sumologic 中解析嵌套的 json?

Posted

技术标签:

【中文标题】是否可以在 sumologic 中解析嵌套的 json?【英文标题】:Is it possible to parse nested json in sumologic? 【发布时间】:2020-08-30 17:36:39 【问题描述】:

所以我有一个这种格式的日志:


    "date":1598808279.785381,
    "log":"\"level\":\"info\",\"ts\":15988.7852,\"caller\":\"server/middlewares.go:26\",\"msg\":\"Request Log\",\"status\":200,\"method\":\"GET\",\"url\":\"/health\",\"duration\":0.000008323",
    "container_id":"someid",
    "container_name":"/service-name",
    "source":"stdout"

我想提取log 字段中的状态。阅读文档后,我应该能够做到:

_collector="MyService" | json auto | fields log.status

但是,这会引发 . 的语法错误

我认为的另一个解决方案是,根据其他语言的工作方式,管道通常会返回对象,所以如果我可以增量返回字段,这应该可以工作:

_collector="MyService" | json auto | fields (log) | fields (status)

但这也行不通。

我试过这样指定一个给定的字段:

_collector="MyService" | json auto "fields.log.status"

但这不起作用。

我也尝试过使用这样的字段直接提取该值:

_collector="MyService" | json field=Message "log.status"

最后,我尝试了所有这些变化:

_collector="MyService" | json auto field=log "status"

_collector="MyService" | json auto field=log | fields status

_collector="MyService" | json auto field=log "status"

_collector="MyService" | json auto field=log "log.status"

但无济于事。

任何想法我哪里出错了?

【问题讨论】:

你找到的其他方法是什么? 【参考方案1】:

logs 被转义为 json 字符串,所以你需要 json 解析两次。

| json "log"
| json auto field=log
| fields status

【讨论】:

我找到了另一种方法,但这种方法有效并且更清晰。谢谢!

以上是关于是否可以在 sumologic 中解析嵌套的 json?的主要内容,如果未能解决你的问题,请参考以下文章

Sumo Logic:计算字段中的每个匹配字符串

js解析多层嵌套的json,取出所有父元素属性和遍历所有子元素

如何将 PM2 日志写入 sumologic?

如何解决 Sumologic 的 AWS lambda 面临的套接字断开连接问题?

如何从 SumoLogic 警报中排除尖峰?

如何在 Sumologic 中重新处理原始日志