Bahubali Shetti

稍等… Elastic Observability 仅需几分钟即可监控 AWS 服务的指标?

只需几分钟即可从您的 AWS 部署和 Elastic Observability 获取指标和日志!我们将向您展示如何使用 Elastic 集成来快速监控和管理您的应用程序和 AWS 服务的性能,从而简化故障排除。

12 分钟阅读
Wait… Elastic Observability monitors metrics for AWS services in just minutes?

在消费者和快节奏业务中,“始终在线”的需求推动了向分布式应用程序的转型。这种需求促使部署具有更复杂的要求,以及在全球范围内实现多样化和快速创新的能力。

云正在成为当今应用程序的事实部署选项。许多云部署选择将应用程序托管在 AWS 上,因为它覆盖了全球多样化的区域,并提供了大量服务(用于更快的开发和创新),同时还降低了运营和资本成本。在 AWS 上,开发团队发现迁移到 Amazon EKS 上的 Kubernetes、测试最新的无服务器选项以及通过更好的服务改进传统的、分层的应用程序具有额外价值。

Elastic Observability 为 AWS 服务提供了 30 个开箱即用的集成,并且未来还将推出更多集成。

上一篇文章中可以找到对一些集成和功能的快速回顾

以下是一些关于 Elastic 上主要 AWS 服务集成的其他文章

您可以在 Elastic 的在线文档中找到 AWS 集成的完整列表

除了我们的原生 AWS 集成之外,Elastic Observability 不仅聚合了日志,还聚合了 AWS 服务和在 AWS 计算服务(EC2、Lambda、EKS/ECS/Fargate)上运行的应用程序的指标。所有这些数据都可以使用 Elastic 的高级机器学习功能以可视化和更直观的方式进行分析,这有助于在最终用户受到影响之前检测性能问题并找出根本原因。

有关 Elastic Observability 如何提供应用程序性能监控 (APM) 功能(例如服务地图、跟踪、依赖项和基于 ML 的指标相关性)的更多详细信息

没错,Elastic 为 AWS 服务和 AWS 计算服务(EC2、Lambda、EKS/ECS/Fargate)上的应用程序提供指标提取、聚合和分析。Elastic 不仅仅是日志——它为 AWS 环境提供统一的可观测性解决方案。

在这篇博客中,我将回顾 Elastic Observability 如何监控在 AWS 服务上运行的简单 AWS 应用程序的指标,其中包括

  • AWS EC2
  • AWS ELB
  • AWS RDS (AuroraDB)
  • AWS NAT 网关

您将看到,一旦安装了集成,指标将立即到达,您可以立即开始查看指标。

先决条件和配置

如果您打算按照这篇博客进行操作,以下是我们用于设置此演示的一些组件和详细信息

三层应用程序概述

在我们深入研究 Elastic 配置之前,让我们回顾一下我们正在监控的内容。如果您按照 aws-three-tier-web-architecture-workshop 的说明进行操作,您将部署以下内容。

已部署的内容

  • 1 个包含 6 个子网的 VPC
  • 2 个可用区
  • 每个可用区 2 个 Web 服务器
  • 每个可用区 2 个应用程序服务器
  • 1 个面向外部的应用程序负载均衡器
  • 1 个面向内部的应用程序负载均衡器
  • 2 个用于管理到应用程序层的流量的 NAT 网关
  • 1 个 Internet 网关
  • 1 个带有读取副本的 RDS Aurora DB

在博客结尾,我们还将提供一个 Playwright 脚本,以便您加载此应用程序。这将有助于驱动指标以“点亮”仪表板。

全部设置

让我们逐步介绍如何获取应用程序、Elastic 上的 AWS 集成以及提取的内容的详细信息。

步骤 0:加载 AWS 三层应用程序并获取您的凭据

请按照 AWS 三层应用程序中列出的说明和 git 上研讨会链接中的说明进行操作。研讨会此处列出。

安装应用程序后,从 AWS 获取凭据。这将是 Elastic 的 AWS 集成所必需的。

