使用 Azure Spring Cloud 进行 Bootiful 应用监控

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

这是一篇由微软的朋友 Asir Vedamuthu Selvasingh 撰写的客座博文

您好,Spring 爱好者!我们很高兴地宣布,Application Performance Monitoring (APM) 已通过 Application Insights 完全集成到 Azure Spring Cloud 中。

Azure Spring Cloud 由 Microsoft 和 VMware 共同构建、运营和支持。它是一项完全托管的服务,适用于 Spring Boot 应用程序,让您可以专注于构建业务运行所需的应用程序,而无需处理基础设施管理。

Azure Spring Cloud 中的 APM 提供对 Spring 应用程序的深入性能监控,无需任何代码更改、重新编译、重新测试或重新部署。Azure Spring Cloud 上的 APM 无缝集成,您可以开箱即用地获取应用程序的洞察。您无需做任何事情——只需部署您的应用程序,监控数据就会开始流动。应用程序监控能为您带来的好处是:

  • 通过分布式跟踪,深入了解所有应用程序,包括请求从源到目标的运行路径,以及了解运行正常的应用程序和存在瓶颈的应用程序。
  • 在调用路径的上下文中提供日志、异常和指标,提供有意义的洞察和可操作的信息,以加快根本原因分析。
  • 深入了解应用程序依赖项——SQL Database、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来说明这一点。导航到 Application Map 窗格,您可以在其中看到微服务的令人惊叹的整体视图,显示运行正常的应用程序(绿色)和存在瓶颈的应用程序(红色)[图 1]。开发人员可以轻松识别应用程序中的问题,并快速进行故障排除和修复。

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

导航到 Performance 窗格,您可以在其中查看应用程序公开的操作的响应时间和请求计数 [图 2]。

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

导航到 Performance 窗格中的 Dependencies 选项卡,您可以在其中查看所有依赖项及其响应时间和请求计数 [图 3]。

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

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

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

导航到 Failures 窗格中的 Exceptions 选项卡,查看应用程序抛出的异常集合 [图 5]。

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

只需选择一个异常并深入查看,即可获得有意义的洞察和可操作的堆栈跟踪 [图 6]。

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

导航到 Metrics 窗格,查看 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 中应用程序的可用性。这是一项定期测试,用于监控应用程序在全球任何位置的可用性和响应能力。如果您的应用程序没有响应或响应缓慢,它可以主动向您发出警报。下图显示了北美各地——西 US、South Central、Central US 和 East US 的可用性测试 [图 9]。

图 9 – 应用程序端点随时间的可用性

导航到 Live Metrics 窗格,您可以在其中几乎实时地看到实时指标,仅需一秒钟 [图 10]。

图 10 – 实时指标

Application Insights Java 代理基于OpenTelemetry 自动检测工作,Microsoft 在其中与 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 社区所有即将举行的活动。

查看所有