分享方式:


在 Azure Spring Apps 中使用 Application Insights Java In-Process 代理程式

注意

基本標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告

標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps

使用 Spring Boot 原生映像應用程式時,請使用 Spring Boot 原生映像 Java 應用程式專案中的 Azure 監視器 OpenTelemetry Distro / Application Insights,而不是 Application Insights Java 代理程式。

本文適用於:標準使用和專用 (預覽) ✔️ 基本/標準 ✔️ 企業

本文說明如何在 Azure Spring Apps 中使用 Application Insights Java 代理程式來監視應用程式。

有了這項功能,您就可以:

  • 搭配不同的篩選搜尋追蹤資料。
  • 檢視 Spring 應用程式的相依性對應。
  • 檢查要求效能。
  • 監視即時計量。
  • 檢查要求失敗。
  • 檢查應用程式計量。
  • 檢查應用程式記錄檔。

Application Insights 可提供許多可觀察的檢視方塊,包括:

  • 應用程式對應
  • 效能
  • 失敗
  • 計量
  • 即時計量
  • 可用性
  • 記錄

使用 Application Insights 功能

Application Insights 功能啟用時,您可以:

  • 在瀏覽窗格中,選取 [Application Insights],以檢視 Application Insights 的 [概觀] 頁面。 [概觀] 頁面會顯示所有執行中應用程式的概觀。

  • 選取 [應用程式對應],以查看應用程式之間的呼叫狀態。

    Azure 入口網站的螢幕擷取畫面,顯示 Application Insights 應用程式對應頁面。

  • 選取客戶服務與 petclinic 之間的連結以查看更多詳細資料,例如 SQL 的查詢。

  • 選取端點,以查看對端點提出要求的所有應用程式。

  • 在瀏覽窗格中選取 [效能],以查看所有應用程式的作業、相依性和角色的效能資料。

    Azure 入口網站的螢幕擷取畫面,顯示 Application Insights 的 [效能] 頁面。

  • 在瀏覽窗格中選取 [失敗],以查看應用程式的任何非預期失敗或例外狀況。

    Azure 入口網站的螢幕擷取畫面,其中顯示 [Application Insights 失敗] 頁面。

  • 在瀏覽窗格中選取 [計量],並選取命名空間,以查看 Spring Boot 計量和自訂計量 (如果有的話)。

    Azure 入口網站的螢幕擷取畫面,顯示 [Application Insights 計量] 頁面。

  • 在瀏覽窗格中選取 [即時計量],以查看不同維度的即時計量。

    Azure 入口網站的螢幕擷取畫面,顯示 [Application Insights 即時計量] 頁面。

  • 在瀏覽窗格中選取 [可用性],以透過建立 Application Insights 中的可用性測試,來監視 Web 應用程式的可用性和回應能力。

    Azure 入口網站的螢幕擷取畫面,顯示 [Application Insights 可用性] 頁面。

  • 在瀏覽窗格中選取 [記錄],以檢視所有應用程式的記錄,或檢視依 cloud_RoleName 篩選時一個應用程式的記錄。

    Azure 入口網站的螢幕擷取畫面,顯示 [Application Insights 記錄] 頁面。

使用 Azure 入口網站管理 Application Insights

使用下列程序啟用 Java In-Process 代理程式。

  1. 移至您的服務執行個體的 [服務 | 概觀] 頁面,然後在 [監視] 區段中選取 [Application Insights]

  2. 選取 [啟用 Application Insights],以在 Azure Spring Apps 中啟用 Application Insights。

  3. 選取 Application Insights 的現有執行個體,或建立新的執行個體。

  4. Application Insights 啟用時,您可以設定一個選擇性的取樣率 (預設值為 10.0%)。

    Azure 入口網站的螢幕擷取畫面,顯示 Azure Spring Apps 的 [Application Insights] 頁面,其中醒目提示 [啟用 Application Insights] 核取方塊。

  5. 按一下 [儲存],即可儲存變更。