有几种凭据选项

  • 直接使用访问密钥
  • 使用临时安全凭据
  • 使用共享凭据文件
  • 使用 IAM 角色 Amazon 资源名称 (ARN)

有关必要的 凭据权限的更多详细信息。

步骤 1:在 Elastic Cloud 上获取一个帐户

按照说明开始使用 Elastic Cloud

第二步:安装 Elastic AWS 集成

导航到 Elastic 上的 AWS 集成。

选择“添加 AWS 集成”。

您将在此处添加您的凭据,它将作为策略存储在 Elastic 中。此策略将在下一步中用作代理安装的一部分。

如您所见,通用的 Elastic AWS 集成将从 30 个 AWS 服务中收集大量数据。如果您不想安装此通用的 Elastic AWS 集成,可以选择安装单独的集成。

第三步:安装带有 AWS 集成的 Elastic Agent

创建集成策略后,导航到 Elastic 中“管理”下的“Fleet”部分。

选择您在上一步中创建的策略的名称。

按照添加代理窗口中的说明执行步骤 3。这将需要您执行以下操作:

1:启动一个 EC2 实例

  • t2.medium 是最低配置
  • Linux - 您可以选择任何版本
  • 在启动 EC2 实例时,请确保允许开放预留

2:登录到实例并运行“Linux Tar”选项卡下的命令(以下是一个示例)

curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.5.0-linux-x86_64.tar.gz
tar xzvf elastic-agent-8.5.0-linux-x86_64.tar.gz
cd elastic-agent-8.5.0-linux-x86_64
sudo ./elastic-agent install --url=https://37845638732625692c8ee914d88951dd96.fleet.us-central1.gcp.cloud.es.io:443 --enrollment-token=jkhfglkuwyvrquevuytqoeiyri

第四步:对应用程序运行流量

虽然让应用程序运行起来相当容易,但除非您在应用程序上增加负载,否则无法使用 Elastic 进行监控或观察。

这里有一个简单的脚本,您也可以使用 Playwright 来为 AWS 三层应用程序的网站增加流量

import { test, expect } from "@playwright/test";

test("homepage for AWS Threetierapp", async ({ page }) => {
  await page.goto(
    "http://web-tier-external-lb-1897463036.us-west-1.elb.amazonaws.com/#/db"
  );

  await page.fill(
    "#transactions > tbody > tr > td:nth-child(2) > input",
    (Math.random() * 100).toString()
  );
  await page.fill(
    "#transactions > tbody > tr > td:nth-child(3) > input",
    (Math.random() * 100).toString()
  );
  await page.waitForTimeout(1000);
  await page.click(
    "#transactions > tbody > tr:nth-child(2) > td:nth-child(1) > input[type=button]"
  );
  await page.waitForTimeout(4000);
});

此脚本将启动三个浏览器,但您可以在 playwright.config.ts 文件中将此负载限制为一个浏览器。

在本练习中,我们在测试网站时,以五分钟的间隔运行了大约五个小时的流量。

第五步:转到 AWS 仪表板

现在您的 Elastic Agent 正在运行,您可以转到相关的 AWS 仪表板以查看正在摄取的内容。

要搜索 AWS 集成仪表板,只需在 Elastic 搜索栏中搜索它们。此博客的相关仪表板是:

  • [指标 AWS] EC2 概览
  • [指标 AWS] ELB 概览
  • [指标 AWS] RDS 概览
  • [指标 AWS] NAT 网关

让我们看看会出现什么!

所有这些仪表板都是开箱即用的,对于以下所有图像,我们将视图缩小到仅显示来自我们应用程序的相关项目。

在所有仪表板中,我们将时间范围限制为运行流量生成器的时间。

在筛选了我们的 4 个 EC2 实例(2 个 Web 服务器和 2 个应用程序服务器)之后,我们可以看到以下内容:

1:所有 4 个实例都在运行,并且状态检查没有失败。

2:我们看到整个时间范围内的平均 CPU 利用率,没有任何异常。

