使用 Lambda 函数指标 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Lambda 函数指标

当您的Amazon Lambda函数完成对事件的处理后,Lambda 会向 Amazon 发送有关该调用的指标。 CloudWatch这些指标无需支付费用。

在 CloudWatch 控制台上,您可以使用这些指标构建图表和仪表板。您可以设置告警以响应利用率、性能或错误率的更改。Lambda 以 1 分钟为间隔向发送指标数据 CloudWatch 。如果您想获得更多对 Lambda 函数的即时洞察,可以按照 Serverless Land 中的说明创建高分辨率自定义指标。自定义指标和 CloudWatch警报会收费。有关更多信息,请参阅 Amazon CloudWatch 定价

本页介绍控制台上提供的 Lambda 函数调用、性能和并发指标。 CloudWatch

在 CloudWatch 控制台上查看指标

您可以使用 CloudWatch 控制台按函数名称、别名或版本对函数指标进行筛选和排序。

在 CloudWatch 控制台上查看指标
  1. 打开 CloudWatch 控制台的 “指标” 页面AWS/Lambda命名空间)。

  2. 浏览选项卡的指标下,选择以下任一维度:

    • 按函数名称 (FunctionName) – 查看函数的所有版本和别名的聚合指标。

    • 按资源 (Resource) – 查看函数的版本或别名的指标。

    • 按已执行版本 (ExecutedVersion) – 查看别名和版本组合的指标。使用 ExecutedVersion 维度可以比较函数的两个版本的错误率,这两个版本都是加权别名的目标。

    • 跨所有函数(无)– 查看当前 Amazon Web Services 区域 区域中所有函数的聚合指标。

  3. 选择一个指标,然后选择添加到图表或其他图表选项。

默认情况下,图表将使用所有指标的 Sum 统计数据。要选择其他统计数据并自定义图表,请使用 Graphed metrics (图表化指标) 选项卡上的选项。

注意

指标上的时间戳反映函数被调用的时间。根据调用的持续时间,这可能是发出指标前的几分钟。例如,如果您函数的超时值为 10 分钟,请查看 10 分钟之前的情况,以获取准确的指标。

有关的更多信息 CloudWatch,请参阅 Amazon CloudWatch 用户指南

指标类型

以下部分描述了控制台上可用的 Lambda 指标的 CloudWatch类型。

调用指标

调用指标是 Lambda 函数调用结果的二进制指示器。例如,如果函数返回一个错误,则 Lambda 会发送值为 1 的 Errors 指标。要获取每分钟发生的函数错误计数,请查看一分钟时段内的 Errors 指标的 Sum

注意

使用 Sum 统计数据查看以下调用指标。

  • Invocations – 函数代码的调用次数,包括成功调用和导致函数错误的调用。如果调用请求受到限制或导致调用错误,则不会记录调用。Invocations 的值等于计费的请求数。

  • Errors – 导致出现函数错误的调用的次数。函数错误包括您的代码所引发的异常以及 Lambda 运行时所引发的异常。运行时返回因超时和配置错误等问题导致的错误。要计算错误率,请将 Errors 的值除以 Invocations 的值。请注意,错误指标上的时间戳反映的是调用函数的时间,而非错误发生的时间。

  • DeadLetterErrors – 对于异步调用,Lambda 尝试将事件发送到死信队列(DLQ)但失败的次数。资源误配或大小限制可能会致发生死信错误。

  • DestinationDeliveryFailures – 对于异步调用和支持的 事件源映射,Lambda 尝试将事件发送到 目标 但失败的次数。对于事件源映射,Lambda 支持流源(DynamoDB 和 Kinesis)的目标。权限错误、资源误配或大小限制可能会导致发生传输错误。如果您配置的目标是不支持的目标类型,例如 Amazon SQS FIFO 队列或 Amazon SNS FIFO 主题,则可能会发生这种错误。

  • Throttles – 受限制的调用请求数。当所有函数实例都在处理请求并且没有可用于纵向扩展的并发时,Lambda 将拒绝其他请求,并出现 TooManyRequestsException 错误。受限制的请求和其他调用错误不会计为 InvocationsErrors

  • OversizedRecordCount:对于 Amazon DocumentDB 事件源,函数从变更流接收到的大小超过 6 MB 的事件数。Lambda 会丢弃该消息并发出此指标。

  • ProvisionedConcurrencyInvocations – 使用预置并发调用函数代码的次数。

  • ProvisionedConcurrencySpilloverInvocations – 当所有预置并发均处于使用状态时,使用标准并发调用函数代码的次数。

  • RecursiveInvocationsDropped:Lambda 因为检测到您的函数是无限递归循环的一部分而停止调用您函数的次数。Lambda 递归循环检测 通过跟踪由支持的 Amazon 开发工具包添加的元数据,来监控函数作为请求链的一部分被调用的次数。如果您的函数作为请求链的一部分被调用的次数超过 16 次,Lambda 会中断下一次调用。