注意

請勿在不同的 Azure Spring Apps 執行個體中使用相同的 Application Insights 執行個體,否則您會看到混合資料。

您可以使用入口網站來檢查或更新 Application Insights 中的目前設定。

使用 Azure 入口網站啟用 Application Insights

  1. 選取 [Application Insights]

  2. 選取 [編輯繫結] 或 [解除繫結] 超連結,以啟用 Application Insights。

    Azure 入口網站 Azure 的螢幕擷取畫面,顯示具有 [Application Insights] 頁面和 [編輯繫結] 選項的 Azure Spring Apps 執行個體。

  3. 編輯 Application Insights取樣率,然後選取 [儲存]

停用 Application Insights

  1. 選取 [Application Insights]

  2. 選取 [解除繫結] 以停用 Application Insights。

    Azure 入口網站的螢幕擷取畫面,顯示具有 [Application Insights] 頁面和 [解除繫結] 選項的 Azure Spring Apps 執行個體。

變更 Application Insights 設定

選取 [Application Insights] 資料行底下的名稱,以開啟 [Application Insights] 區段。

Azure 入口網站的螢幕擷取畫面,顯示具有 [Application Insights] 頁面和 [解除繫結] 選項的 Azure Spring Apps 執行個體。

在組建服務中編輯 Application Insights 組建套件繫結

若要在組建服務中檢查並更新 Application Insights 組建套件繫結的目前設定,請遵循下列步驟:

  1. 選取 [組建服務]
  2. 選擇您的建立器。
  3. 選取 [繫結] 資料行底下的 [編輯]

在 [繫結類型] 資料行下所列的 ApplicationInsights 項目中,可以找到 Application Insights 設定。

  1. 選取 [繫結] 超連結,或選取省略符號底下的 [編輯繫結],以開啟和編輯 Application Insights 組建套件繫結。

    Azure 入口網站的螢幕擷取畫面,顯示預設建立器窗格的 [編輯繫結]。

  2. 編輯繫結設定,然後選取 [儲存]

    Azure 入口網站的螢幕擷取畫面,顯示 [編輯繫結] 窗格。

使用 Azure CLI 管理 Application Insights

您可以使用 Azure CLI 命令來管理 Application Insights。 在下列命令中,請務必將<預留位置>文字取代為說明的值。 <service-instance-name> 預留位置代表 Azure Spring Apps 執行個體的名稱。

啟用 Application Insights

若要在建立 Azure Spring Apps 執行個體時設定 Application Insights,請使用下列命令。 針對 app-insights 引數,您可以指定 Application Insights 名稱或資源識別碼。

az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name "service-instance-name" \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

您也可以使用 Application Insights 連接字串 (慣用) 或檢測金鑰,如下列範例所示。

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate> \
    --sku Enterprise

停用 Application Insights

若要在建立 Azure Spring Apps 執行個體時停用 Application Insights,請使用下列命令:

az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights
az spring create \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable-app-insights \
    --sku Enterprise

檢查 Application Insights 設定

若要檢查現有 Azure Spring Apps 執行個體的 Application Insights 設定,請使用下列命令:

az spring app-insights show \
    --resource-group <resource-group-name> \
    --name <service-instance-name>

更新 Application Insights

若要將 Application Insights 更新為使用連接字串 (慣用) 或檢測金鑰,請使用下列命令:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights-key <connection-string-or-instrumentation-key> \
    --sampling-rate <sampling-rate>

若要將 Application Insights 更新為使用資源名稱或識別碼,請使用下列命令:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --app-insights <name-or-resource-ID> \
    --sampling-rate <sampling-rate>

使用 update 命令停用 Application Insights

若要停用現有 Azure Spring Apps 執行個體上的 Application Insights,請使用下列命令:

az spring app-insights update \
    --resource-group <resource-group-name> \
    --name <service-instance-name> \
    --disable

