亚马逊AWS官方博客

新功能 — Amazon DevOps Guru 帮助识别应用程序错误并修复

今天,我们宣布推出 Amazon DevOps Guru,这是一项完全托管的运营服务,通过自动检测运营问题并建议修复方法,开发人员和运营者可以轻松提高应用程序的可用性。DevOps Guru 利用来自 Amazon.com 和 Amazon Web Services (AWS) 的多年卓越运营经验,运用机器学习来自动收集和分析应用程序指标、日志和事件等数据,以识别偏离正常运营模式的行为。

一旦某个行为被确定为运营问题或风险,DevOps Guru 告知问题的详细信息以提醒开发人员和操作员,以便他们能够快速了解问题的范围和可能的原因。DevOps Guru 为修复问题提供了智能建议,从而节省了解决问题的时间。使用 DevOps Guru 时,您无需部署硬件或软件,只需为分析的数据付费,不需要前期成本或预先承诺。

分布式/复杂的架构和卓越运营
随着应用程序变得更加分布和复杂,运营人员需要更加自动化的做法来保持应用程序的可用性,减少检测、调试和解决运营问题所花费的时间和精力。由于配置错误、容器集群不平衡或资源耗尽等原因而导致的应用程序停机可能会给企业带来重大收入损失。

在许多情况下,公司必须让开发人员投入时间来部署和管理多种监控工具(如指标、日志、跟踪和事件),并将它们存储在不同位置以进行分析。开发人员或运营人员还需要花费时间开发和维护自定义警报,以提醒他们注意负载均衡器错误突然激增或应用程序请求率异常下降等问题。当出现问题时,运营人员会收到与同一问题相关的多个警报,因此需要花时间整合警报,从而确定需要立即关注的警报。

DevOps Guru 的工作原理
DevOps Guru 机器学习模型利用 AWS 在过去 20 年里为全球最大的电子商务业务运行高度可用的应用程序所积累的专业知识。DevOps Guru 会自动检测运营问题,详细说明可能的原因,并提供补救措施建议。DevOps Guru 通过支持 Amazon CloudWatchAWS ConfigAWS CloudTrailAWS CloudFormationAWS X-Ray,跨多个源集成数据,让客户可以使用单个控制台搜索和可视化运营数据,并降低了使用多种工具的需求。

DevOps Guru 入门
激活 DevOps Guru 时只需访问 AWS 管理控制台,然后单击启用。启用 DevOps Guru 时,您可以选择 IAM 角色。然后,您将选择要分析的 AWS 资源,其中可以包括 AWS 账户中的所有资源,也可以只包括指定的 CloudFormation 堆栈集。最后,如果您想通过 SNS 从 DevOps Guru 发送通知,可以设置 Amazon SNS 主题。

DevOps Guru 便会开始积累日志并分析您的环境;这可能需要几个小时。假设我们有一个简单的无服务器架构,如此图所示。

当系统出现错误时,运营人员需要调查错误是来自 Amazon API GatewayAWS Lambda 还是 AWS DynamoDB。然后,他们必须确定根本原因以及解决方法。使用 DevOps Guru 时,这个过程变得简单明了。

当开发人员访问 DevOps Guru 的管理控制台时,他们将看到见解列表,这是在分析应用程序内配置的 AWS 资源时创建的异常情况的集合。在此例中为 Amazon API Gateway、AWS Lambda 和 Amazon DynamoDB。每则见解都包含观察、建议和上下文数据,可用于更好地理解和解决运营问题。

下面的列表显示了见解的名称、状态(已关闭或持续)、严重性以及创建见解的时间。在不检查任何日志的情况下,您可以立即看到,在最近发生的问题 (line1) 中,堆栈中的 Lambda 函数出错是造成问题的原因,而且与持续时间有关。如果问题仍然存在,则状态将被列为“持续”。由于此问题是暂时性的,因此状态显示为“已关闭”。

见解

让我们通过单击第一个见解链接来深入了解最近发生的异常。有两个选项卡:聚合的指标绘成图表的异常

聚合的指标显示与见解相关的指标。运营人员可以看到 AWS CloudFormation 堆栈创建了发出指标的资源、资源的名称及其类型。时间轴上的红线表示指标发出异常值时的时间跨度。在此例中,运营人员可以看到 11 月 24 日每个指标出现异常的具体时间。

绘成图表的异常显示见解中每个异常的详细图表。运营人员可以在资源级别根据统计数据调查和分析异常。这些图表按指标名称进行分组。

指标

通过查看聚合的和绘成图表的异常,聚合的指标可以查看问题发生的时间、问题是否仍在持续,以及受影响的资源。看来 Lambda 持续时间的延长对 API Gateway 产生了相应的影响,导致超时,并导致 API Gateway 出现 5XX 错误。

Dev Ops Guru 还提供了与更改应用程序配置的活动相关的相关事件,如下所示。

事件

我们现在可以看到配置更改发生在此问题发生前 2 小时。如果我们在 11 月 24 日 20:30 点击图表上的点,我们可以查看变更的详细信息,从而进一步了解变更。

如果您单击进入运营事件AWS CloudTrail 日志将显示存在双重配置更改:1) Lambda 函数的并发预置容量发生变化;2) API 集成延迟的集成超时缩短。

修复建议

这些建议告诉运营人员评估 Lambda 的预置并发能力以及如何排查 API Gateway 中的错误。经过进一步评估,运营人员将发现这完全正确。根本原因是 Lambda 预置并发设置与 API Gateway 集成延迟超时之间不匹配。当 Lambda 配置在上次部署中更新时,它改变了此应用程序对突发流量的响应方式,导致不再与 API Gateway 超时窗口期匹配。在单元测试中不太可能发现此错误,如果配置未更新,则此错误会反复出现。

DevOps Guru 可以通过 Amazon SNS 向运营人员发送异常警报,并且它与 AWS Systems Manager OpsCenter 集成,让客户能够直接在 OpsCenter 中获得见解,以便快速诊断和修复问题。

今天即可试用预览版
以下区域提供 Amazon DevOps Guru 预览版:美国东部(弗吉尼亚北部)美国东部(俄亥俄)美国西部(俄勒冈)欧洲(爱尔兰)亚太地区(东京)。要了解更多关于 DevOps Guru 的信息,请访问我们的网站和阅读技术文档,并立即开始使用。

– Kame