如何为Lambda调用Dynamo场景在CloudFormation CloudWatch告警中新增latency监控
解答
完全可以在你现有CloudFormation样例的基础上新增latency告警,根据你的监控精度需求,可以选择以下两种方案:
方案1:监控Lambda整体运行延迟(覆盖调用Dynamo的全链路耗时)
直接复用Lambda自带的Duration指标即可,无需额外埋点,只需要在现有模板的Resources块下新增一个告警资源,原有错误告警保持不动即可,完整示例如下:
# 原有Lambda错误告警保留 MyAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "superalarm" AlarmDescription: "Alarm if lambda errors out " Namespace: "AWS/Lambda" MetricName: "Errors" Dimensions: - Name: "FunctionName" Value: "mylambda" Statistic: "Sum" ComparisonOperator: "GreaterThanThreshold" Threshold: 0 EvaluationPeriods: 5 Period: 60 TreatMissingData: "breaching" # 新增的Lambda延迟告警 LambdaLatencyAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "lambda_dynamo_latency_alarm" AlarmDescription: "Alarm when lambda execution latency exceeds threshold" Namespace: "AWS/Lambda" MetricName: "Duration" Dimensions: - Name: "FunctionName" Value: "mylambda" Statistic: "Average" # 可根据需求替换为P95、P99等分位统计值 ComparisonOperator: "GreaterThanThreshold" Threshold: 1000 # 阈值单位为毫秒,此处为1秒,可根据业务容忍度调整 EvaluationPeriods: 3 Period: 60 TreatMissingData: "notBreaching"
方案2:精准监控Lambda调用Dynamo的单独请求延迟
如果需要排除Lambda其他逻辑的耗时,只统计Dynamo调用的延迟,可以使用DynamoDB自带的SuccessfulRequestLatency指标配置告警,示例如下:
DynamoCallLatencyAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "dynamo_call_latency_alarm" AlarmDescription: "Alarm when DynamoDB request latency exceeds threshold" Namespace: "AWS/DynamoDB" MetricName: "SuccessfulRequestLatency" Dimensions: - Name: "TableName" Value: "你的Dynamo表名" # 替换为实际调用的Dynamo表名 - Name: "Operation" Value: "Query" # 替换为实际调用的操作类型,如PutItem、GetItem、Scan等 Statistic: "Average" ComparisonOperator: "GreaterThanThreshold" Threshold: 200 # 阈值单位为毫秒,可自行调整 EvaluationPeriods: 3 Period: 60 TreatMissingData: "notBreaching"
注意事项
- 阈值、统计周期、统计方式都可以根据业务实际需求调整,对延迟敏感的场景推荐使用P95/P99分位值作为统计指标
- 如果Lambda会调用多个Dynamo表或者多种操作类型,需要为每个表+操作的组合单独配置告警
- 如果需要更精准的只统计该特定Lambda发起的Dynamo调用延迟,可以在Lambda代码中埋点上报自定义监控指标,再针对自定义指标配置告警即可
内容的提问来源于stack exchange,提问作者ozil
相关产品推荐
相关产品推荐

