如何使用彈性 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 範例逐步解說所需的步驟。 使用下列步驟來部署範例應用程式:
請遵循使用 Azure Spring Apps 和 MySQL 部署 Spring Boot 應用程式中的步驟,直到您到達部署 Spring Boot 應用程式和設定環境變數一節為止。
使用適用於 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 的自定義永續性記憶體
使用下列步驟來啟用自訂永續性記憶體:
請遵循如何在 Azure Spring Apps 中啟用您自己的永續性記憶體中的步驟。
使用下列 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。 若要取得這項資訊,請使用下列步驟:
在 [Azure 入口網站] 中,移至彈性部署的 [概觀] 頁面,然後選取 [管理彈性雲端部署]。
在彈性雲端控制台的部署下,選取 [APM 和艦隊 ] 區段以取得彈性 APM 伺服器端點和秘密令牌。
從 Maven Central 下載彈性 APM Java 代理程式。
將彈性 APM 代理程式上傳至您稍早啟用的自定義永續性記憶體。 移至 [Azure 檔案儲存體 共用],然後選取 [上傳] 以新增代理程式 JAR 檔案。
擁有彈性 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 監視應用程式和計量
使用下列步驟來監視應用程式和計量:
Kibana APM 是支援應用程式監視工作流程的策劃應用程式。 您可以在這裡檢視高階詳細數據,例如要求/回應時間、輸送量,以及服務中的交易,對持續時間的影響最大。
您可以在特定交易中向下切入,以瞭解交易特定的詳細數據,例如分散式追蹤。
彈性 APM Java 代理程式也會從可供用戶進行疑難解答的 Kibana App 提供的 Azure Spring Apps 應用程式擷取 JVM 計量。
在彈性解決方案中使用內建的 AI 引擎,您也可以在 Azure Spring Apps 服務上啟用異常偵測,並選擇適當的動作-例如 Teams 通知、建立 JIRA 問題、Webhook 型 API 呼叫等。