概述
- 引入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