实验室 11:监视部署到 Azure 的服务
Microsoft Azure 用户接口
鉴于 Microsoft 云工具的动态特性,Azure UI 在此培训内容开发后可能会发生更改。 因此,实验说明和实验步骤可能无法正确对应。
我们发现社区进行了必要更改时,Microsoft 会更新此培训课程。 但是,云更新经常发生,因此在此培训内容更新之前,可能会发生 UI 更改。 如果发生这种情况,请适应这些更改,并根据需要在实验室中熟悉这些更改。
Instructions
开始之前
登录到实验室环境
使用以下凭据登录到 Windows 11 虚拟机 (VM):
- 用户名:
Admin
- 密码:
Pa55w.rd
注意:你的讲师将提供连接到虚拟实验室环境的说明。
查看已安装的应用程序
在 Windows 11 桌面上找到任务栏。 任务栏里有本实验室中你将使用的应用程序的图标,包括:
- Microsoft Edge
- 文件资源浏览器
- Visual Studio Code
- Azure PowerShell
实验室场景
在本实验室中,你将在 Azure 中创建一个 Application Insights 资源,用于监视和记录应用程序见解数据供以后查看。 当需求增加到特定阈值时,API 将设置为自动缩放,记录数据将有助于确定服务的利用方式。
体系结构关系图
练习 1:创建和配置 Azure 资源
任务 1:打开 Azure 门户
-
在任务栏上,选择 Microsoft Edge 图标。
-
在浏览器窗口中,浏览到 Azure 门户 (
https://portal.azure.com
),然后使用你将用于此实验室的帐户登录。注意:第一次登录 Azure 门户时,你会看到一个门户教程。 选择“开始使用”,以跳过导览并开始使用门户。
任务 2:创建 Application Insights 资源
-
在 Azure 门户中,使用页面顶部的“搜索资源、服务和文档”文本框搜索“Application Insights”,然后在结果列表中选择“Application Insights” 。
-
在“Application Insights”边栏选项卡上,选择“+ 创建” 。
-
在“Application Insights”边栏选项卡的“基本信息”选项卡上,执行以下操作,然后选择“查看 + 创建”****:
设置 操作 “订阅”下拉列表 保留默认值 “资源组”部分 选择“新建”,输入“MonitoredAssets”,然后选择“确定” “名称”文本框 instrm[yourname] “区域”下拉列表 选择可在其中部署 Application Insights 资源的任何 Azure 区域 “工作区详细信息”部分 保留“订阅”和“Log Analytics 工作区”下拉列表的默认值 以下屏幕截图显示了“Application Insights”边栏选项卡上配置的设置。
-
在“查看 + 创建”选项卡中,查看在上述步骤中选择的选项。
-
选择“创建”,使用指定的配置创建 Application Insights 实例 。
注意:等待创建任务完成,再继续操作本实验室。
-
在“Microsoft.AppInsights | 概述”边栏选项卡上,选择“转到资源”按钮,导航到新创建的“Application Insights”资源边栏选项卡 。
-
在“Application Insights”边栏选项卡的“配置”部分中,选择“属性”链接 。
-
在“属性”边栏选项卡的“检测密钥”条目旁边,选择“复制到剪贴板”按钮,然后记录复制的值 。 你将在本实验室后面部分用到它。
注意:客户端应用程序使用此密钥连接到特定 Application Insights 资源。
任务 3:创建 Azure Web API 资源
-
在 Azure 门户中,使用页面顶部的“搜索资源、服务和文档”文本框搜索“应用服务”,然后在结果列表中选择“应用服务” 。
-
在“应用服务”边栏选项卡上,选择“+ 创建”,然后选择“** +Web 应用**”。
-
在“创建 Web 应用”边栏选项卡的“基本”选项卡上,执行以下操作,然后选择“监视 + 保护”选项卡:
设置 操作 “订阅”下拉列表 保留默认值 “资源组”下拉列表 选择“MonitoredAssets” “名称”文本框 输入“smpapi[yourname]” “发布”部分 选择“代码” “运行时堆栈”下拉列表 选择“.NET 8 (LTS)”** “操作系统”部分 选择“Windows” “地区”下拉列表 选择与“Application Insights”资源的位置相同的区域** “Windows 计划(美国东部)”部分 选择“新建”,在“名称”文本框中输入“MonitoredPlan”,然后选择“确定” “定价计划”部分 保留默认值 -
在“监视 + 保护”选项卡上,执行以下操作,然后选择“查看 + 创建”:
设置 操作 “启用 Application Insights”部分 确保选中“是” “Application Insights”下拉列表 选择之前在此实验室中创建的 instrm[yourname] Application Insights 资源 -
在“创建 Web 应用”选项卡中,查看在上述步骤中选择的选项。
-
选择“创建”,使用指定的配置创建 Web API。
注意:等待创建任务完成,再继续操作本实验室。
-
在部署“概述”边栏选项卡上,选择“转到资源”按钮,导航到新创建的 Azure Web API 边栏选项卡 。
-
在“应用服务”边栏选项卡的“设置”部分,选择环境变量链接。
-
在“环境变量”部分中,执行以下操作:
a. 在“应用设置”选项卡上,选择“显示值”以显示与 Web API 关联的机密。
b. 记下表示 APPLICATIONINSIGHTS_CONNECTION_STRING** 键的值。 构建 Web API 资源时会自动设置此值。
-
在“App 服务”边栏选项卡上,选择服务菜单顶部的“概述”。
-
在“应用服务”边栏选项卡的“Essentials”中,记录“默认域”链接的值。 稍后将在本实验室中使用此值向 Web API 提交请求。
任务 4:配置 Web API 自动缩放选项
-
在“应用服务”边栏选项卡的“设置”部分,选择“横向扩展(应用服务计划)”链接 。
-
向下滚动直到看到“横向扩展方法”。 选择“基于规则”选项,然后选择“配置”。
-
在“横向扩展”部分,执行以下操作,然后选择“保存” :
设置 操作 “横向扩展”部分 选择“自定义自动缩放” “自动缩放设置名称”文本框 输入“ComputeScaler” “资源组”下拉列表 选择“MonitoredAssets” “缩放模式”部分 选择“根据指标进行缩放” “实例限制”部分的“下限”文本框 输入 1 “实例限制”部分的“上限”文本框 输入“8” “实例限制”部分的“默认值”文本框 输入“3” 以下屏幕截图显示“应用服务”边栏选项卡上“横向扩展”部分的配置设置 。
设置 操作 “规则”部分 选择“添加规则” “缩放规则”边栏选项卡 保留所有设置的默认值,然后选择“添加” 以下屏幕截图显示“应用服务”边栏选项卡上“横向扩展”部分的其他设置 。
注意:等待保存操作完成后,再继续本实验室。
审阅
在此练习中,你创建了将用于本实验室其余部分的 Azure 资源。
练习 2:使用 Application Insights 监视本地的 Web API
任务 1:生成一个 .NET Web API 项目
-
在实验室计算机上,启动“Visual Studio Code”。
-
在 Visual Studio Code 中的“文件”菜单上,选择“打开文件夹” 。
-
在“打开文件夹”窗口中,浏览到 Allfiles (F):\Allfiles\Labs\11\Starter\Api,然后选择“选择文件夹” 。
-
在 Visual Studio Code ** 窗口中的“菜单”栏上,选择“终端”,然后选择“新建终端”*。
-
在终端提示符下,运行以下命令,在当前目录中创建一个名为 SimpleApi 的新 .NET Web API 应用程序:
dotnet new webapi --output . --name SimpleApi --framework net8.0
-
运行以下命令,将 2.21.0 版本的 Microsoft.ApplicationInsights 从 NuGet 导入到当前项目**:
dotnet add package Microsoft.ApplicationInsights --version 2.21.0
注意:dotnet add package 命令将从 NuGet 添加 Microsoft.ApplicationInsights 包 。 有关详细信息,请参阅 Microsoft.ApplicationInsights。
-
运行以下命令,从 NuGet 导入 2.21.0 版本的 Microsoft.ApplicationInsights.AspNetCore**:
dotnet add package Microsoft.ApplicationInsights.AspNetCore --version 2.21.0
注意:dotnet add package 命令将从 NuGet 添加 Microsoft.ApplicationInsights.AspNetCore 包 。 有关详细信息,请参阅 Microsoft.ApplicationInsights.AspNetCore。
-
在终端提示符下,运行以下命令,将 2.21.0 版本的 Microsoft.ApplicationInsights.PerfCounterCollector 从 NuGet 导入到当前项目**:
dotnet add package Microsoft.ApplicationInsights.PerfCounterCollector --version 2.21.0
注意:dotnet add package 命令将从 NuGet 添加 Microsoft.ApplicationInsights.PerfCounterCollector 。 有关详细信息,请参阅 Microsoft.ApplicationInsights.PerfCounterCollector。
-
在终端提示符下,运行以下命令,将 2.4.0 版本的 Microsoft.ApplicationInsights.Profiler.AspNetCore 从 NuGet 导入到当前项目:
dotnet add package Microsoft.ApplicationInsights.Profiler.AspNetCore --version 2.4.0
注意:dotnet add package 命令从 NuGet 添加 Microsoft.ApplicationInsights.Profiler.AspNetCore 包。 有关详细信息,请参阅 Microsoft.ApplicationInsights.Profiler.AspNetCore。
-
在终端提示符下,运行以下命令以生成 .NET Web API:
dotnet build
任务 2:更新应用代码以禁用 HTTPS 并使用 Application Insights
-
在“Visual Studio Code”窗口的“资源管理器”窗格中,选择 Program.cs 文件以在编辑器窗格中打开该文件 。
-
在编辑器窗格中,在第 17 行找到并删除以下代码**:
app.UseHttpsRedirection();
注意:此代码行强制 Web API 使用 HTTPS。 对本实验室而言,这不是必要的。
-
在 Program.cs** 文件中,从第 7 行开始添加以下两行,通过将 Profiler 与 Application Insights 一起注册到服务集合中来启用 Profiler:
builder.Services.AddApplicationInsightsTelemetry(); builder.Services.AddServiceProfiler();
-
保存更改并关闭 Program.cs 文件。
-
在“Visual Studio Code”窗口的“资源管理器”窗格中,选择 appsettings.json 文件以在编辑器窗格中打开该文件 。
-
将以下元素添加到 appsettings.json 文件的 Logging 元素之后,将
instrumentation-key
占位符替换为在此实验室中记录的 Application Insights 资源检测密钥的值:"ApplicationInsights": { "InstrumentationKey": "instrumentation-key" },
注意:如果要添加的节是文件的最后一个元素,请删除尾随逗号。
-
appsettings.json 文件现在的结构应如下所示:
{ "Logging":{ "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ApplicationInsights": { "InstrumentationKey": "instrumentation-key" }, "AllowedHosts": "*" }
备注:确保已将占位符替换为之前记录的自己的检测密钥。
-
保存对 appsettings.json 文件的更改并将其关闭。
-
在终端提示符下,运行以下命令以生成 .NET Web API。
dotnet publish -c Release -r win-x86 --self-contained -p:PublishReadyToRun=true .\SimpleApi.csproj
任务 3:本地测试 API 应用程序
-
在终端提示符下,运行以下命令以启动 .NET Web API。
dotnet run
-
查看命令的输出,并记下站点正在侦听的 HTTPS URL。
-
在任务栏上,打开“Microsoft Edge”图标的上下文菜单,然后打开一个新的浏览器窗口。
-
在打开的浏览器窗口中,导航到
http://localhost
URL 并添加 Web API 的 /weatherforecast 相对路径。备注:完整 URL 是
http://localhost:[port-number]/weatherforecast
,其中[port-number]
占位符标识 Web 应用可通过 HTTP 协议访问的端口号。备注:页面应包含以下格式的输出。 实际值将有所不同。
[ { "date": "2023-10-29", "temperatureC": -8, "summary": "Sweltering", "temperatureF": 18 }, { "date": "2023-10-30", "temperatureC": -12, "summary": "Hot", "temperatureF": 11 }, { "date": "2023-10-31", "temperatureC": 50, "summary": "Chilly", "temperatureF": 121 }, { "date": "2023-11-01", "temperatureC": 51, "summary": "Chilly", "temperatureF": 123 }, { "date": "2023-11-02", "temperatureC": 29, "summary": "Balmy", "temperatureF": 84 } ]
-
多次刷新浏览器页面以模拟某些响应。
-
关闭显示由
http://localhost:[port-number]/weatherforecast
生成的页面的浏览器窗口。 -
在 Visual Studio Code 中,选择“终止终端”(“回收站”图标)以关闭终端窗格和任何关联的进程 。
任务 4:在 Application Insights 中查看指标
-
在实验室计算机上,切换到显示 Azure 门户的“Microsoft Edge”浏览器窗口。
-
在Azure 门户中,导航回之前在此实验室中创建的 instrm[yourname] Application Insights 资源的边栏选项卡。
-
在“Application Insights”边栏选项卡中心的磁贴中,找到显示的指标。 具体来说,找到已经发生的服务器请求数量和平均服务器响应时间。
以下屏幕截图显示本地 Web 应用的 Application Insights 指标。
注意:请求最多可能需要五分钟才可显示在 Application Insights 指标图表中。
审阅
在本练习中,你使用 ASP.NET 创建了一个 API 应用,并将它配置为将应用程序指标流式传输到 Application Insights。 然后,你使用 Application Insights 仪表板查看了有关 API 的性能详细信息。
练习 3:使用 Application Insights 监视 Web API
任务 1:将应用程序部署到 Web API
-
在实验室计算机上,切换到 Visual Studio Code。
-
在“Visual Studio Code”窗口中的“菜单”栏上,选择“终端”,然后选择“新建终端” 。
-
在终端提示符下,运行以下命令,确保当前目录设置为 Allfiles (F):\Allfiles\Labs\11\Starter\Api\bin\Release\net8.0\win-x86\publish,部署文件就在该目录中:
cd F:\Allfiles\Labs\11\Starter\Api\bin\Release\net8.0\win-x86\publish\
-
运行以下命令创建一个 zip 文件,其中包含要部署到 Azure Web API 旁边的初学者项目:
Compress-Archive -Path * -DestinationPath api.zip
-
在终端提示符下,运行以下命令,使用 Azure PowerShell 登录到 Azure 订阅:
Connect-AzAccount
-
出现提示时,提供用于访问用于此实验室的 Azure 订阅的凭据进行身份验证。
注意:请等待登录过程完成。
-
运行以下命令以显示 MonitoredAssets 资源组中所有 Web 应用的列表:
Get-AzWebApp -ResourceGroupName MonitoredAssets
-
运行以下命令以显示 MonitoredAssets 资源组中 Web 应用的列表,该资源组的名称以 smpapi* 开头 :
Get-AzWebApp -ResourceGroupName MonitoredAssets | Where-Object {$_.Name -like 'smpapi*'}
-
运行以下命令以显示在上一步中标识的第一个 Web 应用的名称,并将其存储在名为 $webAppName 的变量中:
Get-AzWebApp -ResourceGroupName MonitoredAssets | Where-Object {$_.Name -like 'smpapi*'} | Select-Object -ExpandProperty Name $webAppName = (Get-AzWebApp -ResourceGroupName MonitoredAssets | Where-Object {$_.Name -like 'smpapi*'})[0] | Select-Object -ExpandProperty Name
-
运行以下命令,将之前在此任务中创建的 api.zip 文件部署到在上一步中标识了其名称的 Web API**:
Publish-AzWebApp -ResourceGroupName MonitoredAssets -Name $webAppName -ArchivePath "F:\Allfiles\Labs\11\Starter\Api\bin\Release\net8.0\win-x86\publish\api.zip" -force
注意:等待部署完成后,再继续本实验室。
-
在实验室计算机上,启动另一个 Microsoft Edge 浏览器窗口。
-
在浏览器窗口中,导航到之前在此任务中部署了 API 应用的 Azure Web API 应用,方法是向其 URL(之前在此实验室中进行了记录)附加后缀 /weatherforecast。
注意:例如,如果 URL 为
https://smpapianu.azurewebsites.net
,则新的 URL 将为https://smpapianu.azurewebsites.net/weatherforecast
。 -
验证输出是否类似于在本地运行 API 应用时生成的输出。
注意:输出将包含不同的值,但其格式应相同。
任务 2:配置 Web 应用的深入指标集合
-
在实验室计算机上,切换到显示 Azure 门户的“Microsoft Edge”浏览器窗口。
-
在Azure 门户中,导航回之前在此实验室中创建的 smpapi[yourname] Web 应用资源的边栏选项卡。
-
在“应用服务”边栏选项卡中,选择“Application Insights” 。
-
在“Application Insights”边栏选项卡中,执行以下操作,选择“应用”,然后在确认对话框中选择“是” :
设置 操作 “Application Insights”滑块 确保将其设置为“启用” “检测应用程序”部分 选择“.NET”选项卡 “集合级别”部分 选择“建议” “探查器”部分 选择“打开” “快照调试程序”部分 选择“关闭” “SQL 命令”部分 选择“关闭” 以下屏幕截图显示 Azure Web API 的 Application Insights 设置。
-
切换到在上一任务中打开的浏览器选项卡,以显示将 API 应用部署到目标 Azure API 应用的结果(包括目标 URL 中的 /weatherforecast 相对路径),并多次刷新浏览器页面。
-
查看 API 生成的 JSON 格式的输出。
-
记录用于访问 JSON 格式的输出的 URL。
注意:如果 smpapianu 是之前创建的站点名称,则 URL 的格式应为
https://smpapianu.azurewebsites.net/weatherforecast
。
任务 3:在 Application Insights 中查看更新指标
-
返回到显示 Azure 门户中 Azure Web 应用的浏览器窗口。
-
在 Web 应用的“Application Insights”边栏选项卡上,选择“查看 Application Insights 数据”链接 。
-
在“Application Insights”边栏选项卡中心的磁贴中查看收集的指标,包括已发生的服务器请求数和平均服务器响应时间。
以下屏幕截图显示 Azure 门户中 Azure Web 应用的 Application Insights 指标。
注意:更新后的指标可能需要长达五分钟的时间才会显示在 Application Insights 指标图表中。
任务 4:在 Application Insights 中查看实时指标
-
在“Application Insights”边栏选项卡上的“调查”部分中,选择“实时指标” 。
-
切换回显示目标 Azure Web 应用中运行的目标 API 应用(面向目标 URL 中的 /weatherforecast 相对路径)的浏览器窗口,然后多次刷新浏览器页面。
-
切换到显示“实时指标”边栏选项卡的浏览器窗口,并查看其内容。
注意:“传入请求”部分应该会在几秒钟内更新,其中显示你对 Web API 发出的请求。
审阅
在本练习中,你配置并测试了 Web API 应用的 Application Insights 日志记录,并查看了有关所发出的请求的实时信息。