微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题?
因此在这种框架下,微服务的监控显得尤为重要。本文主要结合Spring Boot Actuator,跟大家一起分享微服务Spring Boot Actuator的常见用法,方便我们在日常中对我们的微服务进行监控治理。
Actuator监控简介
在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源。它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:spring-boot-starter-actuator
。
Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如:
自动化配置信息、创建的Spring beans以及一些环境属性等。
Actuator监控简单应用
在现有的Spring Boot应用中添加以下依赖引入Actuator监控
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
备注:
为了保证actuator暴露的监控接口的安全性,需要添加安全控制的依赖spring-boot-start-security依赖,访问应用监控端点时,都需要输入验证信息。Security依赖,可以选择不加,不进行安全管理,但不建议这么做。
1,不加Security依赖访问:
2,加了Security依赖访问:
3,配置监控账号密码:
注意:management,endpoints等配置有些已经弃用了,使用的时候参考最近文档
通过增加该依赖之后,重新启动应用。此时,我们可以在控制台中看到控制台输出会出现:
上图显示了一批端点定义,这些端点并非我们自己在程序中创建,而是由spring-boot-starter-actuator
模块根据应用依赖和配置自动创建出来的监控和管理端点。通过这些端点,我们可以实时的获取应用的各项监控指标,比如:访问/health
端点,我们可以获得如下返回的应用健康信息:
4,其他端点
但是这样监控也有一些问题:
第一,所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的Json信息不方便运营人员理解;
第二,如果Spring Boot应用集群非常大,每个应用都需要调用不同的接口来查看监控信息,操作非常繁琐低效。
在这样的背景下,就诞生了另外一个开源软件:Spring Boot Admin。
参考来源:
http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html