3:我们看到网络字节的流入和流出,随着数据库加载行数,随着时间的推移而聚合。

虽然本练习仅显示了可以查看的指标的一小部分,但 AWS EC2 提供了更多指标。 AWS 文档上列出的指标都可用,包括用于缩小搜索范围以查找特定实例等的维度。

对于 ELB 仪表板,我们筛选了我们的 2 个负载均衡器(外部 Web 负载均衡器和内部应用程序负载均衡器)。

借助开箱即用的仪表板,您可以查看应用程序 ELB 特定的指标。 AWS 文档中列出的应用程序 ELB 特定指标的很大一部分可以用来添加图表。

对于我们的两个负载均衡器,我们可以看到:

1:两个主机(连接到 ELB 的 EC2 实例)都运行状况良好。

2:负载均衡器容量单位(您正在使用的数量)和请求计数在流量生成时间范围内都如预期的那样上升。

3:我们选择显示 4XX 和 2XX 计数。 4XX 将有助于识别应用程序或与应用程序服务器的连接问题。

对于部署在 RDS 中的 AuroraDB,我们在仪表板上只筛选了 Aurora 的主要和辅助实例。

就像 EC2 和 ELB 一样,Cloudwatch 中的大多数 RDS 指标也可用于创建新的图表和图形。 在此仪表板中,我们将其缩小到显示:

1:插入吞吐量和选择吞吐量

2:写入延迟

3:CPU 使用率

4:时间范围内的连接总数

我们筛选以仅查看位于应用程序服务器前面的 2 个 NAT 实例。 与其他仪表板一样,还可以根据需要使用其他指标来构建图形和图表。

对于 NAT 仪表板,我们可以看到以下内容:

1:由于没有数据包丢弃,NAT 网关运行良好

2:来自 Web 服务器的预期数量的活动连接

3:字节流入和流出的相当正常的指标集

恭喜,您现在已经开始监控应用程序的关键 AWS 服务的指标!

接下来在 AWS 上监控什么?

添加来自 AWS 服务的日志

现在正在监控指标,您现在还可以添加日志记录。 有几种用于提取日志的选项。

  1. Elastic Agent 中的 AWS 集成具有日志设置。 只需确保打开您希望接收的内容即可。 让我们从 RDS 中提取 Aurora 日志。 在 Elastic agent 策略中,我们只需打开“从 CloudWatch 收集日志”(见下文)。 接下来,通过 Fleet 管理 UI 更新代理。

  1. 您可以安装Lambda 日志转发器。 此选项将从多个位置提取日志。 请参见下面的架构图。

在以下博客中也找到了对此选项的审查。

使用 Elastic 机器学习分析您的数据

一旦指标和日志(或其中任何一个)进入 Elastic,请开始通过 Elastic 的 ML 功能分析您的数据。 可以在此处找到对这些功能的精彩回顾:

还有更多关于Elastic 的博客的视频和博客。

结论:使用 Elastic Observability 监控 AWS 服务指标非常简单!

我希望您已经了解了 Elastic Observability 如何帮助您监控 AWS 服务指标,以下是关于课程和您所学内容的快速回顾:

  • Elastic Observability 支持 AWS 服务指标的提取和分析
  • 通过 Elastic Agent 从 AWS 服务设置提取很容易
  • Elastic Observability 具有多个开箱即用 (OOTB) AWS 服务仪表板,您可以使用这些仪表板初步查看信息,然后根据您的需要进行修改
  • Elastic Observability 上的 AWS 集成支持 30 多个 AWS 服务,并且定期添加更多服务
  • 正如相关博客中所述,您可以使用 Elastic 的机器学习功能分析您的 AWS 服务指标

通过AWS Marketplace注册即可开始您自己的7 天免费试用,并在几分钟内在世界各地 AWS 上的 Elastic Cloud 区域中快速启动部署。 您在 AWS Marketplace 上购买的 Elastic 将包含在您的每月综合账单中,并将从您在 AWS 的承诺支出中扣除。

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

分享这篇文章