使用Actuator监控Spring Boot应用
我们都知道Spring Boot是一个用于快速开发Java Web的框架,不需要太多的配置即可使用Spring的大量功能。Spring Boot遵循着“约定大于配置”的原则,许多功能使用默认的配置即可。这样的做法好处在于我们不需要像使用Spring那样编写一大堆的XML配置代码,但过于简单的配置过程会让我们在了解各种依赖,配置之间的关系过程上带来一些困难。不过没关系,在Spring Boot中,我们可以使用Actuator来监控应用,Actuator提供了一系列的RESTful API让我们可以更为细致的了解各种信息。
1.引入Actuator
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.配置Actuator
server:
port: 80
management:
endpoints:
web:
base-path: /monitor #actuator的访问路径
exposure:
include: "*"
endpoint:
health:
show-details: always
shutdown:
enabled: true
配置中关闭了安全认证的功能,如果需要开启这个功能的话还需引入spring-boot-starter-security依赖。除了使用Spring Security来开启监控路径安全认证外,还可以使用Shiro对监控路径进行权限控制。
监控的端口和应用一致,配置context-path为/monitor,这样可以避免和自己应用的路径映射地址重复。
endpoints.shutdown.enabled: true提供了使用post请求来关闭Spring Boot应用的功能。
3.Actuator接口列表
官方文档:Spring Boot Actuator
Actuator提供了X个接口,可以分为三大类:配置接口、度量接口和其它接口,具体如下,访问http://localhost/monitor 查看。
4.接口使用示例
参照3中链接查看监控信息。
5.定制Actuator
5.1 修改接口ID
每个Actuator接口都有一个ID用来决定接口的路径,比方说,/beans接口的默认ID就是beans。比如要修改/beans为 /instances,则设置如下:
endpoints:
beans:
id: instances
5.2 启用和禁用接口
虽然Actuator的接口都很有用,但你不一定需要全部这些接口。默认情况下,所有接口(除了/shutdown)都启用。比如要禁用 /metrics 接口,则可以设置如下:
endpoints:
metrics:
enabled: false
如果你只想打开一两个接口,那就先禁用全部接口,然后启用那几个你要的,这样更方便。
endpoints:
enabled: false
metrics:
enabled: true