实验室 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 将设置为自动缩放,记录数据将有助于确定服务的利用方式。

体系结构关系图

描述对部署到 Azure 的服务进行监视的体系结构图

练习 1:创建和配置 Azure 资源

任务 1:打开 Azure 门户

  1. 在任务栏上,选择 Microsoft Edge 图标。

  2. 在浏览器窗口中,浏览到 Azure 门户 (https://portal.azure.com),然后使用你将用于此实验室的帐户登录。

    注意:第一次登录 Azure 门户时,你会看到一个门户教程。 选择“开始使用”,以跳过导览并开始使用门户。

任务 2:创建 Application Insights 资源

  1. 在 Azure 门户中,使用页面顶部的“搜索资源、服务和文档”文本框搜索“Application Insights”,然后在结果列表中选择“Application Insights” 。

  2. 在“Application Insights”边栏选项卡上,选择“+ 创建” 。

  3. 在“Application Insights”边栏选项卡的“基本信息”选项卡上,执行以下操作,然后选择“查看 + 创建”****

    设置 操作
    “订阅”下拉列表 保留默认值
    “资源组”部分 选择“新建”,输入“MonitoredAssets”,然后选择“确定”
    “名称”文本框  instrm[yourname]
    “区域”下拉列表 选择可在其中部署 Application Insights 资源的任何 Azure 区域
    “工作区详细信息”部分 保留“订阅”和“Log Analytics 工作区”下拉列表的默认值

    以下屏幕截图显示了“Application Insights”边栏选项卡上配置的设置。

    创建 Azure Application Insights 实例边栏选项卡

  4. 在“查看 + 创建”选项卡中,查看在上述步骤中选择的选项。

  5. 选择“创建”,使用指定的配置创建 Application Insights 实例 。

    注意:等待创建任务完成,再继续操作本实验室。

  6. 在“Microsoft.AppInsights | 概述”边栏选项卡上,选择“转到资源”按钮,导航到新创建的“Application Insights”资源边栏选项卡 。

  7. 在“Application Insights”边栏选项卡的“配置”部分中,选择“属性”链接 。

  8. 在“属性”边栏选项卡的“检测密钥”条目旁边,选择“复制到剪贴板”按钮,然后记录复制的值 。 你将在本实验室后面部分用到它。

    注意:客户端应用程序使用此密钥连接到特定 Application Insights 资源。

任务 3:创建 Azure Web API 资源

  1. 在 Azure 门户中,使用页面顶部的“搜索资源、服务和文档”文本框搜索“应用服务”,然后在结果列表中选择“应用服务” 。

  2. 在“应用服务”边栏选项卡上,选择“+ 创建”,然后选择“** +Web 应用**”。

  3. 在“创建 Web 应用”边栏选项卡的“基本”选项卡上,执行以下操作,然后选择“监视 + 保护”选项卡:

    设置 操作
    “订阅”下拉列表 保留默认值
    “资源组”下拉列表 选择“MonitoredAssets”
    “名称”文本框  输入“smpapi[yourname]”
    “发布”部分 选择“代码”
    “运行时堆栈”下拉列表 选择“.NET 8 (LTS)”**
    “操作系统”部分 选择“Windows”
    “地区”下拉列表  选择与“Application Insights”资源的位置相同的区域**
    “Windows 计划(美国东部)”部分 选择“新建”,在“名称”文本框中输入“MonitoredPlan”,然后选择“确定”
    “定价计划”部分 保留默认值
  4. 在“监视 + 保护”选项卡上,执行以下操作,然后选择“查看 + 创建”:

    设置 操作
    “启用 Application Insights”部分 确保选中“是”
    “Application Insights”下拉列表 选择之前在此实验室中创建的 instrm[yourname] Application Insights 资源
  5. 在“创建 Web 应用”选项卡中,查看在上述步骤中选择的选项。

  6. 选择“创建”,使用指定的配置创建 Web API。

    注意:等待创建任务完成,再继续操作本实验室。

  7. 在部署“概述”边栏选项卡上,选择“转到资源”按钮,导航到新创建的 Azure Web API 边栏选项卡 。

  8. 在“应用服务”边栏选项卡的“设置”部分,选择环境变量链接。

  9. 在“环境变量”部分中,执行以下操作:

    a. 在“应用设置”选项卡上,选择“显示值”以显示与 Web API 关联的机密。

    b. 记下表示 APPLICATIONINSIGHTS_CONNECTION_STRING** 键的值。 构建 Web API 资源时会自动设置此值。

  10. 在“App 服务”边栏选项卡上,选择服务菜单顶部的“概述”。

  11. 在“应用服务”边栏选项卡的“Essentials”中,记录“默认域”链接的值。 稍后将在本实验室中使用此值向 Web API 提交请求。

任务 4:配置 Web API 自动缩放选项

  1. 在“应用服务”边栏选项卡的“设置”部分,选择“横向扩展(应用服务计划)”链接 。

  2. 向下滚动直到看到“横向扩展方法”。 选择“基于规则”选项,然后选择“配置”。

为横向扩展方法选择正确的选项

  1. 在“横向扩展”部分,执行以下操作,然后选择“保存” :

    设置 操作
    “横向扩展”部分 选择“自定义自动缩放”
    “自动缩放设置名称”文本框 输入“ComputeScaler”
    “资源组”下拉列表 选择“MonitoredAssets”
    “缩放模式”部分 选择“根据指标进行缩放”
    “实例限制”部分的“下限”文本框 输入 1
    “实例限制”部分的“上限”文本框 输入“8”
    “实例限制”部分的“默认值”文本框 输入“3”

    以下屏幕截图显示“应用服务”边栏选项卡上“横向扩展”部分的配置设置 。

    Azure Web API 边栏选项卡上的默认缩放条件

    设置 操作
    “规则”部分 选择“添加规则”
    “缩放规则”边栏选项卡 保留所有设置的默认值,然后选择“添加”

    以下屏幕截图显示“应用服务”边栏选项卡上“横向扩展”部分的其他设置 。

    Azure Web API 边栏选项卡上默认缩放条件的“缩放规则”边栏选项卡

    注意:等待保存操作完成后,再继续本实验室。

审阅

在此练习中,你创建了将用于本实验室其余部分的 Azure 资源。

练习 2:使用 Application Insights 监视本地的 Web API

任务 1:生成一个 .NET Web API 项目

  1. 在实验室计算机上,启动“Visual Studio Code”。

  2. 在 Visual Studio Code 中的“文件”菜单上,选择“打开文件夹” 。

  3. 在“打开文件夹”窗口中,浏览到 Allfiles (F):\Allfiles\Labs\11\Starter\Api,然后选择“选择文件夹” 。

  4. 在 Visual Studio Code ** 窗口中的“菜单”栏上,选择“终端”,然后选择“新建终端”*。

  5. 在终端提示符下,运行以下命令,在当前目录中创建一个名为 SimpleApi 的新 .NET Web API 应用程序:

     dotnet new webapi --output . --name SimpleApi --framework net8.0
    
  6. 运行以下命令,将 2.21.0 版本的 Microsoft.ApplicationInsights 从 NuGet 导入到当前项目**

     dotnet add package Microsoft.ApplicationInsights --version 2.21.0
    

    注意:dotnet add package 命令将从 NuGet 添加 Microsoft.ApplicationInsights 包 。 有关详细信息,请参阅 Microsoft.ApplicationInsights

  7. 运行以下命令,从 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

  8. 在终端提示符下,运行以下命令,将 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

  9. 在终端提示符下,运行以下命令,将 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

  10. 在终端提示符下,运行以下命令以生成 .NET Web API:

     dotnet build
    

任务 2:更新应用代码以禁用 HTTPS 并使用 Application Insights

  1. 在“Visual Studio Code”窗口的“资源管理器”窗格中,选择 Program.cs 文件以在编辑器窗格中打开该文件 。

  2. 在编辑器窗格中,在第 17 行找到并删除以下代码**

     app.UseHttpsRedirection();
    

    注意:此代码行强制 Web API 使用 HTTPS。 对本实验室而言,这不是必要的。

  3. 在 Program.cs** 文件中,从第 7 行开始添加以下两行,通过将 Profiler 与 Application Insights 一起注册到服务集合中来启用 Profiler:

     builder.Services.AddApplicationInsightsTelemetry();
     builder.Services.AddServiceProfiler();
    
  4. 保存更改并关闭 Program.cs 文件。

  5. 在“Visual Studio Code”窗口的“资源管理器”窗格中,选择 appsettings.json 文件以在编辑器窗格中打开该文件 。

  6. 将以下元素添加到 appsettings.json 文件的 Logging 元素之后,将 instrumentation-key 占位符替换为在此实验室中记录的 Application Insights 资源检测密钥的值:

        "ApplicationInsights":
        {
           "InstrumentationKey": "instrumentation-key"
        },
    

    注意:如果要添加的节是文件的最后一个元素,请删除尾随逗号。

  7. appsettings.json 文件现在的结构应如下所示:

     {
         "Logging":{
             "LogLevel": {
                 "Default": "Information",
                 "Microsoft.AspNetCore": "Warning"
             }
         },
        "ApplicationInsights":
        {
           "InstrumentationKey": "instrumentation-key"
        },
        "AllowedHosts": "*"
     }
    

    备注:确保已将占位符替换为之前记录的自己的检测密钥。

  8. 保存对 appsettings.json 文件的更改并将其关闭。

  9. 在终端提示符下,运行以下命令以生成 .NET Web API。

     dotnet publish -c Release -r win-x86 --self-contained -p:PublishReadyToRun=true .\SimpleApi.csproj
    

任务 3:本地测试 API 应用程序

  1. 在终端提示符下,运行以下命令以启动 .NET Web API。

     dotnet run
    
  2. 查看命令的输出,并记下站点正在侦听的 HTTPS URL。

  3. 在任务栏上,打开“Microsoft Edge”图标的上下文菜单,然后打开一个新的浏览器窗口。

  4. 在打开的浏览器窗口中,导航到 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
         }
     ]
    
  5. 多次刷新浏览器页面以模拟某些响应。

  6. 关闭显示由 http://localhost:[port-number]/weatherforecast 生成的页面的浏览器窗口。

  7. 在 Visual Studio Code 中,选择“终止终端”(“回收站”图标)以关闭终端窗格和任何关联的进程 。

