如何使用 AppDynamics Java 代理程式監視 Spring Boot 應用程式

注意

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

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

本文說明如何使用AppDynamics Java代理程式來監視 Azure Spring Apps 中的 Spring Boot 應用程式。

使用 AppDynamics Java 代理程式,您可以:

  • 監視應用程式
  • 使用環境變數設定 AppDynamics Java 代理程式
  • 從 AppDynamics 儀錶板檢查所有監視數據

下列影片介紹AppDynamics Java進程代理程式。


必要條件

啟動 AppDynamics Java 進程代理程式

針對整個工作流程,您需要:

  • 在 Azure Spring Apps 中啟動 AppDynamics Java 進程代理程式,以產生應用程式計量數據。
  • 連線 AppDynamics 代理程式至 AppDynamics 控制器,以收集和可視化控制器中的數據。

此圖顯示 AppDynamics Agent 在 Azure Spring Apps 中使用雙向箭號指向 Spring Boot Apps,以及指向 AppDynamics Agent 的箭號。

使用 Azure CLI 使用 AppDynamics 代理程式啟用應用程式

若要透過 Azure CLI 啟用應用程式,請使用下列步驟。

  1. 建立資源群組。

  2. 建立 Azure Spring Apps 的實例。

  3. 使用下列命令建立應用程式。 將佔位元 <...> 取代為您自己的值。

    az spring app create \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --is-public true
    
  4. 使用環境變數,使用 AppDynamics 代理程式建立部署。

    az spring app deploy \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/appdynamics/java/javaagent.jar" \
        --env APPDYNAMICS_AGENT_APPLICATION_NAME=<your-app-name> \
              APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<your-agent-access-key> \
              APPDYNAMICS_AGENT_ACCOUNT_NAME=<your-agent-account-name> \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME=true \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX=<your-agent-node-name> \
              APPDYNAMICS_AGENT_TIER_NAME=<your-agent-tier-name> \
              APPDYNAMICS_CONTROLLER_HOST_NAME=<your-AppDynamics-controller-host-name> \
              APPDYNAMICS_CONTROLLER_SSL_ENABLED=true \
              APPDYNAMICS_CONTROLLER_PORT=443
    

Azure Spring Apps 會將 AppDynamics Java 代理程式預安裝到路徑 /opt/agents/appdynamics/java/javaagent.jar。 您可以從應用程式的 JVM 選項啟動代理程式,然後使用環境變數設定代理程式。 您可以在使用 Java 代理程式監視 Azure Spring Apps 中找到這些變數的值。 如需這些變數如何協助在 AppDynamics UI 中檢視及組織報表的詳細資訊,請參閱 階層和節點

使用 appDynamics 代理程式使用 Azure 入口網站 啟動應用程式

若要透過 Azure 入口網站 啟用應用程式,請使用下列步驟。

  1. 流覽至 Azure 入口網站 中的 Azure Spring Apps 實例。

  2. 瀏覽窗格的 [設定] 區段中選取 [應用程式]。

    Azure 入口網站 的螢幕快照,其中顯示 Azure Spring Apps 實例的 [應用程式] 頁面。

  3. 選取應用程式,然後在瀏覽窗格中選取 [組態 ]。

  4. 使用 [ 一般設定 ] 索引標籤來更新 JVM 選項等值。

    Azure 入口網站 的螢幕快照,其中顯示 Azure Spring Apps 實例中應用程式的 [組態] 頁面,其中已選取 [一般設定] 索引標籤。

  5. 選取 [環境變數 ] 以新增或更新應用程式所使用的變數。

    顯示 [組態] 頁面的 Azure 入口網站 螢幕快照,其中已選取 [環境變數] 索引標籤。

自動化佈建

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

使用 Terraform 自動布建

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

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:/opt/agents/appdynamics/java/javaagent.jar"
  ...
    environment_variables = {
      "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
      "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
      "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
      "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
      "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
      "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
      "APPDYNAMICS_CONTROLLER_PORT" : "443"
  }
}

使用 Bicep 自動布建

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

