You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AWS CloudWatch日志创建用户RESET_SUCCESSFUL次数超限告警?

实现按user_id统计RESET_SUCCESSFUL事件的CloudWatch告警方案

问题分析

CloudWatch默认的Metric Filter无法直接对动态user_id做分组统计告警——因为如果把动态user_id设为维度,会生成大量独立指标,且无法自动为所有user_id创建告警。以下是两种可行方案:


方案一:CloudWatch Logs Insights + Lambda + SNS(推荐,适配动态user_id场景)

该方案通过定期执行Logs Insights查询,主动筛选出符合阈值的user_id并发送告警:

1. 编写Logs Insights查询语句

针对目标日志组,编写统计查询(替换x为你的阈值):

fields @timestamp, user_id, type_of_event
| filter type_of_event = "RESET_SUCCESSFUL"
| stats count(*) as event_count by user_id
| filter event_count > x

该语句会返回过去6小时内,RESET_SUCCESSFUL事件次数超过x的所有user_id及对应次数。

2. 创建Lambda函数

编写Lambda函数(支持Python/Node.js等语言),核心逻辑:

  • 调用CloudWatch Logs API start_query,指定目标日志组、上述查询语句,时间范围设为-6h到now
  • 轮询get_query_results API,直到查询完成
  • 遍历查询结果,构造告警消息(示例:用户ID: abcd3928784798ahHBS,6小时内重置成功次数: 5)
  • 调用SNS API publish,将告警消息发送到指定SNS主题

3. 配置触发规则

在EventBridge中创建定时规则,按需求频率触发Lambda(比如每小时触发一次,确保及时捕获6小时窗口内的超标情况)。

4. 配置SNS主题

创建SNS主题,添加邮件、短信等订阅者,用于接收告警通知。


方案二:Metric Filter + 维度聚合(适合user_id数量有限场景)

如果业务中user_id数量较少且固定,可以用Metric Filter按user_id维度生成指标:

1. 创建Metric Filter

  • 给目标日志组添加Metric Filter,过滤条件设置为:$.type_of_event = "RESET_SUCCESSFUL"
  • 配置度量值为1,设置维度键为user_id,维度值提取自日志中的$.user_id
  • 指定指标命名空间(如UserResetMetrics)和指标名称(如ResetSuccessfulCount)

2. 创建CloudWatch告警

  • 为每个user_id对应的指标创建告警:统计周期设为6小时,统计方式选Sum,阈值设为x
  • 告警消息中可使用变量${user_id}和${$metric_value},自动填充用户ID和事件次数
  • 关联SNS主题接收告警

该方案局限性:若user_id动态新增,需要手动为新user_id创建告警;大量user_id会导致指标数量爆炸,增加管理成本。

内容的提问来源于stack exchange,提问作者MBK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:50:23