管理 Application Insights 組建套件繫結

本節僅適用於企業方案,並提供上一節的補充指示。

Azure Spring Apps 企業方案使用組建套件繫結將 Azure Application InsightsApplicationInsights 類型整合。 如需詳細資訊,請參閱 如何設定 APM 整合和 CA 憑證

若要建立 Application Insights 組建套件繫結,請使用下列命令:

az spring build-service builder buildpack-binding create \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

若要列出所有組建套件繫結,並尋找 ApplicationInsights 類型的 Application Insights 繫結,請使用下列命令:

az spring build-service builder buildpack-binding list \
    --resource-group <your-resource-group-name> \
    --service <your-service-resource-name> \
    --builder-name <your-builder-name>

若要取代 Application Insights 組建套件繫結,請使用下列命令:

az spring build-service builder buildpack-binding set \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name> \
    --type ApplicationInsights \
    --properties sampling-percentage=<your-sampling-percentage> \
                 connection-string=<your-connection-string>

若要取得 Application Insights 組建套件繫結,請使用下列命令:

az spring build-service builder buildpack-binding show \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

若要刪除 Application Insights 組建套件繫結,請使用下列命令:

az spring build-service builder buildpack-binding delete \
    --resource-group <your-resource-group-name> \
    --service <your-service-instance-name> \
    --name <your-binding-name> \
    --builder-name <your-builder-name>

自動化

下列各節說明如何使用 Bicep、Azure Resource Manager 範本 (ARM 範本) 或 Terraform 將部署自動化。

Bicep

若要使用 Bicep 檔案進行部署,請將下列內容複製到 main.bicep 檔案中。 如需詳細資訊,請參閱 Microsoft.AppPlatform Spring/monitoringSettings

param springName string
param location string = resourceGroup().location

resource spring 'Microsoft.AppPlatform/Spring@2020-07-01' = {
  name: springName
  location: location
  properties: {}
}

resource monitorSetting 'Microsoft.AppPlatform/Spring/monitoringSettings@2020-11-01-preview' = {
  parent: spring
  name: 'default'
  properties: {
    appInsightsInstrumentationKey: '00000000-0000-0000-0000-000000000000'
    appInsightsSamplingRate: 88
  }
}

ARM 範本

若要使用 ARM 範本進行部署,請將下列內容複寫到 azuredeploy.json 檔案中。 如需詳細資訊,請參閱 Microsoft.AppPlatform Spring/monitoringSettings

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "springName": {
      "type": "string"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.AppPlatform/Spring",
      "apiVersion": "2020-07-01",
      "name": "[parameters('springName')]",
      "location": "[parameters('location')]",
      "properties": {}
    },
    {
      "type": "Microsoft.AppPlatform/Spring/monitoringSettings",
      "apiVersion": "2020-11-01-preview",
      "name": "[format('{0}/{1}', parameters('springName'), 'default')]",
      "properties": {
        "appInsightsInstrumentationKey": "00000000-0000-0000-0000-000000000000",
        "appInsightsSamplingRate": 88
      },
      "dependsOn": [
        "[resourceId('Microsoft.AppPlatform/Spring', parameters('springName'))]"
      ]
    }
  ]
}

Terraform

對於 Terraform 部署,請使用下列範本。 如需詳細資訊,請參閱 azurerm_spring_cloud_service

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_application_insights" "example" {
  name                = "tf-test-appinsights"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  application_type    = "web"
}

resource "azurerm_spring_cloud_service" "example" {
  name                = "example-springcloud"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  sku_name            = "S0"

  config_server_git_setting {
    uri          = "https://github.com/Azure-Samples/piggymetrics"
    label        = "config"
    search_paths = ["dir1", "dir2"]
  }

  trace {
    connection_string = azurerm_application_insights.example.connection_string
    sample_rate       = 10.0
  }

  tags = {
    Env = "staging"
  }
}

