参考资料:
【spring boot Admin 官方文档
https://codecentric.github.io/spring-boot-admin/2.1.6/】【spring 官方文档
https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#production-ready】
【Actuator 官方文档
https://docs.spring.io/spring-boot/docs/current/actuator-api/html/#overview-timestamps】
【SBA Github
https://github.com/codecentric/spring-boot-admin】
版本:Spring Boot Admin 2.1.6
Spring Boot 2.1.5.RELEASE
Spring Boot Actuator - Production-ready features
Spring Boot includes a number of additional features to help you monitor and manage your application when you push it to production.
You can choose to manage and monitor your application by using HTTP endpoints or with JMX.
Auditing, health, and metrics gathering can also be automatically applied to your application.
spring 官方的说法
Spring Boot Actuator 是为生产准备的特性。可以通过 HTTP 端点,或者JMX 来监控和管理 Spring Boot 应用。
Spring Boot Actuator 提供了:审计,健康,指标运行状况等信息,并且还提供了扩展能力,能够自定义监控信息。
Spring Boot 应用 引入 Actuator 能力也很简单,只需要引入:spring-boot-starter-actuator 依赖 即可。
版本问题:在 Spring Boot 2.1.5.RELEASE 中,为了安全考虑,Spring Boot Actator 默认只开启了:info,health 功能。其他的需要手动进行开启。
Spring Boot Actuator 常见的监控能力
| ID | 功能介绍 |
|---|---|
| beans | 显示 Spring 上下文中注册 Bean |
| env | 显示环境变量信息 |
| health | 应用健康信息 |
| httptrace | http请求监控数据 |
| info | 自定义应用信息 |
| mappings | 显示所有的 @RequestMapping 路径信息 |
| scheduledtasks | 应用中的调度任务 |
| shutdown | 应用优雅停机 |
表格中列举了 spring-Boot-Actuator
提供的一些常见应用监控能力及对应的请求 URL。更多内容,参考官方文档。
下面通过 URL 请求 API
来看看个别监控信息的数据显示
通过查看官方文档,或者请求
http://{ip}:{port}/actuatror
获取相关监测 API,URL 列表。
- 1、请求 /actuator/env
获取当前 Spring Boot 应用的环境变量信息

针对 Spring Boot 应用中不同的环境变量进行区分展示,如:系统环境、servlet 上下文环境等。
- 2、请求 /actuator/beans
获取当前 Spring Boot 应用 IOC 容器中的 Bean信息

列举了 Spring Boot 应用中,对应的 IOC 容器中的 Bean 信息,譬如:别名(aliases)、生命周期(scope)等 Bean 信息。
- 3、请求 /actuator/httptrace
获取当前 Spring Boot 应用 HTTP 请求监测数据

针对每次 HTTP 请求进行数据记录:包括但不限于:请求时间、请求头等信息、请求 URL、响应信息等。
更多内容,参考官方文档
图形化界面:Spring Boot Admin
官网对 Spring Boot Admin 给出了说明
The UI is just a Vue.js application on top of the Spring Boot Actuator endpoints.
在提供有 Actuator 能力的 Spring Boot 应用,通过 HTTP 请求的方式,能够获取到 Spring Boot 应用相关的监测数据。但监测数据都是以 JSON 文本的格式进行展示,不利于阅读分析,且当应用存在多实例时,进行数据分析更困难。于是出现针对 Actuator 的图形化管理界面 Spring Boot Admin
Spring Boot Admin 相关UI 界面展示
- Security 安全登录
通过引入:
spring-security
实现Spring Boot Admin
后台的安全校验

- 监控应用列表
展示当前监测的应用列表

- 监控应用面板
展示当前监测应用的图形数据

- 应用事件变更日志
Spring Boot Admin 请求相关应用
/actuator/*
监测数据的日志数据

- 应用详细监控信息
单个应用实例的相关监测数据
info、health 信息

应用进程进程、线程、堆栈内存监控信息

实时日志打印

Http 请求监控

更多内容,查看官网。
Spring Boot Admin 存在的意义:对 Spring Boot Actuator 文本监测数据进行图形化。
构建一个简单的 Spring Boot Admin 应用
Spring Boot Admin 支持两种应用监控方式:
服务注册方式进行应用监控
通过SBA client 端 进行监控信息上报
演示:Eureka 服务注册方式实现应用监控( 更多介绍,参考 Spring Boot Admin 官方网站)
服务介绍
| 服务名称 | 端口号 | 作用 |
|---|---|---|
| feign-register | 1111 | 服务注册中心 |
| feign-SBA-server | 9999 | Spring Boot Admin 服务端 |
| feign-consumer | 9527 | 被监控服务 |
忽略注册中心(feign-register) 和 被监控服务(feign-consumer) 细节,只关注 监控配置详情
构建 Spring Boot Admin 服务端
1、依赖
A、Spring Boot Admin Server 依赖

B、Eureka Client 依赖

C、Security 依赖

2、application.properties 配置
A、Security 配置

B、Eureka 注册配置

客户端配置
1、引入 spring-boot-starter-actuator
依赖
2、application.properties 配置
A、开放 /actuator
访问端口

B、Eureka 注册

Spring Boot Admin 相关定制化
1、定制化 actuator
Url 访问前缀
主要配置:

关联的 eureka
配置修改:修改健康检查 Url 配置

2、定制化 actuator
访问端口 port
主要配置:

关联的 eureka
配置修改:健康检查 和 访问端口

3、Spring Boot Admin Server 定制化 logo
A、resource 目录下:创建:META-INF/spring-boot-admin-server-ui/img
目录
B、在 META-INF/spring-boot-admin-server-ui/img
中放入:logo 图片 - ui-brand-logo.jpg
C、在 application.properties
中配置

结果展示:

更多定制信息,参考官方文档
Spring Boot Admin 引入项目中,踩过的坑
坑一、Spring Boot Admin Server 启动报错:Calling [asyncError()] is not valid for a request with Async state [MUST_DISPATCH]
原因:Spring Boot Admin 2.1.6 与 Tomcat 9.X 存在冲突
解决:
1、降低 Tomcat 版本

2、使用 netty 作为容器

坑二、项目中存在 context-path
配置时,无法进行正常监控问题
原因:context-path
的增加改变了原有 /actuator
的访问路径
解决
* 1、修改 /actuator
访问端口,与 web 应用区分。
如上面:定制化 /actuator
访问端口
* 2、直接修改 Spring Boot Admin 的监控请求路径
配置如下:(全部配置)

-- END --

长按二维码 ▲
关注 [ WTF名字好难取 ] 公众号
往期回顾





