0

使用 CloudWatch 日志洞察力,我试图找出与我的服务交互超过 5 次的用户数量。我已经@userId从我的日志中提取了该字段。

stats count(*) as used by @userId
| filter used>5

使用这个查询我得到了所有用户,但我想得到这些用户的数量而不是用户本身。所以我尝试了

stats count(*) as used by @userId
| filter used>5
| stats count(*)

但这可能会产生错误,因为我们不能在同一个查询中两次使用统计信息(不确定原因)。寻找获取所需数据的方法。

4

2 回答 2

0

非常 hacky,但是如果匹配的总数在千分之十以内,那么运行几个查询应该就足够了:

  • @userId 使用的查询 1 stats count() | 过滤器 5 < 使用 | 排序使用 desc | 限制 10000

如果有超过 10000 个结果,请观察结果used底部的行数和次低值 x。然后运行另一个替换 x 的查询:

  • 查询@userId 使用的 2 个统计数据 count() | 过滤器 5 < 使用和使用 < x | 排序使用 desc | 限制 10000

假设您只需要运行两个查询,请将查询 1 的行数添加到查询 2。

于 2020-05-19T08:45:02.957 回答
0

CloudWatch 日志无法做到这一点,它可以将返回的记录数作为指标。

如果这是曾经接触过应用程序的用户数量,我想增加 KVS 中的值(例如ElastiCache RedisDynamoDB)。

如果这是在设定的时间段内,我建议使用Kinesis Data Analytics和推送到 Lambda 的发布操作来执行任何报告/警报(直接到 SNS 或通过 CloudWatch 自定义指标)。

于 2020-05-04T06:40:07.647 回答