Share via


Azure App Service 和 ASP.NET Core 的應用程式監視

在 Azure App 服務 上執行的 ASP.NET Core 型 Web 應用程式上啟用監視,現在比以往更容易。 您先前需要手動檢測您的應用程式。 現在,最新的擴充功能/代理程序預設會內建在App Service映射中。 本文將逐步引導您啟用 Azure 監視器 Application Insights 監視。 它也提供將大規模部署程式自動化的初步指引。

注意

針對檢測金鑰擷取的支援將在 2025 年 3 月 31 日結束。 檢測金鑰擷取將會繼續運作,但我們不再提供該功能的更新或支援。 轉換至連接字串以利用新功能

啟用自動結構監視

如需支援自動結構案例的完整清單,請參閱 支援的環境、語言和資源提供者

重要

Windows 上的自動結構僅支援 .NET Core 長期支援

不支援修剪獨立式部署。 請改為透過程式代碼使用 手動檢測

注意

自動結構在 2021 年 10 月之前稱為「無程式代碼附加」。

請參閱下列 啟用監視 一節,以開始使用您的App Service資源設定Application Insights。

啟用監視

  1. 針對您的應用程式服務,選取 左窗格中的 [Application Insights ]。 然後選取 [ 啟用]。

     此螢幕快照顯示已選取 [啟用] 的 [Application Insights] 索引標籤。

  2. 建立新的資源,或為此應用程式選取現有的 Application Insights 資源。

    注意

    當您選取 [ 確定 ] 以建立新的資源時,系統會提示您套 用監視設定。 選取 [ 繼續] 將新的 Application Insights 資源連結至您的應用程式服務。 您的應用程式服務接著會重新啟動。

    顯示 [變更資源] 下拉式清單的螢幕快照。

  3. 指定要使用的資源之後,您可以選擇讓 Application Insights 針對您的應用程式收集每個平台的數據的方式。 ASP.NET [建議] 或 [停用] 核心集合選項。

     顯示檢測應用程式區段的螢幕快照。

啟用用戶端監視

不論應用程式設定APPINSIGHTS_JAVASCRIPT_ENABLED是否存在,預設都會針對具有建議集合的 ASP.NET Core 應用程式啟用用戶端監視。

如果您要停用用戶端監視:

  1. 選取 [設定]>[組態]。

  2. 在 [應用程式設定] 底下,使用下列資訊建立新的應用程式設定

    • 名稱APPINSIGHTS_JAVASCRIPT_ENABLED
    • false
  3. 儲存 設定。 重新啟動您的應用程式。

自動化監視

若要使用Application Insights 啟用遙測收集,必須設定應用程式設定。

顯示 App Service 應用程式設定與 Application Insights 設定的螢幕快照。

應用程式設定定義

