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

Lambda 函数的指标类型

本节介绍 CloudWatch 控制台中提供的 Lambda 指标的类型。

调用指标

调用指标是 Lambda 函数调用结果的二进制指示器。使用 Sum 统计数据查看这些指标。例如,如果函数返回一个错误,则 Lambda 会发送值为 1 的 Errors 指标。要获取每分钟发生的函数错误计数,请查看一分钟时段内的 Errors 指标的 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 因检测到您的函数属于无限递归循环而停止调用函数的次数。递归循环检测通过跟踪受支持的 Amazon SDK 添加的元数据,来监控函数作为请求链的一部分被调用的次数。默认情况下,如果您的函数作为请求链的一部分被调用的次数接近 16 次,Lambda 会中断下一次调用。如果禁用递归循环检测,则不会发出此指标。有关此特征的更多信息,请参阅 使用 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 值除以配置的预置并发总数。例如,为函数配置的预置并发数为 10,而 ProvisionedConcurrentExecutions 为 7,则 ProvisionedConcurrencyUtilization 为 0.7。

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

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

异步调用指标

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

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

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

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

事件源映射指标

事件源映射指标可让您对事件源映射的处理行为进行深入了解。这些指标可帮助您监控事件的流和状态,包括您的事件源映射已成功处理、筛选或删除的事件。

您必须选择加入,以接收与计数相关的指标(PolledEventCountFilteredOutEventCountInvokedEventCountFailedInvokeEventCountDroppedEventCountOnFailureDestinationDeliveredEventCount、和 DeletedEventCount)。要选择加入,您可以使用控制台或 Lambda API。

要启用指标或事件源映射(控制台)
  1. 打开 Lamba 控制台的函数页面

  2. 选择想要为其启用指标的函数。

  3. 选择配置,然后选择触发器

  4. 选择想要为其启用指标的事件源映射,再选择编辑

  5. 事件源映射配置下,选择启用指标

  6. 选择保存

或者,您可以使用 EventSourceMappingConfiguration 中的 EventSourceMappingMetricsConfig 对象,以编程方式启用事件源映射的指标。例如,以下 UpdateEventSourceMapping CLI 命令启用事件源映射的指标:

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --metrics-config Metrics=EventCount

使用 Sum 统计数据查看与事件计数相关的指标。

警告

Lambda 事件源映射至少处理每个事件一次,有可能出现重复处理记录的情况。因此,在涉及事件计数的指标中,可能会对事件进行多次计数。

  • PolledEventCount:Lambda 成功从事件源读取的事件数。如果 Lambda 轮询事件但收到空轮询(没有新记录),则 Lambda 会为该指标发出 0 值。使用此指标来检测您的事件源映射是否正在以正确方式轮询新事件。

  • FilteredOutEventCount:对于使用筛选条件的事件源映射,即按该筛选条件筛选出的事件数量。使用此指标来检测事件源映射是否正确筛选出事件。对于符合筛选条件的事件,Lambda 会发出一个 0 指标。

  • InvokedEventCount:调用您的 Lambda 函数的事件数量。使用此指标来验证事件是否正在以正确方式调用您的函数。如果某个事件导致函数错误或限制,则由于自动重试,InvokedEventCount 可能会对同一轮询事件进行多次计数。

  • FailedInvokeEventCount:Lambda 尝试调用您的函数但失败的事件数量。调用可能由于网络配置问题、权限不正确或者 Lambda 函数、版本或别名被删除等原因而失败。如果您的事件源映射已启用部分批次响应,则 FailedInvokeEventCount 将包含响应中 BatchItemFailures 非空的任何事件。

    注意

    FailedInvokeEventCount 指标的时间戳表示函数调用的结束。此行为与其他 Lambda 调用错误指标不同,后者在函数调用开始时带有时间戳。

  • DroppedEventCount:Lambda 因过期或重试耗尽而删除的事件数量。具体而言,这是超过您为 MaximumRecordAgeInSecondsMaximumRetryAttempts 配置的值的记录数量。重要的是,这不包括因超过事件源的保留设置而过期的记录数量。删除的事件还不包括您发送到失败时的目标的事件。使用此指标来检测不断增加的事项积压。

  • OnFailureDestinationDeliveredEventCount:对于配置了失败时的目标的事件源映射,即为发送到该目标的事件数量。使用此指标对与来自该事件源的调用相关的函数错误进行监控。如果向目标交付失败,则 Lambda 会按以下方式处理指标:

    • Lambda 不会发出 OnFailureDestinationDeliveredEventCount 指标。

    • 对于 DestinationDeliveryFailures 指标,Lambda 发出 1。

    • 对于 DroppedEventCount 指标,Lambda 发出一个等于交付失败的事件数量的数字。

  • DeletedEventCount:Lambda 在处理后成功删除的事件数量。如果 Lambda 尝试删除事件但失败,则 Lambda 会发出 0 指标。使用此指标来确保成功处理的事件已从您的事件源中删除。

如果您的事件源映射已禁用,则您将不会收到事件源映射指标。如果 CloudWatch 或 Lambda 出现可用性下降的情况,则您可能还会发现缺少指标。

并非每个事件源映射指标都可用于每个事件源。目前,事件源映射指标已可用于 Amazon SQS、Kinesis 和 DynamoDB 流事件源。以下可用性矩阵汇总了每种类型的事件源所支持的指标。

事件源映射指标 支持 Amazon SQS 支持 Kinesis 和 DynamoDB 流

PolledEventCount

FilteredOutEventCount

InvokedEventCount

FailedInvokeEventCount

DroppedEventCount

OnFailureDestinationDeliveredEventCount

DeletedEventCount

此外,如果您的事件源映射处于预调配模式,则 Lambda 会提供以下指标:

  • ProvisionedPollers:对于在预调配模式下的事件源映射,即为正在运行的事件轮询器数量。使用 MAX 指标查看此指标。