實驗 11:監視部署至 Azure 的服務

Microsoft Azure 使用者介面

基於 Microsoft 雲端工具的動態性質,您可能會遇到在本訓練內容開發後變更的 Azure UI。 因此,實驗指示可能無法正確對應實驗步驟。

當社群提醒 Microsoft 需要做修改時,我們會更新此訓練課程。 然而,雲端更新經常發生,所以您可能會在此訓練內容更新前遇到 UI 的變更。 如果發生這種情況,請適應變更,然後視需要在實驗中調整。

指示

在您開始使用 Intune 之前

登入實驗室環境

使用下列認證登入您的 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 [您的名稱]
    [區域] 下拉式清單 選取您可以在其中部署 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 入口網站中,使用頁面頂端的 [搜尋資源、服務及文件] 文字輸入框來搜尋 App Services,然後在結果清單中選取 [App Services]。

  2. 在 [ 應用程式服務] 刀鋒視窗上,選取 [+ 建立],然後選取 [+ Web 應用程式]。

  3. 在 [建立 Web 應用程式] 刀鋒視窗的 [基本]** 索引卷標上,執行下列動作,然後選取 [監視 + 安全**] 索引卷標:

    設定 動作
    [訂閱] 下拉式清單 保留預設值
    [資源群組] 下拉式清單 選取 MonitoredAssets
    [名稱] 文字輸入框 輸入 smpapi[您的名稱]
    [發佈] 區段 選取 [程式碼]
    [執行階段堆疊] 下拉式清單 選取 .NET 8 (LTS)
    [作業系統] 區段 選取 [Windows]
    [區域]  下拉式清單 選取您選擇作為 Application Insights 資源位置的相同區域
    [Windows 方案 (美國東部)] 區段 選取 [新建],在 [名稱] 文字輸入框中,輸入 MonitoredPlan,然後選取 [確定]。
    [定價方案] 區段 保留預設值
  4. 在 [ 監視 + 安全 ] 索引標籤上,執行下列動作,然後選取 [ 檢閱 + 建立]:

    設定 動作
    [啟用 Application Insights] 區段 確認已選取 [是]
    [Application Insights] 下拉式清單 選取您先前在此實驗中建立的 instrm [您的名稱] Application Insights 資源
  5. 在 [ 建立 Web 應用程式 ] 索引標籤上,檢閱您在先前步驟中選取的選項。

  6. 選取 [建立],使用您指定的設定建立 Web API。

    注意:等候建立工作完成,再繼續進行實驗。

  7. 在部署的 [概觀] 窗格上選取 [前往資源] 按鈕,即可瀏覽至新建立的 [Azure Web API] 窗格。

  8. [App Service ] 刀鋒視窗的 [設定 ] 區段中,選取 [ 環境變數] 連結。

  9. 在 [ 環境變數] 區段中,執行下列動作:

    a. 在 [ 應用程式設定] 索引標籤上,選取 [ 顯示值 ] 以顯示與您的 Web API 相關聯的秘密。

    b. 請注意代表 APPLICATIONINSIGHTS_CONNECTION_STRING 索引碼的值。 當您組建 Web API 資源時,此值會自動設定。

  10. 在 [ App Service] 刀鋒視窗上,選取 服務功能表頂端的 [概觀 ]。

  11. 在 [App Service ] 刀鋒視窗的 **[基本資訊] 區段中,記錄 [預設網域 **] 連結的值。 您稍後會在實驗中用到此值,將要求提交至 Web API。

工作 4:設定 Web API 自動調整選項

  1. 在 [App Service] 窗格上的 [設定] 區段中,選取 [擴增 (App Service 方案)] 連結。

  2. 向下捲動,直到您看到 相應放大方法為止。 選取 [ 以規則為基礎的 ] 選項,然後選取 [ 設定]。