應用程式設定名稱 定義
ApplicationInsightsAgent_EXTENSION_VERSION 主要延伸模組,控制運行時間監視。 ~2 適用於 Windows 或 ~3 Linux
XDT_MicrosoftApplicationInsights_Mode 在預設模式中,只會啟用基本功能以確保最佳效能。 disabledrecommended
XDT_MicrosoftApplicationInsights_PreemptSdk 僅限 ASP.NET Core 應用程式。 啟用 Interop(互操作)與 Application Insights SDK。 與 SDK 並存載入延伸模組,並使用它來傳送遙測。 (停用 Application Insights SDK。 1

搭配 Azure Resource Manager 的 App Service 應用程式設定

您可以使用 Azure Resource Manager 樣本來管理及設定 Azure App 服務 的應用程式設定。 當您使用 Resource Manager 自動化部署新的 App Service 資源,或修改現有資源的設定時,可以使用此方法。

App Service 資源的應用程式設定 JSON 基本結構:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

如需 Resource Manager 範例,其中已針對 Application Insights 設定應用程式設定,此 範本 會很有説明。 具體來說,請參閱從第 238 行開始的 區段。

若要使用預設 Application Insights 設定建立 Resource Manager 範本,請開始程式,就像您要建立已啟用 Application Insights 的新 Web 應用程式一樣。

  1. 使用所需的 Web 應用程式資訊建立新的 App Service 資源。 在 [ 監視] 索引標籤上啟用 Application Insights。

  2. 選取 [檢閱 + 建立]。 然後選取 [ 下載自動化的範本]。

    顯示 App Service Web 應用程式建立功能表的螢幕快照。

    此選項會產生已設定所有必要設定的最新 Resource Manager 範本。

    顯示 App Service Web 應用程式範本的螢幕快照。

在下列範例中 AppMonitoredSite ,以您的網站名稱取代 的所有 實例:

注意

如果使用 Windows,請將 設定 ApplicationInsightsAgent_EXTENSION_VERSION~2。 如果使用 Linux,請將 設定 ApplicationInsightsAgent_EXTENSION_VERSION~3

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

透過 PowerShell 啟用

若要透過PowerShell啟用應用程式監視,必須變更基礎應用程式設定。 下列範例會針對資源群組 AppMonitoredRG中名為 AppMonitoredSite 的網站啟用應用程式監視。 它會設定要傳送至 012345678-abcd-ef01-2345-6789abcd 檢測金鑰的數據。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

注意

如果使用 Windows,請將 ApplicationInsightsAgent_EXTENSION_VERSION 設定為 ~2。 如果使用 Linux,請將 ApplicationInsightsAgent_EXTENSION_VERSION 設定為 ~3

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

升級監視擴充功能/代理程式 - .NET

若要升級監視擴充功能/代理程式,請遵循後續各節中的步驟。

從 2.8.9 版升級

從 2.8.9 版升級會自動進行,而不需要執行任何額外的動作。 新的監視位會在背景中傳遞至目標應用程式服務,並在應用程式重新啟動時加以挑選。

若要檢查您正在執行的擴充功能版本,請移至 https://yoursitename.scm.azurewebsites.net/ApplicationInsights

此螢幕快照顯示用來檢查您所執行之延伸模組版本的 URL 路徑。

從 1.0.0 版升級 - 2.6.5 版

從 2.8.9 版開始,會使用預安裝的網站延伸模組。 如果您使用舊版,您可以透過下列兩種方式之一進行更新:

  • 透過入口網站啟用來升級:即使您已安裝App Service的Application Insights擴充功能,UI仍只會顯示 [ 啟用 ] 按鈕。 在幕後,將會移除舊的私人網站延伸模組。

  • 透過PowerShell升級:

    1. 設定應用程式設定以啟用預安裝的網站延伸模組 ApplicationInsightsAgent。 如需詳細資訊,請參閱 透過PowerShell啟用。
    2. 手動移除名為 Application Insights 擴充功能的私人網站擴充功能,以進行 Azure App 服務

如果升級是從 2.5.1 之前的版本完成,請檢查 ApplicationInsights DLL 是否已從應用程式 bin 資料夾中移除。 如需詳細資訊,請參閱 疑難解答步驟

疑難排解

注意

當您在 ASP.NET Core App Service 中使用運行時間建立 Web 應用程式時,它會將單一靜態 HTML 頁面部署為入門網站。 我們不建議您針對預設範本的問題進行疑難解答。 在針對問題進行疑難解答之前,請先部署應用程式。

以下是針對在 App Service 上執行之 ASP.NET Core 型應用程式的擴充功能/代理程式型監視的逐步疑難解答指南。

  1. ApplicationInsightsAgent_EXTENSION_VERSION檢查應用程式設定是否設定為的值~2

  2. 瀏覽至 https://yoursitename.scm.azurewebsites.net/ApplicationInsights

    顯示結果頁面上方連結的螢幕快照。

    • 確認 Application Insights 擴充功能狀態Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      如果未執行,請遵循啟用ApplicationInsights監視一節中的指示。

    • 確認狀態來源存在,看起來像 。Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json

      如果不存在類似的值,表示應用程式目前未執行或不受支援。 若要確保應用程式正在執行,請嘗試手動瀏覽應用程式 URL/應用程式端點,讓運行時間資訊可供使用。

    • 確認 IKeyExistsTrueFalse如果是 ,請將和 APPLICATIONINSIGHTS_CONNECTION_STRING 與ikey GUID 一起新增APPINSIGHTS_INSTRUMENTATIONKEY至應用程式設定。

    • 如果您的應用程式參考任何 Application Insights 套件,啟用 App Service 整合可能不會生效,而且數據可能不會出現在 Application Insights 中。 例如,如果您先前已使用 ASP.NET Core SDK 檢測應用程式,或嘗試檢測您的應用程式。 若要修正此問題,請在入口網站中開啟 Application Insights SDK的Interop。 您將開始在 Application Insights 中看到數據。

      重要

      這項功能處於預覽狀態。

       顯示已啟用 Interop 設定的螢幕快照。

      數據現在會使用無程式代碼方法傳送,即使最初使用或嘗試使用ApplicationInsights SDK也一樣。

      重要

      如果應用程式使用Application Insights SDK 傳送任何遙測,將會停用遙測。 換句話說,將會停用自定義遙測(例如,任何 Track*() 方法)和自定義設定(例如取樣)。

使用 Web 應用程式部署的預設網站不支援自動用戶端監視

當您在 App Service 中使用 ASP.NET Core 執行時間建立 Web 應用程式時,它會將單一靜態 HTML 頁面部署為入門網站。 靜態網頁也會載入 ASP。IIS 中 NET 管理的網頁元件。 此行為允許測試無程式代碼伺服器端監視,但不支援自動用戶端監視。

如果您想要在 App Service Web 應用程式中測試 ASP.NET Core 的無程式代碼伺服器和用戶端監視,建議您遵循官方指南來 建立 ASP.NET Core Web 應用程式。 然後使用目前文章中的指示來啟用監視。

Application Insights 的標準計量與 Azure App 服務 計量之間的差異為何?

Application Insights 會收集對應用程式提出要求的遙測。 如果 WebApps/WebServer 中發生失敗,且要求未連線到使用者應用程式,Application Insights 就不會有任何遙測數據。

Application Insights 所計算的 serverresponsetime 持續時間不一定符合 Web Apps 觀察到的伺服器回應時間。 此行為是因為 Application Insights 只會計算要求實際到達使用者應用程式的持續時間。 如果要求在 WebServer 中停滯或排入佇列,等候時間會包含在 Web Apps 計量中,但不包含在 Application Insights 計量中。

測試應用程式主機與擷取服務之間的連線

應用程式深入剖析 SDK 和代理程式會傳送遙測,以擷取為 REST 呼叫擷取到我們擷取的端點。 您可以使用來自 PowerShell 或 curl 命令的原始 REST 用戶端,測試從 Web 伺服器或應用程式主機電腦到擷取服務端點的連線。 請參閱針對 Azure 監視器 Application Insights 中遺失的應用程式遙測進行疑難排解

不支援 PHP 和 WordPress

不支援 PHP 和 WordPress 網站。 目前沒有正式支援的 SDK/代理程式可監視這些工作負載的伺服器端。 若要在 PHP 或 WordPress 網站上手動檢測用戶端交易,請將用戶端 JavaScript 新增至您的網頁,請使用 JavaScript SDK

下表提供這些值的意義、其根本原因和建議修正的說明。

問題值 說明 修正
AppAlreadyInstrumented:true 這個值表示擴充功能偵測到 SDK 的某些層面已存在於應用程式中,且將會退讓。 可能是因為 或Microsoft.ApplicationInsights的參考Microsoft.ApplicationInsights.AspNetCore 拿掉參考。 某些 Visual Studio 樣本預設會新增這些參考。 舊版的 Visual Studio 參考 Microsoft.ApplicationInsights
AppAlreadyInstrumented:true 這個值也可能是因為先前部署的應用程式資料夾中存在 Microsoft.ApplicationsInsights DLL 所造成。 清除應用程式資料夾,以確保移除這些 DLL。 檢查您本機應用程式的 bin 目錄和 App Service 上的 wwwroot 目錄。 (若要檢查 App Service Web 應用程式的 wwwroot 目錄,請選取進階工具 (Kudu) >偵錯控制台>CMD>home\site\wwwroot]。
IKeyExists:false 這個值表示檢測金鑰不存在於應用程式設定 APPINSIGHTS_INSTRUMENTATIONKEY中。 可能的原因包括不小心移除值,或忘記在自動化腳本中設定值。 請確定設定出現在 App Service 應用程式設定中。

版本資訊

如需最新的更新和錯誤修正,請參閱 版本資訊

下一步