如何使用CloudWatch为Spring Boot服务的聚合指标创建告警
基于多维度Spring Cloud Gateway指标创建CloudWatch告警方案
你可以通过以下两种无需枚举所有维度的方案实现告警配置:
方案1:直接基于Metrics Insights查询创建告警(推荐)
目前CloudWatch告警已原生支持基于Metrics Insights查询结果创建告警,无需提前梳理所有维度:
- 进入CloudWatch控制台→「告警」→「创建告警」→「选择指标」
- 切换到「查询」选项卡,选择指标命名空间
tas-gpp-gateway - 输入你的查询语句,可根据需要指定聚合粒度:
SELECT MAX("spring.cloud.gateway.requests.max") FROM "tas-gpp-gateway" GROUP BY TIME(1 MINUTE)
- 运行查询确认返回的是全局请求最大耗时趋势,点击下一步
- 按常规流程配置阈值(如耗时大于5秒触发告警)、通知渠道即可。
如果需要对每个实例单独评估告警,只需在查询语句末尾增加GROUP BY instanceId,告警会自动对返回的每个实例的时间序列单独判断阈值,无需手动配置每个实例。
方案2:使用SEARCH函数构造告警表达式
如果需要兼容旧版告警配置逻辑,可使用CloudWatch内置的SEARCH函数动态拉取所有维度的指标,无需手动枚举:
- 创建告警时选择「数学表达式」作为指标源
- 输入如下表达式,其中
60为指标聚合周期(单位秒,可根据你的实际上报周期调整):
MAX(SEARCH('{tas-gpp-gateway} MetricName="spring.cloud.gateway.requests.max"', 'Maximum', 60))
- 该表达式会自动拉取命名空间下所有
spring.cloud.gateway.requests.max指标的时间序列,不管附带什么维度,最终返回所有序列的最大值,基于该值配置阈值即可。
注意事项
- 告警的评估周期建议和指标上报周期保持一致,避免出现指标漏采导致告警不触发的问题
- 如果需要过滤特定维度的指标,可在查询语句或SEARCH函数的查询条件中增加维度过滤规则,比如仅统计POST请求的耗时。
内容的提问来源于stack exchange,提问作者Claudio Tasso
相关产品推荐
相关产品推荐

