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

前言

我们于 2022年5月 宣布推出 Amazon DevOps Guru for Serverless ,这是面向 Amazon DevOps Guru https://aws.amazon.com/devops-guru/的全新功能。通过此功能,开发人员能够提高无服务器应用程序的运行性能和可用性。该产品链接可点击:https://aws.amazon.com/devops-guru/features/devops-guru-for-serverless

亚马逊云科技于2014年推出Amazon Lambda https://aws.amazon.com/blogs/aws/run-code-cloud/,开创了无服务器计算领域的先河。如今,成千上万的客户正在使用 Amazon Lambda,Amaon Lambda 允许您为函数配置许多参数,例如内存分配、预置并发和超时。对于许多客户来说,在所有这些参数之间找到适当的平衡以优化其函数的性能和可用性是一项艰巨的任务。该产品链接可点击https://aws.amazon.com/cn/lambda/

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

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

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

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

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

Amazon DevOps Guru for Serverless 主动洞察

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

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

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

  • Amazon Lambda 并发执行数达到账户限制 – 当并发执行数连续达到账户限制时触发。

  • 超出 Amazon Lambda 预置并发函数限制 – 当预置并发的预留量在一段时间内不足时触发。

  • 与 SQS 的可见性超时相比,Amazon Lambda 超时较高 – 当 Amazon Lambda 函数的持续时间超过事件源 Amazon Simple Queue Service(Amazon SQS)的可见性超时时触发。

  • Amazon Lambda 预置并发使用率低于预期 – 当预置并发的利用率过低时触发。

  • Amazon DynamoDB 消耗的账户读/写容量达到账户限制 – 当账户在一段时间内消耗的容量接近账户级别限制时触发。

  • Amazon DynamoDB 表读/写消耗的容量达到表限制 – 当表中的写或读在一段时间内达到表的 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 限制时触发。

  • Amazon DynamoDB 表消耗的容量达到 AutoScaling Max 参数限制 – 当表消耗的容量在一段时间内达到 AutoScaling Max 参数限制时触发。

  • Amazon DynamoDB 读/写消耗量低于预期 – 当 ProvisionedWriteCapacityUnits 或 ProvisionedReadCapacityUnits 的值与一段时间内的消耗量相差甚远时触发。

Amazon DevOps Guru for Serverless 入门

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

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

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

要触发主动洞察,您需要对此 Amazon 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;
};

左滑查看更多

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

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

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

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

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

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

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

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

定价和可用性

Amazon DevOps Guru for Serverless 免费提供给客户。

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

详细了解 Amazon DevOps Guru for Serverless https://aws.amazon.com/cn/devops-guru/features/devops-guru-for-serverless/ ,了解有关此次新发布的更多信息。

本篇作者

Marcia Villalba

亚马逊云科技开发者布道师

她从事专业设计和开发软件已有15年之久,并在构建可扩展和高性能软件的所有阶段工作。她对在云中构建应用程序和使用DevOps流程有深入的了解。

原文地址:https://www.cnblogs.com/AmazonwebService/p/16308930.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


