1

使用 sumologic,我如何对消息部分为 json(所以不完全)的日志条目执行查询?

示例条目:

[2020-04-30 02:10:32] 生产。警告:我们受到速率限制 {"class":"App\WebhookService\WebhookExecutor","headers":{"Date":["Thu, 30 Apr 2020 02 :10:32 GMT"],"Content-Type":["application/json"],"Content-Length":["88"],"Connection":["keep-alive"],"Set-Cookie “:……

我有很多具有不同类路径的此类错误,有些是 webhook 执行,有些是不同的对象。我的最终目标是能够计算每个类名的日志条目,如下所示:

WebhookExecutor     | 156
SyncDataService     | 48
DeleteService       | 13

我从以下内容开始:

"We were rate limited" | json auto | json "class"

我对 ^ 的期望是它会class在我的日志搜索结果中创建一个名为的列,然后我可以按此分组、计数等。

4

1 回答 1

1

不确定“部分 Json”是什么意思?IE:

  1. 日志消息包含其他文本和正确的 Json
  2. 或者消息包含类似于 Json 的东西,但不是真正的 Json - 例如 Json 消息的前缀

假设选项 1(其他文本 + 正确的 Json)

您需要将您的 Json 提取到它自己的适当字段中。否则| json auto不能捡起来。

所以:

"We were rate limited"
| parse "We were rate limited *" as limitedJson
| json auto
| count by class

应该做的工作。甚至不需要第一行,因为parse过滤也是如此。

假设选项 2(没有正确的 Json,只是类似的东西)

在这种情况下更难,但仍然可行。

我还没有测试过,但是这样的东西应该可以工作:

"We were rate limited"
| parse "\"class\":\"*\"" as class
| count by class

在这里转义嵌套引号看起来不太好。


免责声明:我目前受雇于 Sumo Logic。

于 2020-04-30T04:18:44.690 回答