Springboot actuator是一个追踪各种springboot应用状态的健康检查机制,使用需要添加一个pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
在启动springboot中,我们往往会看到这样的一条日志 Exposing 20 endpoint(s) beneath base path '/actuator'
这个20是每一个springboot应用程序的健康检查点的个数,他是随着你配置文件中的配置而不同的。
由于本人配置的Server信息如下
server: port: 8001 servlet: context-path: /api-u
所以当我们访问actuator Web信息的路径如下
http://127.0.0.1:8001/api-u/actuator
这里需要注意的是,如果我们配置了oauth 2的资源访问权限的时候,需要对该路径放行
@EnableResourceServer @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true,securedEnabled = true) public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { http.csrf().disable().exceptionHandling() .authenticationEntryPoint( (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED)) .and().authorizeRequests().antMatchers(PermitAllUrl.permitAllUrl("/users-anon/**", "/sys/login","/actuator/**")).permitAll() //此处添加"/actuator/**"进行放行 .anyRequest().authenticated().and().httpBasic(); } @Override public void configure(ResourceServerSecurityConfigurer resource) throws Exception { //这里把自定义异常加进去 resource.authenticationEntryPoint(new AuthExceptionEntryPoint()) .accessDeniedHandler(new CustomAccessDeniedHandler()); } @Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } }
在配置文件中做如下配置
management: endpoint: health: show-details: always
此时我们访问http://127.0.0.1:8001/api-u/actuator的结果如下
具体大家可以参考这个官网说明 https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/中的
https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#production-ready-endpoints-enabling-endpoints以及 https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#_auto_configured_healthindicators
其中的http://127.0.0.1:8001/api-u/actuator/health就是我们需要的健康检查的具体信息
这里为该进程spring支持的各种服务的健康状态,UP为在线,DOWN为下线状态,UNKNOWN为不知道。
除了http://127.0.0.1:8001/api-u/actuator/health之外还有一个http://127.0.0.1:8001/api-u/actuator/info
这是一个描述信息的说明,如果我们在配置文件中做如下配置
info: app-name: user author: guanjian email: 12345@xy.com
则可以在http://127.0.0.1:8001/api-u/actuator/info的返回信息中看到
但是我们在以上配置中可以看到的信息很少,需要激活所有的actuator端点,增加配置如下
management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always
此时再次访问http://127.0.0.1:8001/api-u/actuator的结果如下
现在来挑几个做一下说明 http://127.0.0.1:8001/api-u/actuator/configprops 查看所有的配置信息(当然密码会隐藏) 片段
http://127.0.0.1:8001/api-u/actuator/metrics 查看某些指标的具体数值,比如JVM,tomcat等等
比方说我们要查看JVM的最大内存,访问 http://127.0.0.1:8001/api-u/actuator/metrics/jvm.memory.max
http://127.0.0.1:8001/api-u/actuator/metrics/jvm.memory.used JVM已经使用的内存
http://127.0.0.1:8001/api-u/actuator/beans 查看spring中注入的所有bean
部分片段
如果我们不想激活所有的端点,只激活部分端点,比如configprops,metrics,beans,health,info,配置如下
management: endpoints: web: exposure: include: "configprops,metrics,beans,health,info" endpoint: health: show-details: always
访问http://127.0.0.1:8001/api-u/actuator结果如下