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

如何基于自定义指标创建AWS CloudWatch告警并实现错误跨维度聚合

AWS CloudWatch自定义指标全局错误告警解决方案

你当前上报的自定义指标采用了EMF(嵌入式指标格式),绑定的维度组合为[LogGroup, ServiceName, ServiceType, HttpMethod, Hostname],CloudWatch本身确实不支持直接对已有的细粒度维度指标做跨维度聚合告警,可行方案如下:

方案1:EMF新增粗粒度维度组合(官方推荐最优方案)

不需要额外生成完整的指标组,仅需要修改你当前EMF配置中的Dimensions数组,新增一组剔除HttpMethod、Hostname的维度组合即可,修改后的配置示例如下:

"_aws": {
  "Timestamp": 1629271402304,
  "CloudWatchMetrics": [
      {
          "Dimensions": [
              [
                  "LogGroup",
                  "ServiceName",
                  "ServiceType",
                  "HttpMethod",
                  "Hostname"
              ],
              // 新增粗粒度维度组合,用于全局聚合
              [
                  "LogGroup",
                  "ServiceName",
                  "ServiceType"
              ]
          ],
          "Metrics": [
              {
                  "Name": "latency",
                  "Unit": "Milliseconds"
              },
              {
                  "Name": "errors",
                  "Unit": "Count"
              }
          ],
          "Namespace": "ExternalAPI"
      }
  ]
}

修改后CloudWatch会自动生成两套时间序列:

  • 全维度序列:保留原有的细粒度维度,用于后续问题排查时按HttpMethod、Hostname过滤统计
  • 粗粒度序列:仅保留三个通用维度,直接对这个序列的errors指标做聚合统计就能设置全局错误告警,计算延迟最低,额外产生的指标成本也极低。

方案2:使用Metric Math聚合所有细粒度序列(无需修改上报逻辑)

如果暂时不想调整EMF上报配置,可以通过CloudWatch Metric Math的SUM()函数把所有细粒度的errors时间序列加总,对计算结果设置告警。
该方案存在两个限制:

  • 单个Metric Math告警最多支持引用100个时间序列,如果你的HttpMethod和Hostname的组合数量超过100,无法覆盖全量数据
  • 告警计算延迟高于方案1,长期使用的成本也更高

方案3:基于Contributor Insights做统计(适合大维度基数场景)

如果你的维度组合超过100种,又不想修改上报逻辑,可以基于EMF对应的日志组开启Contributor Insights,配置规则统计所有错误事件的总数,再对统计结果设置告警即可。该方案适合维度基数很大的场景,但使用成本高于方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:27:02