分享方式:


如何使用彈性 APM Java 代理程式監視 Spring Boot 應用程式

注意

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

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

本文適用於: ✔️ 基本/標準 ❌ 企業

本文說明如何使用彈性 APM 代理程式來監視在 Azure Spring Apps 中執行的 Spring Boot 應用程式。

透過彈性可檢視性解決方案,您可以達成下列作業的統一可檢視性:

  • 使用彈性 APM Java 代理程式監視應用程式,以及搭配 Azure Spring Apps 使用永續性記憶體。
  • 使用診斷設定將 Azure Spring Apps 記錄寄送至 Elastic。 如需詳細資訊,請參閱 使用診斷設定分析使用彈性 (ELK) 的記錄。

下列影片介紹使用 Elastic 的 Spring Boot 應用程式的統一可檢視性。


必要條件

部署 Spring Petclinic 應用程式

本文使用 Spring Petclinic 範例逐步解說所需的步驟。 使用下列步驟來部署範例應用程式:

  1. 請遵循使用 Azure Spring Apps 和 MySQL 部署 Spring Boot 應用程式中的步驟,直到您到達部署 Spring Boot 應用程式和設定環境變數一節為止。

  2. 使用適用於 Azure CLI 的 Azure Spring Apps 擴充功能搭配下列命令來建立應用程式以在 Azure Spring Apps 中執行:

    az spring app create \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --is-public true
    

啟用 Azure Spring Apps 的自定義永續性記憶體

使用下列步驟來啟用自訂永續性記憶體:

  1. 請遵循如何在 Azure Spring Apps 中啟用您自己的永續性記憶體中的步驟。

  2. 使用下列 Azure CLI 命令,為您的 Azure Spring Apps 應用程式新增永續性記憶體。

    az spring app append-persistent-storage \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --persistent-storage-type AzureFileVolume \
       --share-name <your-Azure-file-share-name> \
       --mount-path <unique-mount-path> \
       --storage-name <your-mounted-storage-name>
    

啟用彈性 APM Java 代理程式

在繼續之前,您需要彈性 APM 伺服器連線資訊方便,這假設您已在 Azure 上部署 Elastic。 如需詳細資訊,請參閱 如何在 Azure Microsoft上部署和管理 Elastic。 若要取得這項資訊,請使用下列步驟:

  1. 在 [Azure 入口網站] 中,移至彈性部署的 [概觀] 頁面,然後選取 [管理彈性雲端部署]。

    Azure 入口網站 Elasticsearch (Elastic Cloud) 頁面的螢幕快照。

  2. 在彈性雲端控制台的部署下,選取 [APM 和艦隊 ] 區段以取得彈性 APM 伺服器端點和秘密令牌。

    [彈性 APM 和艦隊] 頁面的螢幕快照,其中已醒目提示複製端點和 APM 伺服器秘密令牌。

  3. Maven Central 下載彈性 APM Java 代理程式。

    已醒目提示 jar 下載的 Maven Central 螢幕快照。

  4. 將彈性 APM 代理程式上傳至您稍早啟用的自定義永續性記憶體。 移至 [Azure 檔案儲存體 共用],然後選取 [上傳] 以新增代理程式 JAR 檔案。

    Azure 入口網站 的螢幕快照,其中顯示 [檔案分享] 頁面的 [上傳檔案] 窗格。

  5. 擁有彈性 APM 端點和秘密令牌之後,請使用下列命令在部署應用程式時啟用彈性 APM Java 代理程式。 佔位元 <agent-location> 是指彈性 APM Java 代理程式的掛接儲存位置。

    az spring app deploy \
        --name <your-app-name> \
        --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \
        --jvm-options='-javaagent:<elastic-agent-location>' \
        --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \
              ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \
              ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \
              ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
    

自動化佈建

您也可以使用 Terraform、Bicep 或 Azure Resource Manager 範本 (ARM 範本) 來執行布建自動化管線。 此管線可以提供完整的交接體驗,以檢測及監視您建立和部署的任何新應用程式。

使用 Terraform 自動布建

若要在 Terraform 樣本中設定環境變數,請將下列程式代碼新增至範本,並將 <...> 佔位元取代為您自己的值。 如需詳細資訊,請參閱 管理作用中的 Azure Spring Apps 部署

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:<elastic-agent-location>"
  ...
    environment_variables = {
      "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
      "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
      "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
      "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  }
}

使用 Bicep 檔案自動布建

若要在 Bicep 檔案中設定環境變數,請將下列程式代碼新增至 檔案,並將 <...> 佔位元取代為您自己的值。 如需詳細資訊,請參閱 Microsoft.AppPlatform Spring/apps/deployments

deploymentSettings: {
  environmentVariables: {
    ELASTIC_APM_SERVICE_NAME='<your-app-name>',
    ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
    ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
    ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
  },
  jvmOptions: '-javaagent:<elastic-agent-location>',
  ...
}

使用ARM範本自動布建

若要在 ARM 範本中設定環境變數,請將下列程式代碼新增至範本,並將 <...> 佔位元取代為您自己的值。 如需詳細資訊,請參閱 Microsoft.AppPlatform Spring/apps/deployments

"deploymentSettings": {
  "environmentVariables": {
    "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
    "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
    "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
    "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  },
  "jvmOptions": "-javaagent:<elastic-agent-location>",
  ...
}

升級彈性 APM Java 代理程式

若要規劃升級,請參閱 Azure 上彈性雲端的升級版本 ,以及 APM 的重大變更 。 升級 APM 伺服器之後,請在自定義持續性記憶體中上傳彈性 APM Java 代理程式 JAR 檔案。 然後,使用指向已升級的彈性 APM Java 代理程式 JAR 的已更新 JVM 選項重新啟動您的應用程式。

使用彈性 APM 監視應用程式和計量

使用下列步驟來監視應用程式和計量:

  1. 在 Azure 入口網站 中,移至彈性部署的 [概觀] 頁面,然後選取 Kibana 連結。

    顯示 Elasticsearch 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示 [部署 URL Kibana] 連結。

  2. 開啟 Kibana 之後,請在搜尋列中搜尋 APM ,然後選取 [APM]。

    顯示 APM 搜尋結果的 Elastic / Kibana 螢幕快照。

Kibana APM 是支援應用程式監視工作流程的策劃應用程式。 您可以在這裡檢視高階詳細數據,例如要求/回應時間、輸送量,以及服務中的交易,對持續時間的影響最大。

顯示 APM 服務 [概觀] 頁面的 Elastic / Kibana 螢幕快照。

您可以在特定交易中向下切入,以瞭解交易特定的詳細數據,例如分散式追蹤。

顯示 APM 服務交易頁面的 Elastic / Kibana 螢幕快照。

彈性 APM Java 代理程式也會從可供用戶進行疑難解答的 Kibana App 提供的 Azure Spring Apps 應用程式擷取 JVM 計量。

顯示 APM 服務 JVM 頁面的 Elastic / Kibana 螢幕快照。

在彈性解決方案中使用內建的 AI 引擎,您也可以在 Azure Spring Apps 服務上啟用異常偵測,並選擇適當的動作-例如 Teams 通知、建立 JIRA 問題、Webhook 型 API 呼叫等。

Elastic / Kibana 的螢幕快照,其中顯示 APM 服務頁面的 [建立規則] 窗格,其中已醒目提示 [動作]。

下一步