SpringBootAdmin 学习探究
SpringBootAdmin 是一个监控工具,旨在以良好且易于访问的方式可视化 Spring Boot Actuators 提供的信息
概念说明
SpringBootAdmin 是基于 spring-boot-actuator 实现的。spring-boot-actuator 负责基础的监控统计,
SpringBootAdmin 负责传输和展示监控统计结果。
SpringBootAdmin 分为客户端和服务端:spring-boot-admin-server 和 spring-boot-admin-client。
spring-boot-admin-server 是一个完整的项目,可以统管多个 spring-boot-admin-client,有完整的管理页面,
登录部分需要 spring-boot-security 实现,且需要手动引入和配置相关认证信息。
spring-boot-admin-client 只是一个内嵌在业务系统中的组件,它负责连接注册到 spring-boot-admin-server,
使得 spring-boot-admin-server 可以看到业务系统的监控统计。它只是负责注册连接 spring-boot-admin-server,
真正的监控统计需要 spring-boot-admin-server 反向调用业务系统的 spring-boot-actuator 相关接口,
且 spring-boot-actuator 的接口必须是免登录状态,不然 spring-boot-admin-server 展示的页面为空状态。
spring-boot-admin-server 和 spring-boot-admin-client 也可以同时集成在一个业务系统中,只要把两端的配置整合即可。
注意:SpringBootAdmin 只是 Spring 的第三方库,而其依赖的 spring-boot-actuator 是官方库
配置 spring-boot-admin-server
maven 依赖配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<!-- 基础Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring-boot-admin-server 依赖 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<!-- 登录部分需要 spring-boot-security 实现 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>spring 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23server:
port: 8000
spring:
application:
name: spring-admin
# SpringBootAdmin 的原理是 先启动 SpringBootAdminServer 使用上面的 ${server.port:8000} 端口
# 浏览器可以访问 http://localhost:8000 访问登录 SpringBootAdminServer
# SpringBootAdminServer 是一个被动等待 SpringBootAdminClient 的连接
# SpringBootAdminClient 需要配置 http://localhost:8000 注册地址和 admin:admin 的账号信息
boot:
admin:
# 改变 SpringBootAdminServer 的注册地址
# SpringBootAdminClient 配置的注册地址也要跟着修改
context-path: /
# SpringBootAdminServer 的登录认证要结合 SpringSecurity 一起使用
# 要在Java代码 SecurityConfig 中
# 配置 SpringBootAdminServer 的相关资源连接免登录如 /assets/**
# 配置 SpringBootAdminServer 认证相关页面 /login /logout
security:
user:
name: admin
password: adminJava配置登录认证
1 |
|
配置 spring-boot-admin-client
- maven 依赖配置
1
2
3
4
5
6
7<!-- spring-boot-admin-client (内部已经包含了 spring-boot-actuator ) -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<!-- ... 其他业务系统依赖 --> - spring 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50spring:
application:
name: spring-app
boot:
admin:
# SpringBootAdmin 监控的原理是先启动一个 SpringBootAdminServer 暴露地址 http://127.0.0.1:8000/admin
# 然后 由 SpringBootAdminClient 向 SpringBootAdminServer 登录并注册服务
client:
enabled: true
# SpringBootAdminServer 的用户名和密码
username: admin
password: admin
# 连接SpringBootAdminServer的地址
# 但是注册成功后,展示监控内容时,SpringBootAdminServer 会反向请求本服务的 /actuator 接口
# 所以 /actuator 的接口应该是免登录的,否则注册成功后 SpringBootAdminServer 展示的监控内容为空
url: http://127.0.0.1:8000/admin
instance:
# 向 SpringBootAdminServer 注册的服务名称
name: ${spring.application.name}
prefer-ip: true
service-host-type: IP
# 提供详细信息,可以在 SpringBootAdminServer 中看得到
info:
# app 是一个字典,内部的 key 可以随意定义
app:
name: app-info
version: 1.0
test: test
# 随意的 Key 值
scwang: name
# spring-boot-actuator 的配置信息
management:
info:
env:
enabled: true
endpoint:
loggers:
enabled: true
health:
show-details: always
endpoints:
enabled-by-default: true
web:
# spring-boot-actuator 监控接口前缀
base-path: /actuator
exposure:
include: '*'
client 和 server 单实例部署
经过试验验证,他们是可以混合在一起部署的,把 client 和 server 的配置混合在一起再微调就行
- spring 配置调整
配置只给出了特别要修改的部分
1 | server: |
- Java 代码调整
如果业务系统使用的认证框架不是 spring-boot-security,则需要另作修改,这里也无法给出配置代码
- 本文作者:scwang90
- 本文链接:https://blog.scwang90.cn/2024/07/11/spring-boot-admin-study/index.html
- 版权声明:本分享所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!