任务 4:在 Application Insights 中查看指标

  1. 在实验室计算机上,切换到显示 Azure 门户的“Microsoft Edge”浏览器窗口。

  2. 在Azure 门户中,导航回之前在此实验室中创建的 instrm[yourname] Application Insights 资源的边栏选项卡。

  3. 在“Application Insights”边栏选项卡中心的磁贴中,找到显示的指标。 具体来说,找到已经发生的服务器请求数量和平均服务器响应时间。

    以下屏幕截图显示本地 Web 应用的 Application Insights 指标。

    Azure 门户中本地 Web 应用的 Application Insights 指标

    注意:请求最多可能需要五分钟才可显示在 Application Insights 指标图表中。

审阅

在本练习中,你使用 ASP.NET 创建了一个 API 应用,并将它配置为将应用程序指标流式传输到 Application Insights。 然后,你使用 Application Insights 仪表板查看了有关 API 的性能详细信息。

练习 3:使用 Application Insights 监视 Web API

任务 1:将应用程序部署到 Web API

  1. 在实验室计算机上,切换到 Visual Studio Code。

  2. 在“Visual Studio Code”窗口中的“菜单”栏上,选择“终端”,然后选择“新建终端” 。

  3. 在终端提示符下,运行以下命令,确保当前目录设置为 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\
    
  4. 运行以下命令创建一个 zip 文件,其中包含要部署到 Azure Web API 旁边的初学者项目:

     Compress-Archive -Path * -DestinationPath api.zip
    
  5. 在终端提示符下,运行以下命令,使用 Azure PowerShell 登录到 Azure 订阅:

     Connect-AzAccount
    
  6. 出现提示时,提供用于访问用于此实验室的 Azure 订阅的凭据进行身份验证。

    注意:请等待登录过程完成。

  7. 运行以下命令以显示 MonitoredAssets 资源组中所有 Web 应用的列表:

     Get-AzWebApp -ResourceGroupName MonitoredAssets
    
  8. 运行以下命令以显示 MonitoredAssets 资源组中 Web 应用的列表,该资源组的名称以 smpapi* 开头 :

     Get-AzWebApp -ResourceGroupName MonitoredAssets | Where-Object {$_.Name -like 'smpapi*'}
    
  9. 运行以下命令以显示在上一步中标识的第一个 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
    
  10. 运行以下命令,将之前在此任务中创建的 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
    

    注意:等待部署完成后,再继续本实验室。

  11. 在实验室计算机上,启动另一个 Microsoft Edge 浏览器窗口。

  12. 在浏览器窗口中,导航到之前在此任务中部署了 API 应用的 Azure Web API 应用,方法是向其 URL(之前在此实验室中进行了记录)附加后缀 /weatherforecast。

    注意:例如,如果 URL 为 https://smpapianu.azurewebsites.net,则新的 URL 将为 https://smpapianu.azurewebsites.net/weatherforecast

  13. 验证输出是否类似于在本地运行 API 应用时生成的输出。

    注意:输出将包含不同的值,但其格式应相同。

