Actuator不是其他平台提供的,而是SpringBoot的四大核心之一。引入之后,通过简单的配置就可以监控SpringBoot的一些信息。
引入依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies>
引入依赖之后,就可以监控我们的应用了。
简单的配置
我们这里为了演示方便,我们将所有端点设置为开启状态并且暴露在web端。如果是正式环境不可这样配置,可以结合Spring Security进行认证访问。
management:endpoints:#暴露所有端点信息enabled-by-default:trueweb:exposure:#以web方式暴露include:'*'endpoint:health:show-details:always
查看信息
配置完成之后,就可以直接查看这些端点的信息。
在url后拼接/actuator
即可访问。
我们可以看到,有一个参数是shutdown,顾名思义应该是远程关闭程序的接口。接下来我们试试能不能远程关闭程序。
远程关闭程序
我们直接点击这个url,发送请求。
可以看到这是个Post请求,不能直接在浏览器访问,我们用postman试试。
从响应的信息来看,确实关闭了应用。接下来我们看看我们的应用是不是真的关闭了。
没错,这确实是远程关闭应用的接口,是不是很强大?这如果随意开放出去,被用户利用了那不是gg了,所以再次提醒大家,这些端口万不可随意开放。
保护端点
这些敏感端点必须需要开放,那就得增加安全策略,它可以和 Spring Security结合来保护这些端点。
示例如下:
importorg.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.web.SecurityFilterChain;@Configuration(proxyBeanMethods=false)publicclassMySecurityConfiguration{@BeanpublicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests)->requests.anyRequest().hasRole("ENDPOINT_ADMIN"));http.httpBasic();returnhttp.build();}}
使用这个配置,actuator的所有端点都需要ENDPOINT_ADMIN角色才能访问。
最后
actuator的监控端点有很多,使用方式也是多样的,大家感兴趣的可以直接访问官网来学习如何正确使用。它不仅能监控内存的信息,同时服务集成的数据库的状态也可监控,非常不错的一个监控服务性能的工具,大家快去看看吧。
WangScaler: 一个用心创作的作者。
声明:才疏学浅,如有错误,恳请指正。