返回

Azure Application Map 多个服务显示为一个服务:原因和解决方案

java

Azure Application Map 中多个服务显示为一个服务的问题和解决方案

在使用 Azure Application Map 时,你可能会遇到将多个 Web 服务显示为一个服务的问题。这不仅会混淆应用程序拓扑,还会影响对应用程序性能和依赖关系的准确分析。在本文中,我们将深入探讨造成这一问题的可能原因,并提供详细的步骤来解决它。

可能的原因

  • 未正确设置应用程序见解环境变量: 每个 Web 服务都必须具有唯一的应用程序见解连接字符串、检测密钥和角色实例环境变量。
  • 应用程序见解代理版本不正确: 使用的是低于 3.5.1 版本的应用程序见解代理,该版本不支持多个服务识别。
  • 服务容器化不当: 服务必须正确容器化并在容器应用程序中托管。

解决方案

步骤 1:验证环境变量

确保每个服务都设置了正确的应用程序见解环境变量,包括:

  • APPLICATIONINSIGHTS_CONNECTION_STRING
  • APPINSIGHTS_INSTRUMENTATIONKEY
  • APPLICATIONINSIGHTS_ROLE_INSTANCE

步骤 2:更新应用程序见解代理

将应用程序见解代理更新到 3.5.1 版本或更高版本。这可以确保应用程序见解正确识别多个服务。

步骤 3:正确容器化服务

确认服务已正确容器化,并托管在容器应用程序中。这对于 Azure Application Map 正确解析服务拓扑至关重要。

步骤 4:检查日志

在应用程序日志中查找与应用程序见解代理相关的任何错误或警告。这可以帮助你识别任何配置问题或代理故障。

步骤 5:联系 Azure 支持

如果以上解决方案无法解决问题,请联系 Azure 支持团队以获取进一步的帮助。

其他提示

  • 确保每个服务都有唯一的角色实例,以便 Application Map 区分它们。
  • 启用应用程序见解的请求遥测,以便捕获服务之间的调用。
  • 使用应用程序见解 SDK 手动记录调用并为每个服务提供唯一的名称。
  • 重新启动应用程序以使更改生效。

故障排除示例

让我们以一个四服务应用程序为例:

  1. 验证每个服务都有正确的应用程序见解环境变量。
  2. 将应用程序见解代理更新到 3.5.1 版本。
  3. 重新启动应用程序。
  4. 等待一段时间让应用程序见解收集数据。
  5. 刷新 Azure Application Map,查看服务是否已正确识别。

结论

通过遵循这些步骤并进行故障排除,你应该能够解决 Azure Application Map 中多个服务显示为一个服务的问题。正确的服务拓扑视图对于理解应用程序的行为、优化性能和确保可靠性至关重要。

常见问题解答

  1. 为什么我的应用程序见解环境变量没有设置正确?
    • 可能是由于手动配置错误或脚本部署问题。
  2. 如何检查应用程序见解代理的版本?
    • 可以使用 mvn io.opentelemetry:opentelemetry-javaagent:version 命令来检查代理版本。
  3. 如何启用应用程序见解的请求遥测?
    • 在应用程序代码中,启用 APPINSIGHTS_REQUEST_TELEMETRY 环境变量或使用应用程序见解 SDK 手动记录请求。
  4. 我应该使用应用程序见解 SDK 手动记录调用吗?
    • 这对于提供服务调用的额外上下文和可见性很有用,特别是在服务名称难以通过自动检测确定的情况下。
  5. 为什么我需要重新启动应用程序才能使更改生效?
    • 应用程序见解代理需要在启动时加载配置,因此重新启动对于反映环境变量的更改是必要的。