监控和管理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);
	}
}

参考实操

 

广告
将在 10 秒后关闭
bannerAds