為擴增方法選取正確的選項

  1. 在 [擴增] 區段中,執行下列動作並選取 [儲存]:

    設定 動作
    [擴增] 區段 選取 [自訂自動調整]
    [自動調整設定名稱] 文字輸入框 輸入 ComputeScaler
    [資源群組] 下拉式清單 選取 MonitoredAssets
    [縮放模式] 區段 選取 [依計量縮放]
    [執行個體限制] 區段中的 [最小值] 文字輸入框 輸入 1
    [執行個體限制] 區段中的 [最大值] 文字輸入框 輸入 8
    [執行個體限制] 區段中的 [預設] 文字輸入框 輸入 3

    下列螢幕擷取畫面顯示 [App Service] 窗格上 [擴增] 區段中的設定。

    [Azure Web API] 窗格上的預設縮放條件

    設定 動作
    [規則] 區段 選取 [新增規則]
    [縮放規則] 窗格 保留所有設定的預設值,然後選取 [新增]

    下列螢幕擷取畫面顯示 [App Service] 窗格上 [擴增] 區段中的其他設定。

    [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. 執行下列命令,從 NuGet 將 Microsoft.ApplicationInsights 2.21.0 版匯入目前的專案:

     dotnet add package Microsoft.ApplicationInsights --version 2.21.0
    

    注意dotnet add package 命令會從 NuGet 新增 Microsoft.ApplicationInsights 套件。 如需詳細資訊,請參閱 Microsoft.ApplicationInsights

  7. 執行下列命令,從 NuGet 匯入 Microsoft.ApplicationInsights.AspNetCore 2.21.0 版:

     dotnet add package Microsoft.ApplicationInsights.AspNetCore --version 2.21.0
    

    注意dotnet add package 命令會從 NuGet 新增 Microsoft.ApplicationInsights.AspNetCore 套件。 如需詳細資訊,請參閱 Microsoft.ApplicationInsights.AspNetCore

  8. 在終端提示中執行下列命令,從 NuGet 將 Microsoft.ApplicationInsights.PerfCounterCollector 2.21.0 版匯入目前的專案:

     dotnet add package Microsoft.ApplicationInsights.PerfCounterCollector --version 2.21.0
    

    注意dotnet add package 命令會從 NuGet 新增 Microsoft.ApplicationInsights.PerfCounterCollector 套件。 如需詳細資訊,請參閱 Microsoft.ApplicationInsights.PerfCounterCollector

  9. 在終端提示中執行下列命令,從 NuGet 將 Microsoft.ApplicationInsights.Profiler.AspNetCore 2.4.0 版匯入目前的專案:

     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] 視窗中的 [Explorer] 窗格上,選取 Program.cs 檔案以在 [編輯器] 窗格中開啟檔案。

  2. 在 [編輯器]** 窗格上,尋找並刪除第 17 行的下列程式碼:

     app.UseHttpsRedirection();
    

    注意:這一行程式碼會強制 Web API 使用 HTTPS。 對於此實驗來說,這是沒有必要的。

  3. Program.cs 檔案中,從第 7 行開始新增下列兩行,藉由向 Service 集合註冊分析工具與 Application Insights 來加以啟用:

     builder.Services.AddApplicationInsightsTelemetry();
     builder.Services.AddServiceProfiler();
    
  4. 儲存變更並關閉 Program.cs 檔案。

  5. 在 [Visual Studio Code] 視窗中的 [Explorer] 窗格上,選取 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. 檢閱命令的輸出,並記下網站正在接聽的 HTTP 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[您的名稱] 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\入門\版 Api\bin\Release\net8.0\win-x86\發佈,部署檔案所在的位置:

     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 應用程式,方法是將尾碼 /weatherforecast 附加至其 URL (先前在此實驗中所記錄)。

    注意:例如,如果您的 URL 是 https://smpapianu.azurewebsites.net,則新的 URL 會是 https://smpapianu.azurewebsites.net/weatherforecast

  13. 驗證該輸出是否與本地執行 API 應用程式時產生的輸出相似。

    注意:輸出會包含不同的值,但其格式應該會相同。

工作 2:深入設定 Web Apps 的計量集合

  1. 在您的實驗用電腦上,切換至顯示 Azure 入口網站的 Microsoft Edge 瀏覽器視窗。

  2. 在 Azure 入口網站中,瀏覽回到您先前在此實驗中建立的 smpapi[您的名稱] Web 應用程式資源窗格。

  3. 在 [App Service] 窗格上,選取 [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 記錄,並檢視了有關所提出要求的即時資訊。