概述
- 引入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分为server和client,其中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 server从Eureka服务注册中心即可获取到认证信息eureka: instance: metadata-map: user.name: admin user.password: password