Spring Boot Admin

一、简介

Spring Boot Adamin 可以将Actuator中的信息进行界面化的展示,也可以监控所有的Spring Boot应用的健康状况,提供实时报警功能,主要的功能点有:

  • 显示应用程序的监控状态
  • 应用程序上下线的监控
  • 查看JVM 线程信息
  • 可视化的查看日志以及下载日志文件
  • 动态切换日志级别
  • Http请求信息跟踪

二、简单使用

1.导入依赖

创建一个spring-boot应用加入下面的依赖

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency> 
       <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.2.3</version>
        </dependency>

2.加入配置

在配置文件中加入如下配置

spring.application.name=spring-boot-admin
server.port=9091

在启动中加入注解  @EnableAdminServer 

启动应用访问localhost:9091就会看到下面的页面

三、和Eureka的整合

1.导入依赖

在 Spring Boot Admin中添加如下依赖

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

2.加入配置

在配置文件中添加下面的配置

eureka.client.serviceUrl.defaultZone=http://xiaoming:123456@localhost:8761/eureka/
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
eureka.instance.status-page-url=http://${spring.cloud.client.ip-address}:${server.port}

这样启动应用后会自动监控已经注册到Eureka上所有的应用,当然他也会把自己注册到Eureka,页面如下

3.监控信息的查看

点击任意一个应用可以看到下面的监控信息

 4.详细监控信息的配置

如果想看更加详细的监控信息加入下面的依赖和配置

		<!--	要在pom文件中加入的依赖-->
             <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
	<!--	要在配置文件中加入的配置-->
management.endpoints.web.exposure.include=*

再次启动应用就会看到下面的界面

5.自定义报警 

当微服务中应该过多的时候我们可以自定义报警,在spring-boot-admin中实现下面的代码:

import de.codecentric.boot.admin.server.domain.entities.Instance;
import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier;
import reactor.core.publisher.Mono;

public class TestWarn extends AbstractStatusChangeNotifier {
    public TestWarn(InstanceRepository repository) {
        super(repository);
    }



    @Override
    protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
        String serviceName = instance.getRegistration().getName();
        String serviceUrl = instance.getRegistration().getServiceUrl();
        String status = instance.getStatusInfo().getStatus();

        System.err.println("报警开始===================");


        return Mono.fromRunnable(()->{
            //这里写要进行的报警操作
            System.err.println("serviceName: "+serviceName);
            System.err.println("serviceUrl: "+serviceUrl);
            System.err.println("status: "+status);
            System.err.println("报警结束===================");
        });
    }
}
import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import de.codecentric.boot.admin.server.config.AdminServerNotifierAutoConfiguration.NotifierTriggerConfiguration;
import de.codecentric.boot.admin.server.config.AdminServerNotifierAutoConfiguration.CompositeNotifierConfiguration;


@Component
@Configuration
@AutoConfigureBefore({NotifierTriggerConfiguration.class, CompositeNotifierConfiguration.class})
public class DingTalkNotifierConfiguration {
    @Bean
    public TestWarn dingTalkNotifier(InstanceRepository repository) {
        return new TestWarn(repository);
    }

}

这样当服务上线或者下线的时候就会发出报警。

6.对Sring Boot Admin进行安全配置

如果说相对spring-boot-admin的监控界面做一个安全的验证可以在spring-boot-admin中实现如下代码

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;

public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecurityPermitAllConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        //静态资源和登录页面可以不用认证
        http.authorizeRequests().antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated().and().formLogin().loginPage(adminContextPath + "/login")
                .successHandler(successHandler).and().logout()
                .logoutUrl(adminContextPath + "/logout").and().httpBasic().and().csrf().disable();
        //启用 HTTP-Basic,用于springBoot Admin Client 注册
    }
}

在配置文件中加入下面的配置

spring.security.user.password=123456
spring.security.user.name=xiaoming

这样再次启动应用后访问 http://localhost:9091/ 时会让你输入用户名和密码,如下图所示

在这个页面中输入你配置文件中配置的用户名和密码即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值