备注
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。
本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。
使用 AppDynamics Java 代理可以:
- 监视应用程序
- 使用环境变量配置 AppDynamics Java 代理
- 在 AppDynamics 仪表板中检查所有监视数据
对于整个工作流,需要:
- 在 Azure Spring Apps 中激活 AppDynamics Java 进程内代理以生成应用程序指标数据。
- 将 AppDynamics 代理连接到 AppDynamics 控制器以收集和可视化控制器中的数据。
若要通过 Azure CLI 激活应用程序,请使用以下步骤。
创建资源组。
创建 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
使用环境变量创建具有 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 门户激活应用程序,请使用以下步骤。
在 Azure 门户中导航到 Azure Spring Apps 实例。
在导航窗格的“设置”部分,选择“应用”。
选择应用,然后在导航窗格中选择“配置”。
使用“常规设置”选项卡更新 JVM 选项之类的值。
选择“环境变量”以添加或更新应用程序使用的变量。
还可以使用 Terraform、Bicep 或 Azure 资源管理器模板(ARM 模板)来运行预配自动化管道。 此管道可以提供完整的无干预体验,用于检测和监视你创建和部署的任何新应用程序。
若要在 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 文件中配置环境变量,请将以下代码添加到该文件,并将 <...> 占位符替换为你自己的值。 有关详细信息,请参阅 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 模板中配置环境变量,请将以下代码添加到模板中,并将“<...>”占位符替换为自己的值。 有关详细信息,请参阅 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 仪表板中的应用概述:
“应用程序”选项卡显示每个应用的整体信息,如以下使用示例应用程序的屏幕截图所示:
以下屏幕截图显示如何能够从“数据库调用”仪表板获取基本信息。
还可以获取有关最慢的数据库调用的信息,如以下屏幕截图所示:
以下屏幕截图显示“内存”页的“堆”部分中的内存使用情况分析:
还可以查看垃圾回收过程,如以下屏幕截图所示:
以下屏幕截图显示“速度缓慢的事务”页:
可以为 JVM 定义更多指标,如以下“指标浏览器”屏幕截图所示:
默认情况下,Azure Spring Apps 将 AppDynamics 代理的信息级日志输出到 STDOUT
。 这些日志将与应用程序日志混合。 可以从应用程序日志中找到显式代理版本。
也可以从以下位置获取 AppDynamics 代理的日志:
- Azure Spring Apps 日志
- Azure Spring Apps Application Insights
- Azure Spring Apps LogStream
AppDynamics 代理定期(每季度)与 JDK 一起升级。 代理升级可能会影响以下场景:
- 升级前使用 AppDynamics 代理的现有应用程序保持不变,但需要重启或重新部署才能正常使用新版 AppDynamics 代理。
- 升级后创建的应用程序使用新版 AppDynamics 代理。
对于 Azure Spring Apps 的虚拟网络注入实例,请确保为 AppDynamics 代理正确配置出站流量。 有关详细信息,请参阅 Cisco AppDynamics SaaS 域和 IP 范围以及在虚拟网络中运行 Azure Spring Apps 的客户责任。
若要了解 AppDynamics 代理的限制,请参阅使用 Java 代理监视 Azure Spring Apps。