任务 2:配置 Web 应用的深入指标集合

  1. 在实验室计算机上,切换到显示 Azure 门户的“Microsoft Edge”浏览器窗口。

  2. 在Azure 门户中,导航回之前在此实验室中创建的 smpapi[yourname] Web 应用资源的边栏选项卡。

  3. 在“应用服务”边栏选项卡中,选择“Application Insights” 。

  4. 在“Application Insights”边栏选项卡中,执行以下操作,选择“应用”,然后在确认对话框中选择“是” :

    设置 操作
    “Application Insights”滑块 确保将其设置为“启用”
    “检测应用程序”部分 选择“.NET”选项卡
    “集合级别”部分 选择“建议”
    “探查器”部分 选择“打开”
    “快照调试程序”部分 选择“关闭”
    “SQL 命令”部分 选择“关闭”

    以下屏幕截图显示 Azure Web API 的 Application Insights 设置。

    Azure Web API 的 Application Insights 设置

  5. 切换到在上一任务中打开的浏览器选项卡,以显示将 API 应用部署到目标 Azure API 应用的结果(包括目标 URL 中的 /weatherforecast 相对路径),并多次刷新浏览器页面。

  6. 查看 API 生成的 JSON 格式的输出。

  7. 记录用于访问 JSON 格式的输出的 URL。

    注意:如果 smpapianu 是之前创建的站点名称,则 URL 的格式应为 https://smpapianu.azurewebsites.net/weatherforecast

