微服务架构中多个应用独立部署,集群出现故障的可能性越来越高,给运维人员带来很大的负担,我们一般需要保证大部分模块时刻处于正常运行状态,因为需要有一套自动化的监控运维机制。这个监控运维机制需要不断收集各个微服务应用的健康指标,如环境变量、内存信息、线程池信息。Spring Boot的spring-boot-starter-actuator模块用于SpringBoot项目的健康检查,可以用于检查SpringBoot项目中所依赖的第三方组件及项目模块的运行情况。
工具/原料
IntelliJ IDEA
方法/步骤
1
SpringBoot中引入健康检查模块只需要在pom.xml中添加相应的依赖即可,具体的如下图所示。该模块能够为SpringBoot应用提供一系列用于监控的端点。
2
Spring Cloud在实现各个微服务组件时为服务提供了扩展,/health端点主要提供一些健康检查的信息,我们在请求路径中添加/health便可以查看项目依赖的模块运行状况。如下图所示我们可以看到那些自动提供的端点,这些原生的端点如环境变量env,包括一些环境变量、JVM属性、命令行参数等。
3
除了这些Spring Boot提供的健康检查端点外我们还可以自己创建健康检查,例如在使用Spring Boot中没有封装的组件时,如果需要配置自动化的健康检查,需要自己去实现健康检查的检测器HealthIndicator实现自定义的Indicator,用来扩展HealthEndPoint,如下图所示。我们再一次请求/health便可以查看到自定义的检测器信息。
4
我们除了可以使用HealthEndPoint来添加健康指标外,我们还可以自定义EndPoint节点,使用自定义的节点扩展性更高一些,自定义节点的编写如下图所示。我们请求自定义的节点结果如下图所示。
5
除了上述说的配置类端点和度量指标类端点外,还有操纵控制节点,操纵控制节点需要自己配置endpoints.shutdown.enabled=true来开启。上述配置之后,我们访问/shutdown端点就可以远程关闭应用,访问后的结果,及应用关闭信息如下图所示。
注意事项
1
重写HealthEndPoint来扩展健康检查
2
需要添加spring-boot-starter-actuator模块依赖