小窥微服务架构Spring Boot的监控与管理 - Go语言中文社区

小窥微服务架构Spring Boot的监控与管理


      学过马克思主义哲学的码友们都知道:事物具有两面性。那么微服务架构带给我们开发便利的同时,也会带来许多复杂的工作,比如对于运维人员来说,随着应用的不断增多,系统集群中出现故障的频率也会越来越高,虽然在高可用机制的保护下,个别故障不会影响系统的对外服务,但是这些频繁出现的故障需要被及时发现和处理才能保证系统处于健康可用的状态。为了能对这些成倍增长的应用做到高效运维,需要实现一套自动化的监控运维机制,而这套机制的运行基础就是要不断的收集各个微服务应用的各项指标情况,并根据这些基础指标信息来制定监控和预警规则。例如最近新冠肺炎的疫情监控,就是能直观的掌握疫情,并指定相应的方案来应对。

而我们使用Spring Boot来作为微服务框架时,除了它强大的快速开发功能之外,它还提供了一个特殊的依赖模块spring-boot-starter-actuator,这个模块能够自动为Spring Boot构建的应用提供一系列用于监控的端点,这些基础的监控,可以大大的减少监控系统在采集应用指标的开发量。

废话不多说,先来写一个Spring Boot的小demo,在pom.xml中加入spring-boot-starter-actuator模块的依赖,然后写一个简单的hello world:

启动应用,会在日志中,看到这些监控的URL的映射:

我们来访问http://localhost:8086/health来看一下返回的信息:

这些指标是模块spring-boot-starter-actuator中自带的,这个模块已经实现了一些原生端点,从作用上来讲,原生端点可以分为三大类:

1、应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。

2、度量指标类:应用程序在运行过程中,用于监控的度量指标,比如内存信息、线程池信息和HTTP请求统计等

3、控制操作类:提供了操作应用的功能,例如对应用的关闭

首先来说一说应用配置类,由于Spring Boot是约定大于配置,也就是Spring Boot为了改善传统Spring应用繁杂的配置内容,采用了包扫描和自动化配置的机制来加载原本集中与XML文件中的各项内容。也就是我们不需要在配置这些繁重但重复的配置工作,Spring Boot已经有了默认的配置,要想掌握和清楚这些配置,就需要借助于端点的应用配置类,这类端点可以帮助我们轻松获取一系列关于Spring应用配置内容的详细报告,比如自动化配置的报告、环境属性的报告等。

----/autoconfig:获取应用的自动化配置报告,该端点可以帮助我们方便的找到一些自动化配置为什么没有生效:

其中positiveMatches返回的是条件匹配成功的自动化配置,negativeMatches返回的条件匹配不成功的自动化配置。

----/beans:获取应用上下文中创建的所有Bean

----/configprops:用来获取应用中配置的属性信息报告

----/env:用来获取应用所有可用的环境属性报告,包括环境变量、JVM属性、应用的配置属性、命令行中的参数。

----/mappings:返回所有Spring MVC的控制器映射关系报告。

----/info:返回一些应用自定义的信息。

当我们在应用中的application.properties中自定义一些配置,再次访问就会显示有信息:

然后说一下这个度量指标类,度量指标类端点提供的报告内容是动态变化的,这些端点提供了应用程序在运行过程中的一些快照信息,这些端点对于我们构建微服务架构中的监控系统非常有帮助。

----/metrics:该端点返回当前应用的各类重要度量指标,比如内存信息、线程信息、垃圾回收信息等。

----/health:用来获取应用的各类健康指标信息。可以根据需求来实现私人定制的采集健康信息的检测器。

----/dump:用来暴露程序运行过程中的线程信息。

----/trace:返回基本的HTTP跟踪信息。

最后说一下操作控制类,对于控制端点,我们来演示一下用来关闭应用的端点:/shutdown,开启该端点需要在应用的配置文件中开启:

由于/shutdown的请求是post请求,我们就用postman来测试:

应用就这样通过控制类的端点,被我们关闭了。以上都是我们引入依赖模块后,原生的一些端点应用,在我们进行Spring Boot结合Spring Cloud开发时,会加入更多的端点和监控指标,今天就小窥一下Spring Boot的监控与管理。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Apeopl/article/details/104303918
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 19:55:36
  • 阅读 ( 1137 )
  • 分类:架构

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