亚马逊AWS官方博客

使用 Amazon DevOps Guru for Serverless 自动检测 Lambda 函数中的运行问题

我们于今日宣布推出 Amazon DevOps Guru for Serverless,这是面向 Amazon DevOps Guru 的全新功能。通过此功能,开发人员能够提高无服务器应用程序的运行性能和可用性。

AWS 于 2014 年推出 AWS Lambda,开创了无服务器计算领域的先河。如今,成千上万的客户正在使用 AWS Lambda。Lambda 允许您为函数配置许多参数,例如内存分配、预置并发和超时。对于许多客户来说,在所有这些参数之间找到适当的平衡以优化其函数的性能和可用性是一项艰巨的任务。

2020 年 12 月,我们宣布推出 DevOps Guru,这是一项完全托管式 AIOps(面向 IT 运营的人工智能)服务,可自动检测应用程序问题并向客户发出警报,帮助他们提高应用程序的可用性。今天,我们宣布推出 DevOps Guru for Serverless,这是 DevOps Guru 的一项新功能,可帮助使用 Lambda 的开发人员在函数级别自动检测异常行为,并使用基于机器学习的建议来修复检测到的任何问题。

DevOps Guru for Serverless 使用机器学习来自动识别和分析 Lambda 函数的各种性能和可用性相关问题,例如低预置并发或内存利用不足。要使用此功能,您无需成为无服务器或 ML 专家。

此功能的被动洞察可帮助您有效地解决影响无服务器应用程序的持续问题,并提供可行的建议,帮助您在尽可能短的时间内找出根本原因并解决问题。

DevOps Guru for Serverless 还提供主动洞察,帮助您在无服务器应用程序性能受到影响之前就发现更广泛的运行异常情况。还为您提供有关如何查找根本原因并解决问题的建议。

检测到问题时,DevOps Guru for Serverless 会在 DevOps Guru 控制台中显示发现结果,同时使用 Amazon EventBridgeAmazon Simple Notification Service(Amazon SNS) 发送通知。这可让开发人员自动管理发现的问题并即时采取行动。

DevOps Guru for Serverless 主动洞察
DevOps Guru for Serverless 使开发人员能够在影响客户的事件发生之前主动检测应用程序问题。例如,如果某个 Lambda 函数的预置并发设置得太低,而该应用程序的流量正在增长,DevOps Guru 将检测不断增长的流量和应用程序延迟的降低,并生成显示问题的主动洞察。

机器学习算法从运行数据和应用程序指标中获得这些洞察。洞察提供了高级信息、严重性、状态以及有关如何解决此问题的建议。

如今,DevOps Guru for Serverless 为 Lambda 和 Amazon DynamoDB 提供主动洞察。以下是当前可用的运行问题和主动洞察:

  • Lambda 并发执行数达到账户限制 – 当并发执行数连续达到账户限制时触发。
  • 超出 Lambda 预置并发函数限制 – 当预置并发的预留量在一段时间内不足时触发。
  • 与 SQS 的可见性超时相比,Lambda 超时较高 – 当 Lambda 函数的持续时间超过事件源 Amazon Simple Queue Service(Amazon SQS)可见性超时时触发。
  • Lambda 预置并发使用率低于预期 – 当预置并发的利用率过低时触发。
  • DynamoDB 消耗的账户读/写容量达到账户限制 – 当账户在一段时间内消耗的容量接近账户级别限制时触发。
  • DynamoDB 表读/写消耗的容量达到表限制 – 当表中的写或读在一段时间内达到表的 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 限制时触发。
  • DynamoDB 表消耗的容量达到 AutoScaling Max 参数限制 – 当表消耗的容量在一段时间内达到 AutoScaling Max 参数限制时触发。
  • DynamoDB 读/写消耗量低于预期 – 当 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 的值与一段时间内的消耗量相差甚远时触发。

DevOps Guru for Serverless 入门
要开始使用,请导航到 DevOps Guru 控制台,为基于 Lambda 的应用程序、其他受支持的资源或整个账户启用该服务。

配置 DevOps Guru

在本演示中,创建一个预置并发为 1 的新 Lambda 函数。您可以通过 AWS 控制台或以编程方式执行此操作。创建后,您可以在函数概览页面看到预置并发设置为 1。

配置 Lambda 预置并发

向 Lambda 函数添加每分钟触发一次函数的 CloudWatch 事件。您可以通过 AWS 控制台或以编程方式执行该操作。您可以按照本教程学习如何操作。再重复该过程五次。现在,该函数每分钟将通过不同的事件触发六次。

要触发主动洞察,您需要对此 Lambda 函数进行六次并发调用。要做到这一点,您需要确保每次调用的持续时间足够长。在本演示中,您可以让函数休眠 30 秒。

'use strict';

exports.handler = async (event) => {
  
    console.log('Sleep for 30 seconds')
    await new Promise(r => setTimeout(r, 30000));
    console.log('finish sleeping')

    return;
};

此配置将触发此函数超出 Lambda 预置并发函数限制的主动洞察。问题开始后的三个小时或更短时间内,您应该会在控制台中看到该洞察。

如何通过 DevOps Guru 控制台查看洞察
几个小时后,您可以访问 DevOps Guru 控制台,并且可以验证主动洞察是否因超出预置并发而触发。

主动洞察列表

选择 Ongoing(持续)洞察以查看更多详细信息。此时将打开洞察页面,其中显示与此问题的洞察、指标、事件和建议的操作相关的信息。

我们更详细地看一下这个页面。页面顶部是洞察概览,其中包含洞察的内容和问题严重性的描述。这是一个主动洞察,因此用户体验不会受到此问题的影响。您还可以了解问题是否持续存在以及何时开始。如果问题不再发生,您可以了解该洞察的结束日期。如果您选择受影响应用程序的链接,则可以确认受此洞察影响的所有 Lambda 函数。

洞察描述信息框

下一个信息框包含与主动洞察相关的 CloudWatch 指标的相关信息。此图表显示了 ProvisionedConcurrecySpilloverInvocations 指标,以及预置并发溢出的最近几个小时内所有调用的摘要。

有关指标的信息

Relevant events(相关事件)是页面上的下一个信息框。这些是 AWS CloudTrail 事件,DevOps Guru 将这些事件与 CloudWatch 指标和运行数据结合使用,以识别产生洞察的异常行为。

有关洞察的相关信息

页面的最后是 Recommendations(建议)信息框,DevOps Guru 将在其中输出所有生成的建议以帮助您解决问题。您可以使用这些建议来了解可以立即采取哪些步骤来解决问题。

对洞察的建议

在此主动洞察中,DevOps Guru 建议您调整 Lambda 函数的预置并发。此建议会根据函数过去的使用情况告诉您要将它设置为哪个值。您还可以找到 DevOps Guru 推荐这种洞察的理由。

定价和可用性
DevOps Guru for Serverless 免费提供给客户。

DevOps Guru for Serverless 已在提供 DevOps Guru 的所有 AWS 区域推出:美国东部(俄亥俄)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、欧洲(法兰克福)、欧洲(爱尔兰)和欧洲(斯德哥尔摩)。

详细了解 DevOps Guru for Serverless注册参加 5 月 10 日的动手实践研讨会,了解有关此次新发布的更多信息。

Marcia