AWS Limit Monitor,主动跟踪资源使用情况,接近limits时推送通知提醒

文 | 沉默恶魔(转载请注明出处)
微信号:chenmoemo
关注公众号:AWS爱好者

如果您想加入「AWS爱好者」微信群和其他同学交流,请加微信:chenmoemo,后拉入「AWS爱好者」微信群。

我们今天讨论的主题是AWS Limit Monitor,该解决方案会自动配置必要的服务,以便在您使用AWS的过程中,当使用的资源接近limits限制时主动跟踪资源使用情况并发送通知,帮助您避免有启动资源需求时才发现limits到上限造成无法启动资源从而影响线上业务的情况。


什么是AWS service limits(服务限制)?

为帮助AWS所有客户提供高可用性,可靠性和强健的服务,并最大程度地减少新客户的账单风险,Amazon Web Services(AWS)维护每个帐户的服务限制,也就是service limits。

登陆AWS控制台,选择EC2服务,然后点击左侧“限制”后,可以看到EC2服务相关的limits信息。那什么是limits呢?如图中“正在运行按需 t2.micro”,限制类型为“正在运行的实例”,当前限制为20,是指按需T2.micro,在当前的账号,在当前区域,您正在运行的实例最大限制为20个,如果要超过20个就需要提前向AWS申请提升limits。

AWS设置limits是为了避免客户因为恶意攻击或者脚本操作失误等等造成开启大量资源产生账单风险。

几乎每项AWS服务都是根据您在给定时间可以在特定AWS区域内启动多少资源来控制的。但是,有时即使是最有经验的AWS客户也可能会意外达到服务限制,因为申请开limits无法实时生效,那就会导致无法启动新资源,对业务造成影响。所以如何能够主动跟踪AWS账户的资源使用情况,当接近limits的时候主动推送提醒,让我们第一时间收到提醒,这个解决方案就产生了:

AWS Limit Monitor解决方案

为了根据服务限制更主动地跟踪其AWS资源使用情况,AWS提供了AWS Limit Monitor解决方案,该方案会自动配置必要的服务,以便在接近limits限制时主动跟踪资源使用情况并发送通知。而且该解决方案易于部署,利用AWS Trusted Advisor服务Limits检查和服务配额来帮助您显示特定AWS服务的使用情况和Limits,并集中管理您的Limits。借助AWS Limit Monitor,您可以接收电子邮件通知或将通知发送到现有的Slack,从而使您可以请求增加Limits或在达到Limits之前关闭资源。

Note:

要使用此解决方案,AWS帐户必须具有Business或Enterprise 的AWS Support,才能访问Trusted Advisor服务limits检查。

AWS Limit Monitor架构概述

部署此解决方案将会在AWS Cloud中构建以下环境。

介绍一下这个方案的架构,上面这个架构图看着比较复杂,其实很多都是可选项,在您的业务不需要管理Secondary账户limits、slack推送或vCPU limits时可以不对这些单项内容进行配置。

基础架构非常简单,AWS Limit Monitor包括一个在主账户中部署的模板。该模板会启动一个AWS Lambda函数,该函数每24小时运行一次。(调用频率可通过AWS cloudFormation模板调整)。Lambda函数通过API调用刷新AWS Trusted Advisor服务limits检查,获取最新的使用情况和limits数据。Trusted Advisor将根据limits和使用情况计算使用量,以确定状态是正常(使用率低于80%),警告(使用率在80%至99%之间)还是错误(使用率100%),这个就是这个架构的核心的功能。

最近aws对于limits做了一些调整,登陆控制台后进入到EC2的-限制页面,在页面最上面就会收到通知以及调整的内容:

简单的说就是从实例计数limits调整为vCPU计数限制(由于此调整不是本文重点,故不赘述),在我们这个AWS Limit Monitor方案中,如果您选择监视基于Amazon Elastic Compute Cloud(Amazon EC2)的虚拟中央处理器(基于vCPU)的限制,则模板将启动另一个Lambda函数,该函数每五分钟运行一次。该功能检查服务配额以检索每个AWS区域的vCPU使用率和limits数据。该函数根据limits计算vCPU使用率,以确定状态是“正常”(利用率低于80%),“警告”(利用率在80%至99%之间)还是“错误”(利用率100%)。

前面介绍了两个Lambda函数的功能,然后由Amazon CloudWatch Events从Trusted Advisor和vCPU监视Lambda函数捕获状态事件,并使用一组CloudWatch Events规则将状态事件发送到您在解决方案的初始部署期间选择的所有目标:Amazon Simple Queue Service(Amazon SQS)队列,Amazon Simple Notification Service(Amazon SNS)主题(可选)或Slack通知的Lambda函数(可选)。

Amazon SQS接收所有OK,WARN和ERROR状态事件,并将它们发送到存储事件的Amazon DynamoDB表。默认情况下,Amazon SNS和Slack仅接收WARN和ERROR状态事件。但是,您可以根据自己的特定需求自定义通知。

以上,就是AWS Limit Monitor方案的架构及组成部分。

如果在初始部署期间启用了Slack通知,则该解决方案将启动一个Lambda函数,该函数将通知发送到您现有的Slack频道。还将部署一个AWS Systems Manager参数存储,以为Slack WebHook URL提供高可用性,安全,持久的存储,该URL用于将消息发送到Slack通道。

以上就是AWS Limit Monitor的架构组成部分。

支持多AWS账户架构

该解决方案还包括一个secondary模板,您可以将其部署在您的secondary账户和其他AWS区域中。可以对多账户进行limits集中管理,追踪资源的使用情况,接近limits时推送通知。

secondary模板会启动一个Lambda函数,该函数刷新secondary帐户中的Trusted Advisor服务limits检查。如果启用,此模板还将启动一个Lambda函数,以检查服务配额中的vCPU限制。secondary帐户中的CloudWatch Events捕获这两个功能的状态事件,并使用CloudWatch Event Bus将这些事件发送到主帐户。在主帐户中收到这些事件后,CloudWatch Events规则会将事件发送到您选择的目标。


以上,今天我们介绍了AWS Limit Monitor解决方案的内容,AWS Limit Monitor能让我们轻松管理和跟踪limits使用情况,接近limits上限推送提醒,避免了有启动资源需求时才发现limits到上限造成无法启动资源从而影响线上业务的情况,希望能够给大家带来帮助。

本文AWS Limit Monitor的后续内容,实际演示部署AWS Limit Monitor解决方案,我们下次再见吧。

0 responses on "AWS Limit Monitor,主动跟踪资源使用情况,接近limits时推送通知提醒"

Leave a Message

error: Content is protected !!