尚不支援企業方案中的 Azure 自動化。 文件在可用後將立即新增。

Java 代理程式更新/升級

Java 代理程式將透過 JDK 定期更新/升級,這可能會影響下列案例。

注意

JDK 版本每年每季更新/升級。

  • 在更新/升級之前使用 Java 代理程式的現有應用程式將不受影響。
  • 在更新/升級之後建立的應用程式,會使用新版的 Java 代理程式。
  • 先前未使用 Java 代理程式的現有應用程式,必須重新啟動或重新部署,才能使用新版的 Java 代理程式。

更新組建套件時,Java 代理程式會更新/升級。

Java 代理程式設定熱載入

Azure Spring Apps 已啟用熱載入機制,以調整代理程式組態設定而無須重新啟動應用程式。

注意

熱載入機制會有數分鐘的延遲。

  • 如果已啟用 Java 代理程式,則變更 Application Insights 執行個體或 SamplingRate 值不需要重新啟動應用程式。

  • 如果啟用 Java 代理程式,則必須重新啟動應用程式。

  • 當您停用 Java 代理程式時,應用程式會在幾分鐘後停止傳送所有監視資料。 您可以重新啟動應用程式,以從 Java 執行階段環境移除代理程式。

Azure Spring Apps 與 Application Insights 之間的概念比對

Azure Spring Apps Application Insights
App * 應用程式對應/角色
* 即時計量/角色
* 失敗/角色/雲端角色
* 效能/角色/雲端角色
App Instance * 應用程式對應/角色執行個體
* 即時計量/服務名稱
* 失敗/角色/雲端執行個體
* 效能/角色/雲端執行個體

Azure Spring Apps 中的名稱 App Instance 會在下列情況下變更或產生:

  • 您建立新的應用程式。
  • 您將 JAR 檔案或原始程式碼部署到現有的應用程式。
  • 您起始藍色/綠色部署。
  • 您重新啟動應用程式。
  • 您停止部署應用程式,然後加以重新啟動。

資料儲存於 Application Insights 時,會包含自 Java 代理程式啟用後所建立或部署的 Azure Spring Apps 應用程式執行個體的歷程記錄。 例如,在 Application Insights 入口網站中,您可以看到昨天建立、但在特定時間範圍 (例如過去 24 小時) 內刪除的應用程式資料。 下列案例顯示其運作方式:

  • 您在今天上午 8:00 左右從 Azure Spring Apps 建立了啟用 Java 代理程式的應用程式,然後在今天上午 8:10 左右將 JAR 檔案部署至此應用程式。 經過測試後,您變更了程式碼,並在今天上午 8:30 將新的 JAR 檔案部署至此應用程式。 然後您稍作休息,並在上午 11:00 左右回來檢查 Application Insights 中的一些資料。 您會看見:
    • 應用程式對應中時間範圍為過去 24 小時的三個執行個體,以及 [失敗]、[效能] 和 [計量]。
    • 應用程式對應中時間範圍為過去一小時的一個執行個體,以及 [失敗]、[效能] 和 [計量]。
    • 即時計量中的一個執行個體。
  • 您在今天上午 8:00 左右從 Azure Spring Apps 建立了啟用 Java 代理程式的應用程式,然後在今天上午 8:10 左右將 JAR 檔案部署至此應用程式。 今天上午 8:30 左右,您嘗試使用另一個 JAR 檔案進行藍色/綠色部署。 目前,您的這個應用程式有兩個部署。 休息到約上午 11:00 後,您想要檢查 Application Insights 中的某些資料。 您會看見:
    • 應用程式對應中時間範圍為過去 24 小時的三個執行個體,以及 [失敗]、[效能] 和 [計量]。
    • 應用程式對應中時間範圍為過去一小時的兩個執行個體,以及 [失敗]、[效能] 和 [計量]。
    • 即時計量中的兩個執行個體。

下一步