如何通过CloudFormation为Lambda配置超时触发的CloudWatch告警
Lambda超时告警CloudFormation配置说明
你需要填写的核心参数及补充配置如下:
MetricName:可以二选一,根据你的告警需求决定- 选
Errors:Lambda的Errors指标会统计所有调用失败场景,包含超时、代码报错、权限异常等所有非正常退出情况,配置更简单 - 选
Duration:可以精准匹配超时场景,仅当函数运行时长超过阈值才触发告警
- 选
Statistic:和你选的指标对应- 用
Errors指标时填Sum,统计指定周期内的错误总次数 - 用
Duration指标时填Maximum,取统计周期内函数的最大运行时长
- 用
- 还需要补充以下必填参数才能让告警正常生效:
Namespace:固定填AWS/Lambda,是Lambda指标所属的CloudWatch命名空间Period:指标统计周期,单位为秒,建议填60即每分钟统计一次EvaluationPeriods:触发告警需要满足异常条件的连续统计周期数,建议填1,出现一次异常就触发告警Threshold:告警阈值- 用
Errors指标时填1,只要出现1次错误就触发告警 - 用
Duration指标时填500000,对应你配置的500秒超时,Duration指标单位为毫秒
- 用
ComparisonOperator:阈值比较规则,两种方案都填GreaterThanOrEqualToThresholdTreatMissingData:建议填notBreaching,没有指标上报时不触发告警
方案1:基于Errors指标的配置(所有调用失败都告警,包含超时)
Resources: someLambda: Type: AWS::Serverless::Function Properties: FunctionName: "MyFunct" Description: "..." MemorySize: 512 Timeout: 500 timeoutAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "lambda-timeout-alarm" AlarmDescription: "Alarm if lambda times out or runs into other errors" MetricName: Errors Namespace: AWS/Lambda Dimensions: - Name: "FunctionName" Value: MyFunct Statistic: Sum Period: 60 EvaluationPeriods: 1 Threshold: 1 ComparisonOperator: GreaterThanOrEqualToThreshold TreatMissingData: notBreaching
方案2:基于Duration指标的配置(仅超时时告警,更精准)
Resources: someLambda: Type: AWS::Serverless::Function Properties: FunctionName: "MyFunct" Description: "..." MemorySize: 512 Timeout: 500 timeoutAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "lambda-timeout-alarm" AlarmDescription: "Alarm if lambda runs longer than configured timeout" MetricName: Duration Namespace: AWS/Lambda Dimensions: - Name: "FunctionName" Value: MyFunct Statistic: Maximum Period: 60 EvaluationPeriods: 1 Threshold: 500000 ComparisonOperator: GreaterThanOrEqualToThreshold TreatMissingData: notBreaching
内容的提问来源于stack exchange,提问作者ozil
相关产品推荐
相关产品推荐

