监控 Amazon Cloud Compute (EC2)

编辑

弹性计算云(Amazon EC2)使您可以按需配置计算资源,以称为实例的虚拟服务器的形式。提供各种实例类型,具有不同的 CPU、内存、存储和网络容量。流行的预配置 Amazon 机器映像 (AMI) 可用于 Microsoft Windows 和 Ubuntu、Red Hat Enterprise Linux、CentOS、SUSE、Debian 和 Amazon Linux 等 Linux 发行版。Amazon 为 EC2 实例提供 Amazon 弹性块存储 (EBS) 卷以进行持久性块级存储。EC2 还可以与其他 AWS 服务(如 Auto Scaling)一起使用。

Amazon EC2 实例可以在不同的位置运行。位置由 AWS 区域和可用区 (AZ) 组成。AZ 是与其他 AZ 的故障隔离的不同位置,但提供较低的延迟网络连接。每个区域在地理上分散,可以由一个或多个 AZ 组成。

与大多数 AWS 服务一样,Amazon EC2 将其指标发送到 Amazon CloudWatch。Elastic Amazon EC2 集成使用 Elastic Agent 从 Amazon CloudWatch 收集指标。

默认情况下,CloudWatch 使用基本监控,以 5 分钟的间隔发布指标。您可以启用详细监控,以提高分辨率至 1 分钟,但需要额外付费。要了解如何启用详细监控,请参阅Amazon EC2 文档

CloudWatch 不会公开与 EC2 实例内存相关的指标。您可以在 EC2 实例上安装 Elastic Agent 以收集详细的系统指标。

开始使用
编辑

要收集 EC2 指标,您通常需要安装 Elastic Amazon EC2 集成并部署 Elastic Agent。

展开 快速指南 以了解如何操作,或者如果您的数据已在 Elasticsearch 中,请跳到下一节。

快速指南:添加数据

Elastic Agent 是目前添加 EC2 指标的首选方法。有关其他方法,请参阅将数据添加到 Elasticsearch

仪表板
编辑

Kibana 提供了一个完整的数据分析平台,其中包含开箱即用的仪表板,您可以克隆和增强这些仪表板以满足您的自定义可视化用例。例如,要在 Kibana 中查看您的 EC2 实例指标的概述,请转到 仪表板 应用并导航到 [指标 AWS] EC2 概述 仪表板。

Screenshot showing the EC2 overview dashboard
要监视的指标
编辑

Amazon EC2 提供了大量的实例类型选择。监控有关您的实例的关键指标是一种经济高效的方式,可以确定是否需要升级、更改或缩小实例。

本节列出了您应该监视的关键指标,并按类别组织。有关导出的字段的完整描述,请参阅Amazon EC2 集成文档

CPU 利用率编辑

以下是您应该监视的关键 CPU 利用率指标以及在这些指标中应注意的事项

aws.ec2.metrics.CPUUtilization.avg

这衡量了实例上当前正在使用的已分配 EC2 计算单元的百分比。跟踪此指标有助于确保实例的大小适合您的工作负载。如果您看到应用程序性能下降,同时 CPU 使用率持续很高(没有任何伴随的网络、磁盘 I/O 或内存限制),则 CPU 可能是资源瓶颈。您可以使用应用程序性能监控来查看应用程序级数据,和/或可能切换到使用具有更多 vCPU 的实例类型。

EC2 实例的 CPU 利用率非常低(例如,连续数周小于 5%)也可以帮助您确定您的实例是否未充分利用您的工作负载,并且可能可以使用较小的实例类型来替换以节省成本。

aws.ec2.metrics.CPUCreditBalance.avg & aws.ec2.metrics.CPUCreditUsage.avg

T 实例系列提供基准 CPU 性能,并且能够突发至高于基准性能。这些实例非常适合通常 CPU 密集度不高,但可能会在短时间内受益于更高 CPU 容量的应用程序。每当实例在低于其基准 CPU 性能水平运行时,就会获得积分。

Amazon EC2 CPU 积分指标有助于跟踪您的可用余额和使用情况,以便您了解由于扩展突发而可能产生的费用。监控实例的积分使用情况可以帮助您确定是否可能需要切换到针对 CPU 密集型工作负载优化的实例类型。

aws.ec2.metrics.CPUSurplusCreditBalance.avg & aws.ec2.metrics.CPUSurplusCreditsCharged.avg

配置为无限制的突发性能实例可以在需要时随时持续高 CPU 利用率。T4g、T3a 和 T3 实例默认作为无限制实例启动。如果 24 小时内的平均 CPU 使用率超过基准,则您将产生额外积分的费用。

CPU 剩余积分余额指标跟踪累积余额。CPU 剩余积分费用衡量将导致额外费用的额外积分。

磁盘 I/O编辑

Amazon EC2 为您的实例提供多种数据存储选项,包括 Amazon EC2 实例存储和 Amazon 弹性块存储 (Amazon EBS)。

实例存储为您的实例提供临时的块级存储,通常用于临时存储信息,如缓冲区、缓存、暂存数据和其他临时内容。实例存储中的数据仅在其关联实例的生命周期内持久存在。当您停止、休眠或终止实例时,实例存储中的每个存储块都会重置。

对于有价值的长期数据,请使用更持久的数据存储,如 Amazon EBS。附加到实例的 EBS 卷以存储卷的形式公开,这些卷独立于实例的生命周期而持久存在。EBS 卷适合用作文件系统或数据库的主要存储。

CloudWatch EC2 磁盘 I/O 指标仅收集来自实例存储卷的数据。

