zoukankan      html  css  js  c++  java
  • Spring Boot (28) actuator与spring-boot-admin

    在上一篇中,通过restful api的方式查看信息过于繁琐,也不直观,效率低下。当服务过多的时候看起来就过于麻烦,每个服务都需要调用不同的接口来查看监控信息。

    SBA

      SBA全称spring boot admin 是一个管理和监控spring boot 应用程序的开源项目,分为admin-server与admin-client两个组件,admin-server通过采集actuator端点数据,显示在spring -boot-admin-ui上,已知的端点几乎都有进行采集,通过spring-boot-admin可以动态切换日志级别、导出日志、导出heapdump、监控各项指标 等等

    spring boot admin在对单一服务监控的同时也提供了集群监控方案,支持通过eureka、consul、zookeeper等注册中心的方式实现多服务监控与管理

    导入依赖

      在pom.xml中添加对spring-boot-admin的相关依赖

    <!-- 服务端:带UI界面 -->
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
                <version>2.0.0</version>
            </dependency>
            <!-- 客户端包 -->
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-client</artifactId>
                <version>2.0.0</version>
            </dependency>
            <!-- 安全认证 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <!-- 端点 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!-- 在管理界面中与 JMX-beans 进行交互所需要被依赖的 JAR -->
            <dependency>
                <groupId>org.jolokia</groupId>
                <artifactId>jolokia-core</artifactId>
            </dependency>

    如果想访问info的信息需要如下配置

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>build-info</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    属性配置

      在application.yml中配置actuator的相关配置,其中info开头的属性,就是访问info端点中显示的相关内容,值得注意的十spring boot2.x中,默认只开放了info、health两个端点,剩余的需要自己通过配置management.endpoints.web.exposure.include属性来加载,这个management.endpoints.web.base-path属性比较重要,因为spring boot2.x后每个端点默认的路径是/actuator/endpointId这样依赖spring boot admin是无法正常采集的

    application.yml

    spring:
      profiles:
        active: prod #指定读取哪个文件
      boot:
        admin:
          client:
            url: http://localhost:8088
            instance:
              prefer-ip: true
    
    info:
      head: head
      body: body
    management:
      endpoints:
        web:
          exposure:
            #加载所有的端点,默认只加载了info、health
            include: '*'
          #不配置SBA 扫描不到
          base-path: /
      endpoint:
        health:
          show-details: always
        #可以关闭指定的端点
        shutdown:
          enabled: false

    application-dev.yml 空的

    application-prod.yml

    server:
      port: 8088
      servlet:
        context-path: /
    
    spring:
      boot:
        admin:
          client:
            username: david
            password: 123456
            instance:
              metadata:
                user:
                  name: david
                  password: 123456
      security:
        user:
          name: david
          password: 123456

    在启动方法中增加@EnableAdminServer注解 代表是Server端

    @EnableAdminServer
    @SpringBootApplication
    public class BootApplication{
    
        public static void main(String[] args) {
            SpringApplication.run(BootApplication.class,args);
        }
    
        @Profile("dev")
        @Configuration
        public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter{
            @Override
            protected void configure(HttpSecurity http) throws Exception{
                http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();
            }
        }
    
        @Profile("prod")
        @Configuration
        public static 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();
            }
        }
    }

    测试

    启动项目 访问 http://localhost:8088/login

  • 相关阅读:
    组合数
    POJ2774 Long Long Message
    后缀排序【后缀数组入门题】
    luogu P3205 [HNOI2010]合唱队 区间dp
    luogu P3119 [USACO15JAN]Grass Cownoisseur G 有向图强连通分量+分层最短路
    luogu P3469 [POI2008]BLO-Blockade 割点
    luogu P2569 [SCOI2010]股票交易 单调优化dp
    luogu P2939 [USACO09FEB]Revamping Trails G 分层最短路
    luogu P3957 跳房子 二分+斜率优化dp
    luogu P1772 [ZJOI2006]物流运输 spfa最短路+dp
  • 原文地址:https://www.cnblogs.com/baidawei/p/9183837.html
Copyright © 2011-2022 走看看