开发小技巧之Actuator

562 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

WangScaler: 一个用心创作的作者。

声明:才疏学浅,如有错误,恳请指正。

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: true
    web:
      exposure:
        #以web方式暴露
        include: '*'
  endpoint:
    health:
      show-details: always

查看信息

配置完成之后,就可以直接查看这些端点的信息。

在url后拼接/actuator即可访问。

image-20211018140930291.png

我们可以看到,有一个参数是shutdown,顾名思义应该是远程关闭程序的接口。接下来我们试试能不能远程关闭程序。

远程关闭程序

我们直接点击这个url,发送请求。

image-20211018141117410.png

可以看到这是个Post请求,不能直接在浏览器访问,我们用postman试试。

image-20211018141211746.png

从响应的信息来看,确实关闭了应用。接下来我们看看我们的应用是不是真的关闭了。

image-20211018141313533.png

没错,这确实是远程关闭应用的接口,是不是很强大?这如果随意开放出去,被用户利用了那不是gg了,所以再次提醒大家,这些端口万不可随意开放。

保护端点

这些敏感端点必须需要开放,那就得增加安全策略,它可以和 Spring Security结合来保护这些端点。

示例如下:

import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
​
@Configuration(proxyBeanMethods = false)
public class MySecurityConfiguration {
​
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.requestMatcher(EndpointRequest.toAnyEndpoint())
                .authorizeRequests((requests) -> requests.anyRequest().hasRole("ENDPOINT_ADMIN"));
        http.httpBasic();
        return http.build();
    }
​
}
​
​

使用这个配置,actuator的所有端点都需要ENDPOINT_ADMIN角色才能访问。

最后

actuator的监控端点有很多,使用方式也是多样的,大家感兴趣的可以直接访问官网来学习如何正确使用。它不仅能监控内存的信息,同时服务集成的数据库的状态也可监控,非常不错的一个监控服务性能的工具,大家快去看看吧。

来都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!