AWS Cloudwatch Log Insights - 替换 Auth0 事件类型查询中的字符串函数

问题描述 投票:0回答:1

我正在将 Auth0 日志流式传输到 CloudWatch 日志组,现在我想查询日志以查找每个日志事件类型代码的出现情况。

类型位于字段中:

detail.data.type
,如本例所示:

Field               Value
---------------------------------------------------------
@ingestionTime      1684845468149
@logStream          f802329f-3cf2-3378-91a1-9f3ed9dfca20
@message            {"version":"0","id": ...}
@timestamp          1684845467000
detail-type         Auth0 log
detail.data.ip      11.22.33.444
detail.data.log_id  90022
detail.data.type    seacft

目前,我正在运行此查询来计算每个日志事件类型的出现次数:

fields @timestamp, detail.data.type
| stats count(detail.data.type) as occurrence_count by detail.data.type

这会产生有点不清楚的结果:

    detail.data.type occurrence_count
1   ssa              4
2   seacft           5
3   s                2
4   scp              1
5   scpr             1
6   fp               1
7   fcpr             1
8   fu               2

我想做的就是将神秘的

ssa
s
fp
替换为相应的
Success Silent Auth
Success Login
Failed Login (Incorrect Password)

   Event Type                 occurrence_count
    1   Success Silent Auth              4
    3   Success Login                    2
    6   Failed Login (Password)          1

可以用replace()来完成吗?

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights
1个回答
0
投票

面临同样的问题。考虑到明显的需求,有点难以想象这是如此困难。因此,建议的解决方案看起来有点难看,请随意提出更好的解决方案。

无论如何,到目前为止我想出的可行解决方案是(为了清楚起见,我们限制为 2 个值):

fields @timestamp 
| filter detail.data.type = "f" OR detail.data.type = "s"
| fields replace(detail.data.type, "s", "|Success|") as text_s
| fields replace(detail.data.type, "f", "|Failure|") as text_f
| fields concat(text_s, text_f) as text_parsed
| parse text_parsed "|*|" as text
| stats count() as rCount by text
| sort by rCount desc

替换可以用来创建一个新字段。因此,我创建了 x 个专用于每个代码的新字段,并在字符串周围添加了特殊字符。然后我将它们连接成一个字符串并解析出所需的描述。

它非常丑陋,所以我希望我的过滤器在一开始确实过滤了我不感兴趣的条目,而不是将此代码应用于每个条目。

© www.soinside.com 2019 - 2024. All rights reserved.