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

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。

使用 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 的 [概觀] 頁面。 [概觀] 頁面會顯示所有執行中應用程式的概觀。

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

    顯示 Application Insights 應用程式地圖頁面之 Azure 入口網站 螢幕快照。

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

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

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

    顯示 Application Insights 效能頁面之 Azure 入口網站 螢幕快照。

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

    顯示 Application Insights 失敗頁面之 Azure 入口網站 的螢幕快照。

  • 在瀏覽窗格中,選取 [計量 ],然後選取命名空間以查看 Spring Boot 計量和自定義計量,如果有的話。

    顯示 Application Insights 計量頁面之 Azure 入口網站 的螢幕快照。

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

    顯示 Application Insights Live Metrics 頁面之 Azure 入口網站 的螢幕快照。

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

    顯示 Application Insights 可用性頁面之 Azure 入口網站 的螢幕快照。

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

    顯示 Application Insights 記錄頁面之 Azure 入口網站 的螢幕快照。

使用 Azure 入口網站 管理 Application Insights

使用下列程式啟用 Java In-Process Agent。

  1. 移至服務 |服務實例的概觀頁面,然後在 [監視] 區段中選取 [Application Insights]。

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

  3. 選取現有的 Application Insights 實例,或建立新的實例。

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

    顯示已醒目提示 [啟用 Application Insights] 複選框之 Azure Spring Apps 的 Application Insights 頁面 Azure 入口網站 螢幕快照。

  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 入口網站 的螢幕快照,其中顯示 Azure Spring Apps 實例與 Application Insights 頁面和 [解除系結] 選項。

變更 Application Insights 設定

選取 Application Insights 數據行底下的名稱,以開啟 Application Insights 區段。

顯示 Azure Spring Apps 實例與 Application Insights 頁面之 Azure 入口網站 螢幕快照。

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

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

  1. 選取 [ 建置服務]。
  2. 選擇您的建置者。
  3. 選取 [系結] 資料行底下的 [編輯 ]。

Application Insights 設定位於 [系結類型] 資料行底下的 ApplicationInsights 專案中。

  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>

使用更新命令停用 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 Enterprise 方案會使用 buildpack 系結,將 Azure 應用程式 Insights 與 類型ApplicationInsights整合。 如需詳細資訊,請參閱 如何設定 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>

若要列出所有 buildpack 系結,並尋找 Application Insights 系結類型 ApplicationInsights,請使用下列命令:

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/monitoring 設定

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/monitoring 設定

{
  "$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"
  }
}

企業方案中的自動化擱置支援。 一旦檔可供使用,就會立即新增檔。

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 左右從已啟用 Java 代理程式的 Azure Spring Apps 建立應用程式,然後您今天上午 8:10 左右將 JAR 檔案部署到此應用程式。 經過一些測試,您今天上午 8:30 將程式代碼變更並部署新的 JAR 檔案至此應用程式。 然後,您休息一下,當您在上午 11:00 左右回來時,會檢查 Application Insights 的某些數據。 你看:
    • 應用程式對應中的三個實例,過去24小時內具有時間範圍,以及失敗、效能和計量。
    • 應用程式對應中的一個實例,其時間範圍在最後一小時,以及失敗、效能和計量。
    • 即時計量中的一個實例。
  • 您今天上午 8:00 左右從已啟用 Java 代理程式的 Azure Spring Apps 建立應用程式,然後您今天上午 8:10 左右將 JAR 檔案部署到此應用程式。 今天上午 8:30 左右,您會嘗試使用另一個 JAR 檔案進行藍色/綠色部署。 目前,您有兩個此應用程式的部署。 在今天上午 11:00 左右休息之後,您想要從 Application Insights 檢查一些數據。 你看:
    • 應用程式對應中的三個實例,過去24小時內具有時間範圍,以及失敗、效能和計量。
    • 應用程式對應中的兩個實例,其時間範圍在最後一小時,以及失敗、效能和計量。
    • 即時計量中的兩個實例。

下一步