开发人员和 SRE 选择 Microsoft Azure 来运行其应用程序,因为它是一个值得信赖的世界级云平台。多年来,它也证明了自己是一个用于托管业务关键型应用程序的极其强大且可靠的基础架构。
Elastic Observability 为 Microsoft Azure 服务提供超过 25 个开箱即用的集成,并且还在不断增加。Azure 集成的完整列表可以在我们的在线文档中找到。
Elastic Observability 不仅聚合 Azure 服务的日志,还聚合 Azure 服务和在 Azure 计算服务(虚拟机、函数、Kubernetes 服务等)上运行的应用程序的指标。可以使用 Elastic® 的高级机器学习 (ML) 功能以可视化和更直观的方式分析所有这些数据,这有助于在最终用户受到影响之前检测性能问题并找出根本原因。
有关 Elastic Observability 如何提供应用程序性能监控 (APM) 功能(例如服务图、跟踪、依赖项和基于 ML 的指标关联)的更多详细信息,请阅读Elastic Observability 中的 APM 关联:自动识别缓慢或失败事务的可能原因。
没错,Elastic 提供了收集、聚合和分析 Microsoft Azure 服务和在 Azure 上运行的应用程序的指标的功能。Elastic Observability 不仅仅用于捕获日志,它还为 Microsoft Azure 工作负载提供统一的可观测性解决方案。
在本博客中,我们将回顾 Elastic Observability 如何监控在 Microsoft Azure 上运行并利用的三层 Web 应用程序的指标
- Microsoft Azure 虚拟机
- Microsoft Azure SQL 数据库
- Microsoft Azure 虚拟网络
正如您将看到的,安装集成后,指标将立即到达,您可以立即开始从指标中获取见解。
先决条件和配置
以下是我们用于设置此演示的一些组件和详细信息
- 确保您拥有一个 Microsoft Azure 帐户和一个 Azure 服务主体,该主体具有从 Microsoft Azure 读取监视数据的权限(请参阅我们文档中的详细信息)。
- 这篇文章不涵盖应用程序监控;相反,我们将重点介绍如何轻松监控 Microsoft Azure 服务。如果您想开始使用应用程序监控示例,请参阅我们的Hello World 可观测性代码示例。
- 为了查看指标,您需要加载应用程序。我们还创建了一个 Playwright 脚本来驱动应用程序的流量。
三层应用程序概述
在我们深入研究 Elastic 部署设置和配置之前,让我们回顾一下我们要监控的内容。如果您按照Microsoft Learn N 层示例应用程序的说明部署“午餐吃什么?”应用程序,您将部署以下内容。
部署的内容
- Microsoft Azure VM 表示层,它在用户的浏览器中呈现 HTML 客户端,并允许将用户请求发送到“午餐吃什么?”应用程序
- Microsoft Azure VM 应用程序层,它与表示层和数据库层进行通信
- 数据库层中的 Microsoft Azure SQL 实例,处理来自应用程序层的请求以存储和提供数据
在博客的末尾,我们还将提供一个 Playwright 脚本,该脚本可以运行以将请求发送到此应用程序,以便使用示例数据加载它并练习其功能。这将有助于驱动指标来“点亮”仪表板。
设置一切
让我们逐步了解如何部署示例三层应用程序、Elastic 上的 Azure 集成,并可视化在 Elastic 的 Kibana® 仪表板中提取的内容。
第 0 步:在 Elastic Cloud 上获取帐户
按照说明开始使用 Elastic Cloud。
第 1 步:部署 Microsoft Azure 三层应用程序
从Azure 门户,单击门户顶部的 Cloud Shell 图标以打开 Cloud Shell…
… 当 Cloud Shell 首次打开时,选择 Bash 作为要使用的 shell 类型。
如果您收到“您没有装载存储”的提示,请单击 创建存储 按钮以创建用于从 Cloud Shell 保存和编辑文件的文件存储。
现在您应该会看到打开的 Cloud Shell 终端。
在 Cloud Shell 中运行以下命令,以定义我们将在 Cloud Shell 命令中使用的环境变量,这些命令用于部署和查看示例应用程序。
请务必从 Azure 门户中列出的可用资源组中指定有效的 RESOURCE_GROUP。还要在运行命令之前指定一个新密码来替换 SpecifyNewPasswordHere 占位符文本。有关密码要求,请参阅 Microsoft 密码策略文档。
RESOURCE_GROUP="test"
APP_PASSWORD="SpecifyNewPasswordHere"
运行以下 az deployment group create 命令,它将在大约五分钟内部署示例三层 Web 应用程序。
az deployment group create --resource-group $RESOURCE_GROUP --template-uri https://raw.githubusercontent.com/MicrosoftDocs/mslearn-n-tier-architecture/master/Deployment/azuredeploy.json --parameters password=$APP_PASSWORD
部署完成后,运行以下命令,该命令返回应用程序的 URL。
az deployment group show --output table --resource-group $RESOURCE_GROUP --name azuredeploy --query properties.outputs.webSiteUrl
复制 Web 应用程序 URL 并将其粘贴到浏览器中,以查看示例“午餐吃什么?”Web 应用程序。
第 2 步:创建 Azure 服务主体并授予访问权限
转到Microsoft Azure 门户。搜索活动目录并选择 Microsoft Entra ID。
复制 租户 ID 以便在本博客文章的稍后步骤中使用。此 ID 是配置 Elastic Agent 以连接到您的 Azure 帐户所必需的。
在导航窗格中,选择 应用程序注册。
然后单击 新建注册。
键入您的应用程序的名称(本教程使用三层应用程序 Azure),然后单击 注册(接受其他设置的默认值)。
复制 应用程序(客户端)ID 并保存以供稍后使用。此 ID 是配置 Elastic Agent 以连接到您的 Azure 帐户所必需的。
在导航窗格中,选择 证书和机密,然后单击 新建客户端机密 以创建新的安全密钥。
键入机密的描述并选择过期时间。单击 添加 以创建客户端机密。在 值 下,复制机密值并保存(连同您的客户端 ID)以供稍后使用。
创建 Azure 服务主体后,您需要为其授予正确的权限。在 Azure 门户中,搜索并选择订阅。
在“订阅”页面中,单击您的订阅名称。在订阅详细信息页面上,复制您的订阅 ID 并保存,以供稍后步骤使用。
在导航窗格中,选择访问控制 (IAM)。
单击添加,然后选择添加角色分配。
在角色选项卡上,选择监控读取者角色,然后单击下一步。
在成员选项卡上,选择将访问权限分配给用户、组或服务主体的选项。单击选择成员,然后搜索并选择您之前创建的主体。对于描述,输入您的服务主体的名称。单击下一步以查看角色分配。
单击查看 + 分配以授予服务主体对您的订阅的访问权限。
步骤 3:创建 Azure VM 实例
在 Azure 门户中,搜索并选择虚拟机。
在虚拟机页面上,单击 + 创建,然后选择 Azure 虚拟机。
在虚拟机创建页面上,为虚拟机名称输入一个名称,如“metrics-vm”,并选择 VM 大小为“Standard_D2s_v3 - 2 个 vCPU,8 GiB 内存”。单击下一步:磁盘按钮。
在磁盘页面上,保留默认设置,然后单击下一步:网络按钮。
在网络页面上,应该为虚拟网络选择 demo-vnet,为子网选择 demo-biz-subnet。这些资源是作为在步骤 1 中完成的三层示例应用程序部署的一部分创建的。
单击查看 + 创建按钮。
在查看页面上,单击创建按钮。
步骤 4:安装 Azure 资源指标集成
在您的 Elastic Cloud 部署中,通过从顶层菜单中选择集成,导航到 Elastic Azure 集成。搜索 azure 资源,然后单击 Azure 资源指标磁贴。
单击添加 Azure 资源指标。
单击仅添加集成(跳过代理安装)。
输入您之前保存的客户端 ID、客户端密钥、租户 ID 和订阅 ID 的值。
如您所见,Azure 资源指标集成将从八个 Azure 服务收集大量数据。单击保存并继续。
您将看到一个确认对话框窗口。单击将 Elastic Agent 添加到您的主机。
这将显示安装 Elastic Agent 所需的说明。复制 Linux Tar 选项卡下的命令。
接下来,您需要使用 SSH 登录到 Azure VM 实例,并运行从 Linux Tar 选项卡复制的命令。转到 Azure 门户中的Azure 虚拟机。然后单击您在步骤 3 中创建的 VM 实例的名称。
单击使用 Azure CLI 进行 SSH 部分中的选择按钮。
选中“我了解...”复选框,然后单击配置 + 连接按钮。
一旦您通过 SSH 进入 VM 实例终端窗口,请运行之前从在主机上安装 Elastic Agent 说明中的 Linux Tar 选项卡复制的命令。安装完成后,您将在“在主机上安装 Elastic Agent”表单中看到一条确认消息。
太棒了!Elastic Agent 正在将数据发送到 Elastic Cloud。现在让我们观察一些指标。
步骤 5:针对应用程序运行流量
虽然启动应用程序相当容易,但是除非您向应用程序添加负载,否则没有任何内容可以使用 Elastic 进行监视或观察。
这是一个简单的脚本,您也可以使用 Playwright 运行,以添加流量并执行 Azure 三层应用程序的功能
import { test, expect } from "@playwright/test";
test("homepage for Microsoft Azure three tier app", async ({ page }) => {
// Load web app
await page.goto("http://20.172.198.231/");
// Add lunch suggestions
await page.fill("id=txtAdd", "tacos");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
await page.fill("id=txtAdd", "sushi");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
await page.fill("id=txtAdd", "pizza");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
await page.fill("id=txtAdd", "burgers");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
await page.fill("id=txtAdd", "salad");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
await page.fill("id=txtAdd", "sandwiches");
await page.keyboard.press("Enter");
await page.waitForTimeout(1000);
// Click vote buttons
await page.getByRole("button").nth(1).click();
await page.getByRole("button").nth(3).click();
await page.getByRole("button").nth(5).click();
await page.getByRole("button").nth(7).click();
await page.getByRole("button").nth(9).click();
await page.getByRole("button").nth(11).click();
// Click remove buttons
await page.getByRole("button").nth(12).click();
await page.getByRole("button").nth(10).click();
await page.getByRole("button").nth(8).click();
await page.getByRole("button").nth(6).click();
await page.getByRole("button").nth(4).click();
await page.getByRole("button").nth(2).click();
});
步骤 6:在 Elastic 中查看 Azure 仪表板
在 Elastic Agent 运行的情况下,您可以转到 Elastic 仪表板以查看正在提取的内容。只需在 Elastic 中搜索“仪表板”,然后选择仪表板。
这将打开 Elastic 仪表板页面。在“仪表板”搜索框中,搜索 azure vm,然后单击 [Azure 指标] 计算 VM 概述仪表板,这是许多开箱即用的仪表板之一。
您将看到一个仪表板,其中填充了您部署的应用程序的 VM 指标。
在 Azure 计算 VM 仪表板上,我们可以看到以下许多可用指标的一些示例
- CPU 利用率
- 可用内存
- 网络发送和接收的字节
- 磁盘写入和读取指标
对于开箱即用仪表板未涵盖的指标,可以轻松创建自定义仪表板以可视化对您重要的指标。
恭喜,您现在已经开始监视来自 Microsoft Azure 服务的应用程序指标!
使用 Elastic AI Assistant 分析您的数据
一旦指标和日志(或其中任何一个)进入 Elastic,就可以开始使用 Elastic AI Assistant for Observability 的上下文感知见解来分析您的数据。
结论:使用 Elastic 可观测性监视 Microsoft Azure 服务指标非常容易!
我们希望您了解 Elastic 可观测性如何帮助您监视 Azure 服务指标。以下是您所学内容的回顾
- Elastic 可观测性支持 Azure 服务指标的提取和分析。
- 通过 Elastic Agent 可以轻松设置 Azure 服务的提取。
- Elastic 可观测性具有多个开箱即用的 Azure 服务仪表板,您可以使用它们初步查看信息,然后根据您的需要进行修改。
通过 Microsoft Azure Marketplace 注册并快速在全球任何 Microsoft Azure 上的 Elastic Cloud 区域中在几分钟内启动部署,亲自尝试一下。您在 Azure Marketplace 购买的 Elastic 将包含在您的每月合并账单中,并将从您在 Microsoft Azure 的承诺支出中扣除。
本帖子中描述的任何特性或功能的发布和时间安排仍由 Elastic 自行决定。目前不可用的任何特性或功能可能不会按时交付或根本不交付。