性能指标

性能指标提供了有关单个函数调用的性能详细信息。例如,Duration 指标指示函数处理事件所花费的时间量(以毫秒为单位)。要了解函数处理事件的速度,请使用 AverageMax 统计数据查看这些指标。

  • Duration – 函数代码处理事件所花费的时间量。调用的计费持续时间是已舍入到最近的毫秒的 Duration 值。Duration 不包括冷启动时间。

  • PostRuntimeExtensionsDuration – 函数代码完成后,运行时为扩展运行代码所花费的累积时间。

  • IteratorAge:对于 DynamoDB、Kinesis 和 Amazon DocumentDB 事件源,事件中最后一条记录的期限。该指标测量流接收记录的时间到事件源映射将事件发送到函数的时间之间的时间量。

  • OffsetLag – 对于自行管理的 Apache Kafka 和 Amazon Managed Streaming for Apache Kafka(Amazon MSK)事件源,写入到主题的最后一条记录与函数的使用者组处理的最后一条记录之间的偏移量差值。尽管 Kafka 主题可以包含多个分区,但此指标仍可在主题级别衡量偏移延迟。

Duration 还支持百分位数 (p) 统计数据。使用百分位数可排除偏离 AverageMaximum 数据的异常值。例如,p95 统计数据显示 95% 的调用的最长持续时间,并排除最慢的 5% 的调用。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的百分位数

并发指标

Lambda 将并发指标报告为跨函数、版本、别名或 Amazon Web Services 区域 处理事件的实例数的总计数。要查看接近并发限制的程度,请使用 Max 统计数据查看这些指标。

  • ConcurrentExecutions – 正在处理事件的函数实例的数目。如果此数目达到区域的并发执行配额或您在函数上配置的预留并发限制,则 Lambda 将会限制其他调用请求。

  • ProvisionedConcurrentExecutions – 使用预置并发处理事件的函数实例的数目。对于具有预置并发性的别名或版本的每次调用,Lambda 都会发出当前计数。

  • ProvisionedConcurrencyUtilization – 对于版本或别名,为将 ProvisionedConcurrentExecutions 值除以分配的预置并发总数。例如,.5 指明有 50% 的已分配预配置并发正在使用中。

  • UnreservedConcurrentExecutions – 对于区域,由不具有预留并发的函数处理的事件数。

  • ClaimedAccountConcurrency – 针对某个区域,不可用于按需调用的并发数。ClaimedAccountConcurrency 等于 UnreservedConcurrentExecutions 加上分配的并发数(即总预留并发数加上总预置并发数)。有关更多信息,请参阅使用 ClaimedAccountConcurrency 指标

异步调用指标

异步调用指标提供有关来自事件源的异步调用和直接调用的详细信息。您可以设置阈值和警报以通知您某些变化。例如,当排队等待处理的事件数量意外增加时 (AsyncEventsReceived)。或者,当一个事件等待了很长时间才完成处理时 (AsyncEventAge)。

  • AsyncEventsReceived – Lambda 成功排队等待处理的事件数。此指标可让您深入了解 Lambda 函数接收的事件数量。监控此指标并设置阈值警报以检查是否存在问题。例如,用于检测出发送到 Lambda 的事件数量是否异常,还能用于快速诊断出因触发错误或函数配置不正确而导致的问题等等。AsyncEventsReceivedInvocations 之间的不匹配可能表明处理过程存在差异、事件被丢弃或潜在的队列积压。

  • AsyncEventAge – Lambda 成功将事件排队到调用该函数之间的时间。当由于调用失败或节流而重试事件时,此指标的值会增加。监控此指标,并在出现队列积聚时针对不同统计信息的阈值设置警报。要解决该指标增加的问题,请查看 Errors 指标以识别函数错误,并查看 Throttles 指标以确定并发问题。

  • AsyncEventsDropped – 在未成功执行函数的情况下丢弃的事件数。如果您配置了死信队列(DLQ)或 OnFailure 目标,则事件会在丢弃之前发送到那里。事件因各种原因被丢弃。例如,事件可能超过最大事件期限或耗尽最大重试次数,或者预留并发可能设置为 0。要解决该指标被丢弃的问题,请查看 Errors 指标以识别函数错误,并查看 Throttles 指标以确定并发问题。