任务 3:在 Application Insights 中查看更新指标

  1. 返回到显示 Azure 门户中 Azure Web 应用的浏览器窗口。

  2. 在 Web 应用的“Application Insights”边栏选项卡上,选择“查看 Application Insights 数据”链接 。

  3. 在“Application Insights”边栏选项卡中心的磁贴中查看收集的指标,包括已发生的服务器请求数和平均服务器响应时间。

    以下屏幕截图显示 Azure 门户中 Azure Web 应用的 Application Insights 指标。

    Azure 门户中 Azure Web 应用的 Application Insights 指标

    注意:更新后的指标可能需要长达五分钟的时间才会显示在 Application Insights 指标图表中。

任务 4:在 Application Insights 中查看实时指标

  1. 在“Application Insights”边栏选项卡上的“调查”部分中,选择“实时指标” 。

  2. 切换回显示目标 Azure Web 应用中运行的目标 API 应用(面向目标 URL 中的 /weatherforecast 相对路径)的浏览器窗口,然后多次刷新浏览器页面。

  3. 切换到显示“实时指标”边栏选项卡的浏览器窗口,并查看其内容。

    注意:“传入请求”部分应该会在几秒钟内更新,其中显示你对 Web API 发出的请求。

审阅

在本练习中,你配置并测试了 Web API 应用的 Application Insights 日志记录,并查看了有关所发出的请求的实时信息。