使用 Azure Spring Cloud 实现美观的应用程序监控

工程 | Josh Long | 2021 年 1 月 21 日 | ...

这是一篇由我们朋友,微软的 Asir Vedamuthu Selvasingh 撰写的客座文章。

您好,Spring 粉丝!我们很高兴地宣布,应用程序性能监控 (APM) 现已完全集成到 Azure Spring Cloud 中,由 Application Insights 提供支持。

Azure Spring Cloud 由微软和 VMware 联合构建、运营和支持。它是一款针对 Spring Boot 应用程序的完全托管服务,可让您专注于构建运行业务的应用程序,而无需费心管理基础设施。

Azure Spring Cloud 中的 APM 提供了对 Spring 应用程序的深入性能监控,而无需进行任何代码更改、重新编译、重新测试或重新部署。Azure Spring Cloud 上的 APM 非常无缝,您可以立即获得应用程序的洞察力。您无需执行任何操作 - 只需部署您的应用程序,监控数据就会开始流动。应用程序监控带来的好处包括

  • 使用**分布式跟踪**了解所有应用程序,包括操作请求从源到目标的路径,以及对运行正常的应用程序和存在瓶颈的应用程序的洞察力。
  • 调用路径上下文中的日志、异常和指标提供**有意义的见解和可操作的信息**,以加快根本原因分析。
  • 对应用程序**依赖项**的见解 - SQL 数据库、MySQL、PostgreSQL、MariaDB、JDBC、MongoDB、Cassandra、Redis、JMS、Kafka、Netty/WebFlux 等。
  • 应用程序公开的每个操作调用的**性能数据**,包括请求计数、响应时间、CPU 使用率和内存等数据。
  • 通过 Micrometer 方便地自动收集的**自定义指标**,允许您发布自定义性能指标或特定于业务的指标,并可视化更深入的应用程序和业务洞察力。
  • 能够**浏览、查询和警报应用程序指标和日志**。

虽然 Azure Spring Cloud 和 Application Insights Java 代理都普遍可用,但它们开箱即用的监控集成处于预览阶段。

您可以在创建或更新 Azure Spring Cloud 时启用 Java 内存监控代理。

az spring-cloud create --name ${SPRING_CLOUD_SERVICE} 
        --sku standard --enable-java-agent 
        --resource-group ${RESOURCE_GROUP} 
        --location ${REGION}

然后,您可以打开 Azure Spring Cloud 创建的 Application Insights 并开始监控应用程序及其依赖项 - 我们将使用Spring Petclinic 的分布式版本来说明这一点。导航到“应用程序映射”边栏选项卡,您可以在其中看到微服务的令人难以置信的整体视图,该视图显示运行正常的应用程序(绿色)和存在瓶颈的应用程序(红色)[图 1]。开发人员可以轻松识别应用程序中的问题,并快速对其进行故障排除和修复。

图 1 - Application Insights 中的微服务事务

导航到“性能”边栏选项卡,您可以在其中看到应用程序公开的操作的响应时间和请求计数[图 2]。

图 2 - 应用程序公开的操作的性能

导航到“性能”边栏选项卡中的“依赖项”选项卡,您可以在其中查看所有依赖项及其响应时间和请求计数[图 3]。

图 3 - 应用程序依赖项的性能

您可以单击 SQL 调用或依赖项以查看上下文中的完整端到端事务[图 4]。

图 4 - 从应用程序到 SQL 调用的端到端事务详细信息

导航到“故障”边栏选项卡中的“异常”选项卡以查看应用程序抛出的异常集合[图 5]。

图 5 - 应用程序抛出的异常

只需选择一个异常并深入了解有意义的见解和可操作的堆栈跟踪[图 6]。

图 6 - 应用程序异常的端到端事务详细信息

导航到“指标”边栏选项卡以查看 Spring Boot 应用程序、Spring Cloud 模块及其依赖项贡献的所有指标。下图展示了 Spring Cloud Gateway 贡献的gateway-requests和 JDBC 贡献的hikaricp_connections[图 7]。同样,您可以聚合 Spring Cloud Resilience4J 指标并将其可视化。

图 7 - Spring 模块贡献的指标

Spring Boot 应用程序注册许多核心指标 - JVM、CPU、Tomcat、Logback 等。您可以使用 Micrometer 贡献自己的自定义指标,例如在类级别使用@Timed Micrometer 注解。然后,您可以在 Application Insights 中可视化这些自定义指标。例如,请查看下面如何通过自定义指标跟踪宠物主人、宠物及其临床访问 - 您还可以看到模式如何在晚上 9 点发生变化,因为应用程序在自动缩放启动时会驱动更高的利用率[图 8]。

图 8 - 用户应用程序发布的自定义指标

您可以使用 Application Insights 中的可用性测试功能来监控 Azure Spring Cloud 中应用程序的可用性。这是一个定期测试,用于以定期间隔从全球任何地方监控应用程序的可用性和响应能力。如果您的应用程序没有响应或响应速度太慢,它可以主动向您发出警报。下图显示了来自北美各地的可用性测试 - 美国西部、美国中南部、美国中部和美国东部[图 9]。

图 9 - 应用程序端点的可用性随时间变化

导航到“实时指标”边栏选项卡,您可以在那里几乎实时地查看实时指标,仅需一秒钟[图 10]。

图 10 - 实时指标

Application Insights Java 代理基于OpenTelemetry 自动检测工作,微软与 APM 领域的其他最聪明的人才合作。

立即构建您的解决方案并对其进行监控!

Azure Spring Cloud 抽象了基础设施管理和 Spring Cloud 中间件管理的复杂性,因此您可以专注于构建业务逻辑,并让 Azure 处理动态扩展、修补程序、安全、合规性和高可用性。只需几个步骤,您就可以预配 Azure Spring Cloud、创建应用程序、部署和扩展 Spring Boot 应用程序,并在几分钟内开始监控。我们将继续为 Azure Spring Cloud 提供更多开发人员友好型和企业就绪型功能。

我们希望了解您如何使用 Azure Spring Cloud 构建有影响力的解决方案。立即开始 - 使用快速入门将 Spring 应用程序部署到 Azure Spring Cloud!

资源

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证来加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部