CloudWatch EC2 命名空间确实提供了一组 Amazon EBS 磁盘 I/O 指标,但这些指标仅适用于基于 Nitro 系统的实例。对于所有其他实例类型,EBS 卷的磁盘 I/O 必须通过 Elastic Amazon EBS 集成进行监控。

以下是您应该监视的关键磁盘 I/O 指标以及应注意的事项

aws.ec2.metrics.DiskReadBytes.sum & aws.ec2.metrics.DiskWriteBytes.sum
aws.ec2.metrics.DiskReadBytes.rate & aws.ec2.metrics.DiskWriteBytes.rate

磁盘读取和磁盘写入字节数衡量从附加到 EC2 实例的实例存储卷读取和写入的字节数。监控这些指标可以帮助您了解应用程序级别的问题。从磁盘读取过多一致的数据可能表明您的应用程序可以从缓存层中受益。如果磁盘速度不足以匹配用例,则长期大量的磁盘写入可能意味着请求排队和潜在的应用程序减速。

每秒磁盘读取字节数和每秒磁盘写入字节数提供指定时间段的平均读取/写入数据大小。

aws.ec2.metrics.DiskReadOps.sum & aws.ec2.metrics.DiskWriteOps.sum
aws.ec2.metrics.DiskReadOps.rate & aws.ec2.metrics.DiskWriteOps.rate

磁盘读/写操作计数可以让你了解平均读/写操作次数,这可以帮助你确定性能下降是否是由于每秒持续高 I/O 操作 (IOPS) 导致磁盘请求排队而造成的瓶颈。如果你的实例卷是 HDD,你可以考虑迁移到更快的 SSD 磁盘。

每秒磁盘读/写操作计数提供指定时间段内的平均读/写 IOPS。

网络编辑

网络带宽是云服务中的一项关键资源。EC2 实例的可用网络带宽取决于该实例拥有的 vCPU 数量。它还取决于流量的目的地,其中实例在区域内可以使用全部网络带宽,但在其他区域只能使用 50% 的网络带宽,具体取决于使用场景。带宽范围可以从 5 到 25 Gbps。最大传输单元 (MTU) 也有限制,即单个数据包中可以发送的最大数据量,范围可以从 1,300 到 1,500 字节。然而,当前一代的实例类型支持高达 9001 MTU 的巨型帧,从而增加了每个数据包的有效负载大小,并可能减少传输大量数据的应用程序的开销。

AWS 提供了各种配置选项,如放置组和增强网络,以优化网络性能。

以下是你应该监控的关键网络指标以及需要注意的事项

aws.ec2.metrics.NetworkIn.sum & aws.ec2.metrics.NetworkOut.sum
aws.ec2.metrics.NetworkIn.rate & aws.ec2.metrics.NetworkOut.rate

这些指标报告你的 EC2 实例的网络吞吐量(以字节为单位)。任何网络丢包或波动都可能与应用程序指标相关联,以找到可能问题的根本原因。任何吞吐量限制可能表明实例类型与应用程序需求不匹配,尤其是对于数据密集型应用程序。

当查看一组 EC2 实例数据时,如果发现网络流量负载存在显著差异,你可能需要使用负载均衡器将负载更均匀地分配到相关的实例上,从而获得更好的性能。

状态检查编辑

以下是你应该监控的关键状态检查指标以及需要注意的事项

aws.ec2.metrics.StatusCheckFailed.avg

此检查报告实例是否通过了实例状态检查和系统状态检查。如果实例通过了系统状态检查,则此检查返回 0(通过),如果失败,则返回 1(失败)。

Elastic Amazon EC2 集成还收集重要的云元数据,如实例名称 (cloud.instance.name=elastic-package-test-33138)、实例 ID (cloud.instance.id=i-0de58890d94dda2e3)、帐户名称 (cloud.account.name=elastic-beats)、帐户 ID (cloud.account.id=428152502467)、提供商 (cloud.provider=aws)、区域 (cloud.region=us-east-1)、可用区 (cloud.availability_zone=us-east-1c) 和实例类型 (cloud.machine.type=t1.micro)。这些元数据有助于对收集的数据进行分组和过滤,并有助于推动一组相关 EC2 实例的各种使用情况和性能趋势。

Elastic EC2 集成附带一个默认仪表板,其中显示了关键指标,如状态检查、CPU 利用率、磁盘 I/O 和网络吞吐量。它还提供了区域、可用区和机器类型的过滤。

aws.ec2.metrics.StatusCheckFailed_Instance.avg

此检查监控实例的软件和网络配置。可能导致实例状态检查失败的问题包括:不正确的网络或启动配置、内存耗尽、文件系统损坏、不兼容的内核等。当实例状态检查失败时,你通常必须自己解决问题。你可能需要重启实例或更改实例配置。要对状态检查失败的实例进行故障排除,请参阅 Amazon EC2 文档

如果实例通过了系统状态检查,则此检查返回 0(通过),如果失败,则返回 1(失败)。

aws.ec2.metrics.StatusCheckFailed_System.avg

此状态检查会检测实例的底层问题,这些问题需要 AWS 参与修复。可能导致系统状态检查失败的问题包括:网络连接丢失、系统断电以及物理主机上的硬件/软件问题。对于由 Amazon EBS 支持的实例,你可以自己停止并启动实例,这在大多数情况下会导致实例迁移到新主机。对于由实例存储支持的实例,你可以终止并替换该实例。请注意,实例存储卷是临时的,当实例停止时,所有数据都将丢失。

如果实例通过了系统状态检查,则此检查返回 0(通过),如果失败,则返回 1(失败)。