监控和管理Spring Boot应用程序
Spring Boot 执行器
用于监视和管理应用程序,并获取正在运行的应用程序的各种信息的功能。
当设备处于可使用动作装置的状态时,将公开用于访问各种信息的端点。
终点
-
- actuator
-
- Spring Boot Actuatorによって公開されているすべてのエンドポイントを確認する。
-
- actuator/health
-
- 正常に起動しているかを確認する。
-
- actuator/env
-
- アプリケーションによって使用されているプロファイル および 環境変数を確認することができる。
-
- actuator/beans
-
- アプリケーション内で管理されているBeanの一覧を確認する。
-
- actuator/mappings
-
- RequestMappingで指定したパスのリストを確認できる。
-
- その他エンドポイント
- https://spring.pleiades.io/spring-boot/docs/current/reference/html/actuator.html
利用法
基本上,只需使用spring-boot-starter-actuator作为依赖关系,就可以使用它。
然而,默认情况下,只有/actuator/health端点是公开的,因此需要在application.properties文件中指定要检查的端点。
management.endpoints.web.exposure.include=*
为了限制在Spring Boot Actuator中使用的用户,通常也会使用Spring Security来实现。
可以设置只有管理员可以访问Actuator等功能。
@Configrationをクラスに付与すると、@Beanで指定したメソッドのBeanの戻り値が、Springコンテナ上で登録・管理される。
※Springコンテナで管理されるBeanとして、@Beanメソッドを宣言する場合は、@Configrationをクラスに付与する。
@EnableWebSecurityをクラスに指定することで、SpringSecurityを使えるようにする。
SecurityFilterChainを戻り値とするメソッドに@Beanを付与し、Springコンテナに登録する。
HttpSecurityによって、認証画面 および 許可の条件を指定することができる。
WebSecurityCustomizerを戻り値とするメソッドに@Beanを付与する。認証を不要とする例外のパスを定義したりすることができる。
InMemoryUserDetailsManagerを戻り値とするメソッドに@Beanを付与する。Spring Boot Actuatorを使用できるユーザを定義。
@Configuration
@EnableWebSecurity
public class ActuatorSecurity {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/","/items","/items/**").permitAll() //APIは認証不要
.requestMatchers("/actuator/**").hasRole("ADMIN") //ActuatorはADMINロールユーザのみ
.anyRequest().denyAll()
)
.formLogin();
return http.build();
}
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().requestMatchers("/actuator/health");
}
//actuatorの認証ユーザ
@Bean
public InMemoryUserDetailsManager userDetailsService() {
UserDetails user = User.withUsername("admin")
.password("{noop}admin")
.roles("ADMIN")
.build();
return new InMemoryUserDetailsManager(user);
}
}
参考实操