前言我们于2022年5月宣布推出 AmazonDevOpsGuruforServerless ,这是面向AmazonDevOpsGuru https://aws.amazon.com/devops-guru/的全新功能。通过此功能,开发人员能够提高无服务器应用程序的运行性能和可用性。该产品链接可点击:https://aws.amazon.com/devops-guru/fe
GIT、GITLAB、GITHUB、GITLIBGit是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越...
初识JFrog Artifactory背景在软件项目开发中,一个项目常常依赖于大量的外部库,而这些外部库又在不断的进行版本更新,特别是在当前微服务开发越来越流行的情况下,一个服务依赖于多个服务,如何管理依赖库以及依赖版本,确保开发有序进行呢?JFrog ArtiFactoryArtiFactory是一款二进制存储管理工具,用来管理构建构建工具(如:gradle)等所依赖的二进制仓库,以方...
在删除文件夹的时候,可能会遇到文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开,请关闭该文件夹或或文件,然后重试。这类无法关闭删除文件夹的情况,如下图所示。 解决这个的关键是,找到是哪个程序在使用该文件夹,把这个程序关闭掉就行了。 但有时说实在的并不好找。 下面来介绍一个方便的找到这些程序的方法。 首先按ctrl+shitf+esc快捷键,打开任务管理器。然后...
xcopy 若目标盘上不存在此子目录,而在目标盘的结束符又不以""为结束,则将提示:does destination specify a file name or directory name on the target[f=file,d=directory]?在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键如何在命令中指定copy的是一个文件或者目录?而不用再手动输入F或...
DevOps软件开发工艺解读随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,这之中困难重重。另一方面,行业竞争更加激烈,无论是客户还是公司自身,都要求软件能快速发布,频繁修改,而上边所说的这种隔阂,阻碍了开发团队的生产力,成了企业亟待解决的难题。面对...
创建任务创建任务比较简单,这里我们创建自由风格项目:General信息这里填写项目或任务的基本信息,如下:GitBucket这里我们用到的就以下两点,一个是参数化构建:构建的时候可以指定部分参数,比如这里我们这里指定要构建的分支作参数,第二个是丢弃旧的构建:这样每次构建都会丢弃之前历史构建,防止jenkins构建项目过多导致内存泄漏等问题:源码管理源码管理主要是填写我们要构建的...
一、在任务设置-构建触发器模块,选中“Build periodically”二、然后在日程表里输入你的定时构建时间,输入的时间语法参考如下:1、时间字段遵循cron的语法,每行由TAB或空格分隔的5个字段组成:MINUTE HOUR DOM MONOW DOW - 分钟:小时内的分钟数(0-59) - 小时 :一天中的小时(0-23) - DOM:月份的日子(1-31) ...
DevOps进阶(九)使用assembly plugin实现自定义打包assembly plugin的使用方式比较简单,主要有:1. 修改pom.xml pom.xml中设置如下:<build> <plugins> <plugin> <artifactId&g
<h2 id="1-操作环境"><strong>1. 操作环境</strong></h2>1. Windows:win72. JenkinsJenkins 1.6193. JavaJDK_1.7.0_64bit.exe4. Tomcatapache-tomcat-8.
在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。一.find命令基本格式:find path expres......
走近DevOps工程师我们之前已经听到很多谈论DevOps和DevOps世界的最新趋势的事情,但是就DevOps工程师本身,到底干些什么呢?在最纯粹的存在形式上来说,DevOps工程师是为了加快开发和运营团队之间的交付效率而存在的桥梁。DevOps工程师在软件生命周期中能带来什么?在传统的交付周期中,软件开发人员会在经年累月的编写代码后,将软件交给QA团队进行测试,然后将最终版本交给运营...
1、关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http://localhost:8080/exit 网址就能关闭jenkins服务.2、重启Jenkieshttp://localhost:8080/restart3、重新加载配置信息http...
   我们在执行Jenkins的项目构建的时候一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建;要启用Token(令牌)远程触发项目构建首先要保证Jenkins服务安装了build-token-root 插件,...
maven三种打包插件maven有多种可以打包的插件,如下: plugin function 官网 maven-jar-plugin maven 默认打包插件,用来创建 project jar maven-shade-plugin 用来打可执行包,executable(fat) jar http://maven.apache.org/plug...
Linux下查看和添加环境变量$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。编辑你的 PATH 声明,其格式为:PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后......
贾磊:高级质量经理&敏捷教练曾就职于外企、国企、大型上市企业等,担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原文链接:https://www.scaledagileframework.com/continuous-explorati
在IT流行语的字母组合中,DevSecOps是一个很容易让人混淆的缩写。DevSecOps是一个特定工具吗?是否有DevSecOps流程或最佳实践?DevSecOps应该成为内部IT部门的优先事项,还是更广泛的公司理念?如果一个公司已经利用了DevOps的流程和技术栈,那么它应该升级到DevSecOps吗?或者这只
企业项目开发流程商城1.1B2C直销商城商家与会员直接交易(BusinessToCustomer)1.2B2B批发商城商家与商家直接交易1.3B2B2C购物平台商家和会员在另一个商家提供的平台上面进行交易1.4C2B定制商城会员向商家发起定制商品的需求,商家去完成。1.5O2O线上线下
jenkins清除工作空间报错 错误如下: Error:WipeOutWorkspaceblockedbySCM   解决方法:进入jenkins服务器,进入workspace,手动rmcd/var/jenkins_home/workspace  ===================注释==================如果你的启动命令如下:【进行了外部目录的挂载