注意
基本标准计划于 2025 年 3 月 17 日进入退休期。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划于 2024 年 9 月 30 日进入停用期,并将在 2025 年 3 月底之前完全关闭。
本文介绍如何访问应用程序实例中的 shell 环境以进行高级故障排除。
尽管 Azure Spring Apps 提供了多种托管式故障排除方法,但你可能希望使用 shell 环境进行高级故障排除。 例如,你可能想要完成以下故障排除任务:
- 直接使用 Java 开发工具包 (JDK) 工具。
- 对虚拟网络和非虚拟网络实例的网络连接应用后端服务和 API 调用延迟进行诊断。
- 诊断存储容量、性能和 CPU/内存问题。
先决条件
- 带有 Azure Spring Apps 扩展的 Azure CLI。 使用以下命令删除以前的版本,并安装最新的扩展。 如果以前安装了 - spring-cloud扩展,请卸载它以避免配置和版本不匹配。- az extension remove --name spring az extension add --name spring az extension remove --name spring-cloud
- Azure Spring Apps 中部署的应用程序。 
- 如果您已部署自定义容器和一个 shell 程序。 默认为 - /bin/sh。
分配 Azure 角色
在连接到应用实例之前,必须具有 Azure Spring Apps 连接角色。 连接到应用实例需要数据操作权限 Microsoft.AppPlatform/Spring/apps/deployments/connect/action。
可以使用 Azure 门户或 Azure CLI 分配 Azure 角色。
按照以下步骤使用 Azure 门户分配 Azure 角色。
- 打开 Azure 门户。 
- 打开现有 Azure Spring Apps 服务实例。 
- 从左侧菜单中选择“访问控制 (IAM)”。 
- 在命令栏中,选择添加,然后选择添加角色分配。 
- 在列表中搜索“Azure Spring Apps 连接角色”,然后选择“下一步”。 
- 选择“选择成员”,然后搜索你的用户名。 
- 选择“查看 + 分配”。 
连接到应用实例
可以使用 Azure 门户或 Azure CLI 连接到应用实例。
使用以下步骤通过 Azure 门户连接到应用实例。
- 打开 Azure 门户。 
- 打开现有 Azure Spring Apps 服务实例。 
- 从左侧菜单中选择“应用”,然后选择一个应用。 
- 从左侧菜单中选择“控制台”。 
- 选择一个应用程序实例。 
- 选择或输入要在容器中运行的 shell。 
- 选择“连接”。 
对应用实例进行故障排除
连接到应用实例后,可以检查堆内存的状态。
使用以下命令查找 Java 进程 ID(通常为 1):
jps
输出应如以下示例所示:
              
               
              
              
            
然后使用以下命令运行 JDK 工具来检查结果:
jstat -gc 1
输出应如以下示例所示:
              
               
              
              
            
断开与应用实例的连接
完成故障排除后,使用 exit 命令断开与应用实例的连接,或者按 Ctrl+d。
故障排除工具
以下列表介绍了可用于故障排除的一些预安装工具:
- 
              lsof- 列出打开的文件。
- 
              top- 显示系统摘要信息和当前利用率。
- 
              ps- 获取正在运行的进程的快照。
- 
              netstat- 输出网络连接和接口统计信息。
- 
              nslookup- 以交互方式查询 Internet 名称服务器。
- 
              ping- 测试是否可以访问网络主机。
- 
              nc- 使用 TCP 或 UDP 从/向网络连接进行读取和写入。
- 
              wget- 用于下载文件以及与 REST API 交互。
- 
              df- 显示可用的磁盘空间量。
还可以使用 JDK 捆绑的工具,例如 jps、jcmd 和 jstat。
以下列表显示了可用的工具,具体取决于你的服务计划和应用部署类型:
- 源代码、JAR 及工件部署:- 基本、标准以及标准消耗和专用计划:- 常用工具 - 是
- JDK 工具 - 是,仅适用于 Java 工作负载。
 
 
- 基本、标准以及标准消耗和专用计划:
- 自定义映像部署:取决于映像中已安装的工具集。
注意
源代码部署类型的路径中不包含 JDK 工具。 在运行任何 JDK 命令之前运行 export PATH="$PATH:/layers/tanzu-buildpacks_microsoft-openjdk/jdk/bin"。
限制
在应用程序实例中使用 shell 环境时存在以下限制:
- 由于应用是以非 root 用户身份运行的,因此你无法执行某些需要 root 权限的操作。 例如,无法使用系统包管理器 - apt / yum安装新工具。
- 由于禁止某些 Linux 功能,因此需要特殊权限的工具(例如 - tcpdump)无法正常运行。
 
              
               
              
               
              
               
              
              