如何监控 Lambda 运行时,包括每个函数的 API Gateway 开销?
Posted
技术标签:
【中文标题】如何监控 Lambda 运行时,包括每个函数的 API Gateway 开销?【英文标题】:How can I monitor Lambda runtime including API Gateway overhead per function? 【发布时间】:2021-12-10 04:59:26 【问题描述】:考虑 API 网关上的以下 CloudWatch 警报:
LatencyAlarmP90:
Type: AWS::CloudWatch::Alarm
Condition: Production
Properties:
AlarmDescription: latency P90 is lower then 1.5 sec
AlarmName: FooApiP90LatencyAlarm
ComparisonOperator: GreaterThanOrEqualToThreshold
ExtendedStatistic: "p90"
Period: 300
MetricName: "Latency"
DatapointsToAlarm: 5
EvaluationPeriods: 5
Threshold: 1500
Namespace: AWS/ApiGateway
Dimensions:
- Name: ApiName
Value: !Sub "bar"
AlarmActions:
- Fn::ImportValue: !Sub "foo"
OKActions:
- Fn::ImportValue: !Sub foo"
如果触发此警报,我无法知道是哪个特定路由触发了它(多个 lambda 位于同一个 API 网关上)。
我正在考虑改为监控每个 Lambda。
如果我监控特定的 Lambda 延迟,它是否包括 API Gateway 延迟? (冷启动)还是仅运行时间?
如果没有,有没有办法监控特定路由/Lambda,包括 API 网关延迟?
【问题讨论】:
【参考方案1】:如果我监控特定的 Lambda 延迟,它是否包括 API Gateway 延迟?
没有。
Duration
性能指标不包括任何 API 网关延迟,只是根据 docs 向上舍入到最接近毫秒的 Lambda 函数运行时间。
如果没有,有没有办法监控特定路由/Lambda,包括 API 网关延迟?
每条路线是的,每条 Lambda 号。
对于还包括 API Gateway 开销的指标,请使用 API GW 的 Latency
指标。
每个 Lambda 函数不支持 dimension 分配给指标并因此进行过滤,但您可以通过使用各种其他维度(包括路线)来过滤它来实现最终结果。
如果同一个 Lambda 函数负责多个路由,您将不可避免地需要更多警报。
您必须通过以下方式过滤警报:
方法 API 和阶段 舞台 APIID API 名称【讨论】:
感谢您的回复。我已经在使用“延迟”,您引用的文档是用于 ApiGateway 监控的,就像我的示例代码一样,我的问题是关于特定的 Lamba 监控 已更新以澄清 - 不幸的是,Lambda 函数目前不是 API Gateway 支持的维度,因此您必须根据即方法添加更多警报 你有如何定义方法的例子吗?这似乎不起作用维度:-名称:ApiName 值:“myApi”-名称:方法值:“/report/payments” 什么是“不起作用”?你在使用用户界面吗?以上是关于如何监控 Lambda 运行时,包括每个函数的 API Gateway 开销?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Lambda 函数计费持续时间是不是还包括使用 Lambda 容器时的 Init Duration?
如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的这个 Lambda)