deploymentSettings: {
  environmentVariables: {
    APPDYNAMICS_AGENT_APPLICATION_NAME : '<your-app-name>'
    APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY : '<your-agent-access-key>'
    APPDYNAMICS_AGENT_ACCOUNT_NAME : '<your-agent-account-name>'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME : 'true'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX : '<your-agent-node-name>'
    APPDYNAMICS_AGENT_TIER_NAME : '<your-agent-tier-name>'
    APPDYNAMICS_CONTROLLER_HOST_NAME : '<your-AppDynamics-controller-host-name>'
    APPDYNAMICS_CONTROLLER_SSL_ENABLED : 'true'
    APPDYNAMICS_CONTROLLER_PORT : '443'
  }
  jvmOptions: '-javaagent:/opt/agents/appdynamics/java/javaagent.jar'
}

使用ARM範本自動布建

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

"deploymentSettings": {
  "environmentVariables": {
    "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
    "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
    "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
    "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
    "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
    "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
    "APPDYNAMICS_CONTROLLER_PORT" : "443"
  },
  "jvmOptions": "-javaagent:/opt/agents/appdynamics/java/javaagent.jar",
  ...
}

在 AppDynamics 儀錶板中檢閱報告

本節顯示 AppDynamics 中的各種報告。

下列螢幕快照顯示 AppDynamics 儀錶板中應用程式的概觀:

顯示應用程式儀錶板的 AppDynamics 螢幕快照。

[ 應用程式] 索引標籤會顯示每個應用程式的整體資訊,如下列使用範例應用程式的螢幕快照所示:

  • api-gateway

    顯示範例 api-gateway 應用程式應用程式之應用程式儀錶板的 AppDynamics 螢幕快照。

  • customers-service

    AppDynamics 的螢幕快照,其中顯示範例客戶服務應用程式的應用程式儀錶板。

下列螢幕快照顯示如何從 [資料庫呼叫 ] 儀錶板取得基本資訊。

顯示 [資料庫呼叫] 儀錶板的AppDynamics螢幕快照。

您也可以取得最慢的資料庫呼叫相關信息,如下列螢幕快照所示:

顯示 [最慢的資料庫呼叫] 頁面的 AppDynamics 螢幕快照。

AppDynamics 的螢幕快照,其中顯示從 [最慢的資料庫呼叫] 頁面存取的 [相互關聯快照集] 頁面。

下列螢幕快照顯示 [記憶體] 頁面 [堆積] 區段中的記憶體使用量分析

顯示 [記憶體] 頁面 [堆積] 區段的 AppDynamics 螢幕快照。

您也可以查看垃圾收集程式,如下列螢幕快照所示:

AppDynamics 的螢幕快照,其中顯示 [記憶體] 頁面的 [垃圾收集] 區段。

下列螢幕快照顯示 [慢速交易 ] 頁面:

顯示 [緩慢交易] 頁面的 AppDynamics 螢幕快照。

您可以定義 JVM 的更多計量,如計量瀏覽器的此螢幕快照所示:

顯示計量瀏覽器的 AppDynamics 螢幕快照。

檢視 AppDynamics 代理程序記錄

根據預設,Azure Spring Apps 會將 AppDynamics 代理程式的資訊 層級記錄列印至 STDOUT。 記錄會與應用程式記錄混合。 您可以從應用程式記錄中找到明確的代理程式版本。

您也可以從下列位置取得 AppDynamics Agent 的記錄:

  • Azure Spring Apps 記錄
  • Azure Spring Apps Application Insights
  • Azure Spring Apps LogStream

瞭解 AppDynamics 代理程序升級

AppDynamics 代理程式會定期使用 JDK 升級(每季)。 代理程式升級可能會影響下列案例:

  • 升級前使用AppDynamics Agent的現有應用程式會保持不變,但需要重新啟動或重新部署,才能與新版本的AppDynamics Agent互動。
  • 升級后建立的應用程式會使用新版本的 AppDynamics Agent。

設定虛擬網路插入實例輸出流量

針對 Azure Spring Apps 的虛擬網路插入實例,請確定已針對 AppDynamics 代理程式正確設定輸出流量。 如需詳細資訊,請參閱 Cisco AppDynamics SaaS 網域和 IP 範圍 ,以及 客戶在虛擬網路中執行 Azure Spring Apps 的責任。

瞭解限制

若要瞭解 AppDynamics 代理程式的限制,請參閱 使用 Java 代理程式監視 Azure Spring Apps。

下一步

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