我如何监控 Lambda 运行时,包括每个函数的 API 网关开销?

How can I monitor Lambda runtime including API Gateway overhead per function?

考虑 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 网关延迟? (冷启动)还是只有 运行 次?

如果没有,有没有办法监控特定的 route/Lambda,包括 API 网关延迟?

If I monitor a specific Lambda latency, does it include API Gateway latency?

没有

Duration 性能指标不包括任何 API 网关延迟,并且只是 Lambda 函数 运行 时间根据 docs 四舍五入到最接近的毫秒。


If not, is there a way to monitor a specific route/Lambda including API Gateway latency?

每个路由是,每个 Lambda 否。

对于还包括 API 网关开销的指标,请使用 API GW 的 Latency 指标。

不支持每个 Lambda 函数 dimension 分配给指标并据此进行过滤,但您可以通过使用各种其他维度(包括路由)来过滤它来获得最终结果。

如果同一个 Lambda 函数负责多个路由,您将不可避免地需要更多警报。

您必须通过以下方式过滤警报:

  • 方法
  • Api身份和阶段
  • 阶段
  • Api编号
  • Api 姓名