从日志条目中的 json 中提取 json 值
Extracting json value from json within a log entry
使用 sumologic,我如何对消息部分 json(所以不完全)的日志条目执行查询?
示例条目:
[2020-04-30 02:10:32] production.WARNING: We were rate limited {"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":...
我有很多这样的错误,它们具有不同的 class 路径,有些是 webhook 执行,有些是不同的对象。我的最终目标是能够计算每个 class 名称的日志条目,如下所示:
WebhookExecutor | 156
SyncDataService | 48
DeleteService | 13
我从以下内容开始:
"We were rate limited" | json auto | json "class"
我对 ^ 的期望是它会在我的日志搜索结果中创建一个名为 class
的列,然后我可以根据该列进行分组、计数等。
不确定“部分 Json”是什么意思?
即:
- 日志消息包含其他文本和适当的 Json
- 或者消息包含与 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。
使用 sumologic,我如何对消息部分 json(所以不完全)的日志条目执行查询?
示例条目:
[2020-04-30 02:10:32] production.WARNING: We were rate limited {"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":...
我有很多这样的错误,它们具有不同的 class 路径,有些是 webhook 执行,有些是不同的对象。我的最终目标是能够计算每个 class 名称的日志条目,如下所示:
WebhookExecutor | 156
SyncDataService | 48
DeleteService | 13
我从以下内容开始:
"We were rate limited" | json auto | json "class"
我对 ^ 的期望是它会在我的日志搜索结果中创建一个名为 class
的列,然后我可以根据该列进行分组、计数等。
不确定“部分 Json”是什么意思? 即:
- 日志消息包含其他文本和适当的 Json
- 或者消息包含与 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。