获得AWS的EC2实例的可用时间
#aws #python #lambda #ec2

介绍

本文介绍了Web系统开发的第一部分,以获取和查看AWS中EC2实例的可用性和不可用时间。

该系统由两个部分组成:一个后端,我们将使用Python脚本来获取和处理必要的数据以生成报告和由简单的Pânão组成的边界,该pânão将使用HTML,JavaScript和CSS,以提供一个提供一个仪表板上带有粮仓和见解的eC2实例。

拟议的建筑

使用此体系结构,我们将拥有一个lambda函数,该功能将从CloudWatch中从CloudWatch中收集,以获取帐户的所有帐户。更好的是,Lambda会对其进行处理,并将结果存储在水桶S3中。 Bucket将将这些结果与将构成系统的HTML,JavaScript和CSS文件一起存储在.CSV文件中。我们将使用CloudFront分发遏制,并保护对授权常规的访问。

这样,我们将拥有一个仪表板,其中包括所有EC2实例的时间,时间为数小时,可处置和不可用。另外,可以以CSV格式下载此报告以更好地管理。

状态检查技巧

状态检查母亲在AWS中是一种监测特定区域中亚马逊EC2(弹性计算云)的健康和性能的一种方式。这些妈妈提供有关即时组件完整性的信息,例如虚拟化层,网络连接和操作系统。

让我们快速传递每个角色:

  1. statuscheckfailed :此trica报告了实例在最后一刻的实例状态和系统状态验证和系统的分配中是否已通过。它具有一个BAM,其中0表示它已经过去了,而1表示失败。按照模式,这个母亲每分钟都可以自由处置。这个母亲的单位正在计数。

  2. statuscheckfailed_instance :此动作告诉实例是否已在最后一分钟检查实例状态中传递。与较早的母亲类似,她的BAM值为0(通过)或1(失败)。另外,每分钟免费免费,其单位在计数。

  3. statuscheckfailed_system :此母亲指示实例是否已在最后一分钟传递了系统状态。再次,它的BAM值为0(通过)或1(失败)。免费可用性和一分钟的频率也适用于这个母亲,其单位在计数。

通过伴随这些妈妈,可以在检查检查中发生缺陷时识别出问题并采取纠正措施。

基于在CloudWatch中注册的状态检查尝试,我们可以计算实例的可用性时间。在监视检查状态中的缺陷并计算实例通过这些检查的时间时,可以估算到实例被处置的时间。

但是,重要的是要强调,这种方法是一种估计值,取决于徒劳的因素,例如妈妈的验证频率。此外,还有其他因素可能会影响本能的可用性,例如操作系统更新,编程维护,较大的形式事件等。

计算停机时间和正常运行时间

为了计算本能的可用性时间,我们将使用Python代码在Lambda函数中运行,该函数的主要比例是生成Amazon EC2 Instant fosubility Report AWS区域。它使用BOTO3库与AWS服务进行交互,例如CloudWatch和S3。

关于配置的每个记录的iTera代码,然后获取有关每个注册中存在的EC2实例的信息。对于每个实例,使用CloudWatch从状态失败中收集它们。基于这些母亲,代码计算每个实例的可用性和不可用的时间。

apons处理所有区域和实例,数据存储在列表中,然后以CSV文件发送到指定的存储桶S3。该报告包含信息,例如实例,名称,类型,平台,可用性时间,无法可用和可用性百分比。

降低代码neste存储库。

是时候把母亲放在面团里了。让我们走!

1- criar桶S3

访问Amazon S3控制台,然后单击创建桶。 dãª为您的存储桶的名称,然后选择您的喜好注册。

将其余选项作为标准放置,然后单击创建桶

2-创建AMI

的函数

在IAM控制台上,单击策略在左侧菜单上,然后创建策略。单击JSON选项卡,然后用以下方式替换JSON代码:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::your-bucket-name-123456/*"
        }
    ]
}

因此,将使用此ral的lambda函数仅限制对桶中的访问。

用您先前创建的存储桶的名称替换Koud0行上的Bucket的名称。提前到评论给出您的polycy名称,然后单击创建策略

让我们去创建角色,并攻击脚本操作的其他必要条件。在左侧菜单上单击角色,然后在上创建角色

em 受信任的实体类型选择 aws服务,标记服务 lambda 并提前攻击必要的政策。

em 添加权限搜索您之前创建的策略,并在名称旁边标记以选择它的框。以下策略的相同过程:

  • CloudWatchLogsReadonLyAccess
  • Amazonec2ReadonLyAccess

提前选择您的角色名称并查看受攻击的多维斯。完成此操作,单击创建角色

3- criarfun§ã§olambda

访问lambda控制台,然后单击创建功能。从头开始选择选项作者以从代码的示例开始。 dãªlambda功能的名称,然后选择运行时 python 3.10

更改默认执行角色选择使用现有的Rolle ,然后选择您在上一步中创建的角色。完成此完成的单击创建功能

现在您已经创建了该函数,将示例的示例替换为neste reposition的课程。插入代码后,单击部署保存更改。

这样做,它涉及配置 tab,然后将超时更改为2分钟(根据环境的本能设置更长或更短的时间) 。

记住要更改区域 bucket Name 文件名在脚本上。

对于测试选项卡以设置新测试。 dãª是事件的名称,然后单击保存

保存,运行测试。如果一切顺利,您会看到下图的saãda。

3- configurar eventbridge

在函数功能的顶部,在函数概述,单击添加触发器

触发配置中选择 eventbridge(CloudWatch Events)。创建一个新规则,为规则命名,然后选择计划表达式插入Chron。
在这里,您可以配置最能满足您需求的表达式。在此示例中,我使用一个表达式每30分钟调用Lambda功能。

cron(0/30 * * * ? *)

apits插入值单击添加

4-下载生成的报告

回到创建的存储桶,在脚本生成的.csv文件的数据/faã和faã中导航。

文件的第一列涉及实例的特殊性,例如ID,名称,大小和操作系统。

有关可用性的信息在upputtime_hours,dasttime_hours和hours_used列中。

  • uptime_hours :实例被处置和操作的时间。
  • disttime_hours :实例不可用而无法运行的时间(由于状态检查驱动器检测到某些故障)。
  • hours_used :无论操作或操作员如何,都保持实例的总时间。

最后,我们拥有start_date和end_date列,代表报告所基于的报告。通过脚本的配置,报告将始终从母亲的第一天开始。当前妈妈的每份报告。

包括£o

我们总结了系统的第一部分。这样,我们有一个后端,它为我们带来了帐户EC2实例的可用性和不可用的报告。

在本文的第2部分中,我们将使用HTML,JavaScript和CSS创建一个边界,以更加欣赏的方式显示此报告,当然,让我们使用为此实用的AWS服务,目的是为了可能的成本。 Atâ©!