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

咨询:基于CloudWatch Metrics实现多用户失败消息统计的可行方案

基于CloudWatch Metrics的用户失败消息统计替代方案

问题背景

每日执行约1000次任务,多数执行失败,需要实现**按用户(userName)+失败消息(failureMessage)**的指标统计。原计划把这两个字段加入CloudWatch Dimensions,但CloudWatch Dimensions有25个的硬上限,且当前用户数已超100,没法直接用维度实现,求基于CloudWatch Metrics的替代方案。

日志示例:

2023-08-15T15:11:40.797-07:00
(-some-unique-id) Endpoint request body after transformations: {"userName": "testUser", "failureReason":"We failed"}

方案1:用CloudWatch Logs Insights直接统计

直接复用现有日志字段编写查询语句,无需额外上报Metrics:

  • 示例查询语句:
    fields @timestamp, userName, failureReason
    | filter failureReason is not null
    | stats count() as failureCount by userName, failureReason
    | sort failureCount desc
    
  • 优势:不用修改现有上报逻辑,支持任意数量的用户和失败消息组合统计;可保存查询模板,用户搜索自身用户名就能快速查看统计数据。
  • 进阶操作:如果需要定时生成报表,可通过CloudWatch Events触发Lambda执行查询,将结果保存到S3或推送通知。

方案2:将用户信息嵌入Metric名称

放弃把userName作为维度,改为将用户与失败消息组合成Metric名称的一部分:

  • 伪代码示例:
    import boto3
    cloudwatch = boto3.client('cloudwatch')
    
    def report_failure(user_name, failure_reason):
        # 清洗失败消息,避免特殊字符和过长内容
        clean_reason = failure_reason.replace(' ', '-').strip('"')[:50]
        metric_name = f"FailureCount-{user_name}-{clean_reason}"
        cloudwatch.put_metric_data(
            Namespace='YourServiceNamespace',
            MetricData=[{'MetricName': metric_name, 'Value': 1, 'Unit': 'Count'}]
        )
    
  • 优势:绕开维度上限限制,每个用户+失败消息组合对应独立Metric,用户可通过搜索Metric名称定位自身数据。
  • 注意:Metric名称最长255字符,需对用户名和失败消息做截断或清洗,避免生成过多零散Metric增加成本。

方案3:用户分组+日志关联统计

如果用户有明确的业务分组规则(比如等级、所属部门),可将分组作为维度,结合日志实现细粒度统计:

  • 若失败消息种类≤25,可将failureMessage设为维度,日志中保留userName,之后通过CloudWatch Logs Insights关联Metrics与日志,统计单个用户的失败情况;
  • 若失败消息种类也超25,可反过来将用户分组设为维度,失败消息通过日志关联统计。
  • 优势:在维度限制内保留聚合能力,适合有明确分组规则的业务场景。

方案4:Metrics标签+数学表达式过滤

上报统一的FailureCount Metric,将userName和failureReason作为Metric标签(标签无数量上限,仅支持过滤不支持聚合):

  • 示例:在CloudWatch控制台创建数学表达式,过滤特定用户的失败统计:
    SUM(FILTER('YourServiceNamespace', 'FailureCount', 'userName="testUser"', 'failureReason="We failed"'))
    
  • 优势:标签无数量限制,支持任意用户和失败消息的过滤查询;Metrics本身保持简洁,成本更低。
  • 注意:标签仅支持过滤,若需分组统计仍需结合Logs Insights实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:45