Spring-Boot:Admin


概述

  • 引入Spring Boot Admin
  • Securing the Admin Server

引入Spring Boot Admin

1. 认识

  • Actuator提供了很多端点可以查看应用的运行信息,即公开了REST API,但是调用时返回的是json数据,如果有一个专门的UI界面来展示这些数据可以更容易查看
  • Spring Boot Admin是一种前端web应用,通过它可以更简单使用Actuator端点并且提供了UI界面的展示
  • Spring Boot Admin分为serverclient,其中Admin Server负责收集并展示Actuator的数据,而client即为其他应用(需要将其注册为Admin Client)

2. 开始

  • 依赖: ** **(Admin Server)一般情况Spring Boot Admin会作为单独的一个应用,因此可以直接创建项目时通过Spring Boot Initializr添加,或者在pom.xml直接添加Maven依赖

    <dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-server</artifactId>
    </dependency>
  • *启用: * 添加完依赖之后需要在启动类使用@EnableAdminServer注解启用,这样应用启动时才会启用

    @SpringBootApplication
    @EnableAdminServer
    public class AdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(AdminApplication.class, args);
        }
    }
  • *注册: * 打开链接http://localhost:9999/可以发现application为0,此时需要将应用注册到Admin Server才可以

3. 注册Admin client

3.1 注册方式
  • 有了Admin Server但是没有将应用作为Admin client注册进去,因此需要注册,有两种实现方式

    • *方式一: * 每个应用显示注册到Admin Server

    • *方式二: * Admin Server通过Eureka service registry(Eureka服务注册中心)发现其他应用(将admin server作为Eureka Client注册到Eureka Server registry中去,然后就会自动发现其他的应用)

  • *方式一: *每个应用作为显示的Admin Client注册到Admin Server

    • 作为Admin Client的应用添加admin-starter-client依赖

              <dependency>
                  <groupId>de.codecentric</groupId>
                  <artifactId>spring-boot-admin-starter-client</artifactId>
              </dependency>
    • application.yml中配置Admin Client将自己注册到Admin Server中去

      spring:
        boot:
          admin:
            client:
              url: http://localhost:9999
  • *方式二: *Admin Server通过Eureka service registry发现其他应用(将admin server作为Eureka Client注册到Eureka Server registry中去,然后就会自动发现其他的应用)

    • Admin Server中引入eureka-client依赖

      • 依赖

        <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
      • eureka-client是基于spring cloud的,如果不是spring cloud项目则需要添加额外配置spring cloud

            <properties>
                <java.version>11</java.version>
                <spring-boot-admin.version>2.3.0</spring-boot-admin.version>
                <spring-cloud.version>Hoxton.SR8</spring-cloud.version> <!--配置spring cloud-->
            </properties>
        
        
      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>de.codecentric</groupId>
                  <artifactId>spring-boot-admin-dependencies</artifactId>
                  <version>${spring-boot-admin.version}</version>
                  <type>pom</type>
                  <scope>import</scope>
              </dependency>
              <dependency>  <!--配置spring cloud-->
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-dependencies</artifactId>
                  <version>${spring-cloud.version}</version>
                  <type>pom</type>
                  <scope>import</scope>
              </dependency>
          </dependencies>
      </dependencyManagement>
  ~~~
  • Admin server中配置Eureka server地址

    spring:
      application:
        name: admin-server
    eureka: #默认eureka server 地址为localhost,如果本地测试可以不配置
      instance:
        hostname: localhost
      client:
        service-url: 
          defaultZone: http://${eureka.instance.hostname}:8761/eureka
  • 默认情况下Admin server会将自己注册为一个Eureka服务,可以通过配置禁止

    eureka:
     client:
      register-with-eureka: false

3.使用Admin server

  • 注册完成之后启动Admin server,通过地址(如: http://localhost:9999) 进入UI界面,可以查询或设置各个应用的详细信息

Securing the Admin Server

1. Admin server增加登录认证

  • 由于Admin Server是基于Spring boot的,因此可以直接引入Spring Boot Security来增加登录验证

    • 引入Spring Boot Security依赖

      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
    • 配置登录帐号密码

      spring:
        security:
          user:
            name: admin
            password: 53cr3t

2.Actuator认证处理

  • 由于Actuator可能配置了Security的认证HTTP Basic authentication,(对于不同的请求端点,有不同的权限认证),因此Admin server获取Actuator信息时需要携带认证信息

  • *情况一: * 对于应用(Admin client)自己注册到Admin server的情况,只需要在admin client中配置认证信息即可,职业应用注册到Admin server中时会携带认证信息一起注册

    spring:
      boot:
        admin:
          client:
            url: http://localhost:9090
            instance:
              metadata:
                user.name: ${spring.security.user.name}
                user.password: ${spring.security.user.password}
  • *情况二: * 对于Admin server通过Eureka服务中心发现其他应用的情况,需要对其他应用配置,使其注册到Eureka服务注册中心时就携带认证信息,这样Admin serverEureka服务注册中心即可获取到认证信息

    eureka:
      instance:
        metadata-map:
          user.name: admin
          user.password: password

文章作者: Bryson
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Bryson !
评论
 上一篇
下一篇 
  目录