你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何使用 AppDynamics Java 代理监视 Spring Boot 应用

注意

从 2025 年 3 月中旬开始,基本、标准和企业计划将弃用,停用期为三年。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

从 2024 年 9 月 30 日开始,标准消耗和专用计划将弃用,六个月后将完全关闭。 建议过渡到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用

本文适用于:✔️ 标准消耗和专用计划(预览版)✔️ 基本/标准计划 ❌️ 企业计划

本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。

使用 AppDynamics Java 代理可以:

  • 监视应用程序
  • 使用环境变量配置 AppDynamics Java 代理
  • 在 AppDynamics 仪表板中检查所有监视数据

以下视频介绍了 AppDynamics Java 进程内代理。


先决条件

激活 AppDynamics Java 进程内代理

对于整个工作流,需要:

  • 在 Azure Spring Apps 中激活 AppDynamics Java 进程内代理以生成应用程序指标数据。
  • 将 AppDynamics 代理连接到 AppDynamics 控制器以收集和可视化控制器中的数据。

示意图显示 AppDynamics 代理与 Azure Spring Apps 中的 Spring Boot 应用的双向箭头,以及指向 AppDynamics 代理的箭头。

使用 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 中查看和组织报表的详细信息,请参阅层和节点

使用 Azure 门户激活具有 AppDynamics 代理的应用程序

若要通过 Azure 门户激活应用程序,请使用以下步骤。

  1. 在 Azure 门户中导航到 Azure Spring Apps 实例。

  2. 在导航窗格的“设置”部分,选择“应用”。

    Azure 门户的屏幕截图,其中显示了 Azure Spring Apps 实例的“应用”页。

  3. 选择应用,然后在导航窗格中选择“配置”。

  4. 使用“常规设置”选项卡更新 JVM 选项之类的值。

    Azure 门户的屏幕截图,显示了 Azure Spring Apps 实例中应用的“配置”页,其中选择了“常规设置”选项卡。

  5. 选择“环境变量”以添加或更新应用程序使用的变量。

    Azure 门户的屏幕截图,显示了“配置”页,其中选择了“环境变量”选项卡。

自动预配

还可以使用 Terraform、Bicep 或 Azure 资源管理器模板(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

    AppDynamics 的屏幕截图,显示了示例 api-gateway 应用的“应用程序”仪表板。

  • customers-service

    AppDynamics 的屏幕截图,显示了示例 customers-service 应用的“应用程序”仪表板。

以下屏幕截图显示如何能够从“数据库调用”仪表板获取基本信息。

AppDynamics 的屏幕截图,显示“数据库调用”仪表板。

还可以获取有关最慢的数据库调用的信息,如以下屏幕截图所示:

AppDynamics 的屏幕截图,显示“最慢数据库调用”页。

AppDynamics 的屏幕截图,显示了从“最慢数据库调用”页访问的“相关快照”页。

以下屏幕截图显示“内存”页的“堆”部分中的内存使用情况分析:

AppDynamics 的屏幕截图,显示“内存”页的“堆”部分。

还可以查看垃圾回收过程,如以下屏幕截图所示:

AppDynamics 的屏幕截图,显示“内存”页的“垃圾回收”部分。

以下屏幕截图显示“速度缓慢的事务”页:

AppDynamics 的屏幕截图,显示“慢速事务”页。

可以为 JVM 定义更多指标,如以下“指标浏览器”屏幕截图所示:

AppDynamics 的屏幕截图,显示“指标浏览器”。

查看 AppDynamics 代理日志

默认情况下,Azure Spring Apps 将 AppDynamics 代理的信息级日志输出到 STDOUT。 这些日志将与应用程序日志混合。 可以从应用程序日志中找到显式代理版本。

也可以从以下位置获取 AppDynamics 代理的日志:

  • Azure Spring Apps 日志
  • Azure Spring Apps Application Insights
  • Azure Spring Apps LogStream

了解 AppDynamics 代理升级

AppDynamics 代理定期(每季度)与 JDK 一起升级。 代理升级可能会影响以下场景:

  • 升级前使用 AppDynamics 代理的现有应用程序保持不变,但需要重启或重新部署才能正常使用新版 AppDynamics 代理。
  • 升级后创建的应用程序使用新版 AppDynamics 代理。

配置虚拟网络注入实例出站流量

对于 Azure Spring Apps 的虚拟网络注入实例,请确保为 AppDynamics 代理正确配置出站流量。 有关详细信息,请参阅 Cisco AppDynamics SaaS 域和 IP 范围以及在虚拟网络中运行 Azure Spring Apps 的客户责任

了解限制

若要了解 AppDynamics 代理的限制,请参阅使用 Java 代理监视 Azure Spring Apps

后续步骤

在 Azure Spring Apps 中使用 Application Insights Java 进程内代理