美文网首页前后端知识交流分享Spring Cloud
Spring Boot Admin 2.0 监控Spring C

Spring Boot Admin 2.0 监控Spring C

作者: AaronSimon | 来源:发表于2018-08-27 20:47 被阅读60次

    一、简介

    Spring Boot Admin 在Spring Boot Actuator 的基础上提供简介的可视化WEB UI,用来管理Spring Boot应用程序的一个简单的界面,提供如下的功能:

    • 显示 name/id 和版本号
    • 显示在线状态
    • Logging 日志级别管理
    • JMX beans 管理
    • Threads 会话和线程管理
    • Trace 应用请求跟踪
    • 应用运行参数信息,如:
      • Java 系统属性
      • Java 环境变量属性
      • 内存信息
      • Spring 环境属性

    本文将以Spring Boot Admin 2.0 与 Eureka整合展示Spring Boot Admin 2.0 的使用。
    下面我介绍一下使用到的相关应用:

    服务 端口 服务说明
    eureka-server 8100 服务注册与发现中心
    config-server 8101 配置中心
    codedict 8102 代码字典微服务(监控客户端)
    admin 8103 spring boot admin监控服务(监控服务端)

    这里我主要讲解spring boot admin服务端与客户端的搭建,服务注册发现和配置中心的搭建不再做赘述。

    二、Spring Boot Admin服务端搭建

    1. 添加相关依赖
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
                <version>2.0.2</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <!--JMX-bean 管理-->
            <dependency>
                <groupId>org.jolokia</groupId>
                <artifactId>jolokia-core</artifactId>
            </dependency>
    
    1. 启动类
    @EnableAdminServer
    @EnableEurekaClient
    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
    public class AdminCustomApplication extends SpringBootServletInitializer {
      @Override
      protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AdminCustomApplication.class);
      }
    
      public static void main(String[] args) {
        SpringApplication.run(AdminCustomApplication.class, args);
      }
    }
    
    1. 安全控制
    @Profile("secure")
    @Configuration
    public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
      private final String adminContextPath;
    
      public SecuritySecureConfig(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();
      }
    }
    

    这里为Spring Boot Admin配置了登录控制。

    1. 配置文件
    #服务名
    spring.application.name=admin
    spring.cloud.config.profile=dev2
    #配置上下文路径
    server.servlet.context-path=/admin
    #注册中心
    eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka
    
    #为监控端点加前缀,这样才可以收集到监控信息
    #eureka.instance.metadata-map.management.context-path=/admin/actuator
    #eureka.instance.health-check-url=http://localhost:${server.port}/admin/actuator/health
    #eureka.instance.status-page-url=http://localhost:${server.port}/admin/actuator/info
    #eureka.instance.home-page-url=http://localhost:${server.port}
    eureka.instance.lease-renewal-interval-in-seconds=10
    eureka.instance.health-check-url-path=/admin/actuator/health
    eureka.client.registry-fetch-interval-seconds=5
    
    eureka.instance.metadata-map.user.name=user
    eureka.instance.metadata-map.user.password=password
    
    #暴露actuator的所有端点
    management.endpoints.web.exposure.include=*
    #health endpoint是否必须显示全部细节。默认情况下, /actuator/health 是公开的,并且不显示细节
    management.endpoint.health.show-details=always
    
    #配置登录名,密码和安全策略
    spring.profiles.active=secure
    spring.security.user.name=user
    spring.security.user.password=password
    
    #通过服务连接配置中心
    #spring.cloud.config.discovery.enabled=true
    #spring.cloud.config.discovery.serviceId=config-server
    spring.cloud.config.uri = http://localhost:8080/config-server
    #配置文件获取失败快速返回
    spring.cloud.config.failFast=true
    
    spring.jmx.default-domain=admin
    
    
    1. 启动admin服务


      登录界面登录界面
      主界面主界面

    三、Spring Boot Admin 客户端

    1. 添加依赖
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    
    1. 配置文件
    #服务名
    spring.application.name=codedict
    spring.cloud.config.profile=dev2
    #配置上下文路径
    server.servlet.context-path=/codedict
    #注册中心
    eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka
    
    #为监控端点加前缀,这样才可以收集到监控信息
    eureka.instance.metadata-map.management.context-path=/codedict/actuator
    eureka.instance.health-check-url=http://localhost:${server.port}/codedict/actuator/health
    eureka.instance.status-page-url=http://localhost:${server.port}/codedict/actuator/info
    eureka.instance.home-page-url=http://localhost:${server.port}
    
    #Actuator 在 spring boot 2.0 版本后,只暴露了两个端点,下面开启所有端点
    management.endpoint.health.show-details=always
    management.endpoints.web.exposure.include=*
    
    #通过服务连接配置中心
    #spring.cloud.config.discovery.enabled=true
    #spring.cloud.config.discovery.serviceId=config-server
    spring.cloud.config.uri = http://localhost:8080/config-server
    #配置文件获取失败快速返回
    spring.cloud.config.failFast=true
    

    这里只展示与本节内容相关的配置。

    1. 查看监控信息


      服务上线服务上线
      监控信息监控信息
      监控信息监控信息

    其它详细信息可以参考官网

    相关文章

      网友评论

        本文标题:Spring Boot Admin 2.0 监控Spring C

        本文链接:https://www.haomeiwen.com/subject/orctwftx.html