Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的模块。它提供了许多生产就绪的功能,如健康检查、指标收集、环境信息、日志级别管理等。Actuator 通过一组端点(endpoints)暴露这些功能,这些端点可以通过 HTTP 或 JMX 访问。
Actuator Endpoints: 这些是 Actuator 提供的各种功能接口,例如 /health
用于检查应用的健康状况,/metrics
用于收集应用的运行指标。
Security: 默认情况下,Actuator 端点是安全的,需要适当的权限才能访问。
Custom Endpoints: 开发者可以创建自定义端点来暴露应用程序特定的信息。
/health
, /info
, /metrics
等。以下是一个简单的 Spring Boot 应用程序,启用 Actuator 并添加一个自定义端点的示例:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
@SpringBootApplication
public class ActuatorDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ActuatorDemoApplication.class, args);
}
@Endpoint(id = "custom")
public static class CustomEndpoint {
@ReadOperation
public String customEndpoint() {
return "Hello from Custom Endpoint!";
}
}
}
在 application.properties
中启用所有端点(生产环境中应谨慎使用):
management.endpoints.web.exposure.include=*
问题: 访问 Actuator 端点时返回 401 Unauthorized。
原因: 默认情况下,Actuator 端点受到 Spring Security 的保护。
解决方法: 配置 Spring Security 允许访问 Actuator 端点。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers("/actuator/**").permitAll() // 允许访问 Actuator 端点
.anyRequest().authenticated();
}
}
通过以上配置,可以确保 Actuator 端点可以被无授权访问,但请注意在生产环境中应适当限制访问权限以保证安全性。
对于需要监控和管理 Spring Boot 应用程序的场景,可以考虑使用 Tencent Cloud Monitor 来实现更全面的监控和告警功能。