关注我的公众号:【编程朝花夕拾】,可获取首发内容。
01 引言
在现代微服务架构中,应用实例的数量动辄成百上千。传统的逐个登录服务器查看日志、检查状态的方式早已变得低效且不现实。
因此,一个集中化、可视化、且能提供实时健康状态的管理平台变得至关重要。Spring Boot Admin
(SBA) 正是为了满足这一需求而生的强大工具。
然而,各种厂商的云服务提供了各种监控服务解决客户的各种痛点。Spring Boot Admin
这样的工具似乎关注度没有那么高。小编也是无意间发现这款产品,分享给大家。
02 简介

Spring Boot Admin
是一个用于管理和监控 Spring Boot
应用程序的开源社区项目。它并非官方 Spring
项目,但在社区中备受推崇并被广泛使用。
其核心原理是:一个作为"服务器"(Server)的中央管理端,通过收集并展示众多作为"客户端"(Client)的 Spring Boot 应用的监控信息。
Spring Boot Admin
通过集成 Spring Boot Actuator 端点来获取应用数据,并提供了一个友好的 Web UI
界面来展示这些信息。
主要分为两部分:
- 服务端:监控平台
- 客户端:业务端

SpringBoot
的版本和Spring Boot Admin
有一定的对应关系:

GitHub
地址:github.com/codecentric...
文档地址:docs.spring-boot-admin.com/
03 Admin服务端
服务的端配置相当简单,只需要引入依赖,启动增加注解。服务端的基础配置就算完成了。
3.1 基础配置
Maven依赖
xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${latest.version}</version>
</dependency>
增加注解
@EnableAdminServer

这两个配置就可访问项目的IP+端口
,进入管理页面了。

3.2 增加鉴权
为了数据安全,可以增加鉴权。拥有账号和密码方可进入。
Maven依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置文件
properties
# 设置自己的用户名和密码
spring.security.user.name=admin
spring.security.user.password=123456
输入对应的用户名和密码就可以进入了。

3.3 增加邮件推送
官方提供了各种通知,也可以自定义,如图:
我们以邮件通知为例。
Maven依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置
properties
# 邮箱配置
spring.mail.host=smtp.163.com
spring.mail.port=25
spring.mail.username=用户名
spring.mail.password=*****[授权码]
# 发送和接受邮箱
spring.boot.admin.notify.mail.to=wsapplyjob@163.com
spring.boot.admin.notify.mail.from=wsapplyjob@163.com
客户端下线之后会触发邮件:

04 Adamin
客户端
因为服务端是依赖Spring Boot Actuator
端点来获取应用数据,所以我们需要开放期其所有的服务。
4.1 基础配置
Maven依赖
xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${latest.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
properties
# 服务端地址
spring.boot.admin.client.url=http://127.0.0.1:8081
# 鉴权信息
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=123456
# 开发所有的暴漏的信息
management.endpoints.web.exposure.include=*
4.2 监控界面

进入之后,我们就会发现上面的页面。点击应用墙,就会展示所有监控的实例。进入之后如图:

进入之后就可以看到五大块。其中②就是我们之前看到的日志级别的控制。还包含了缓存、计划任务、映射甚至类之间的依赖关系。
因为界面支持中文,里面具体的功能就不做描述,感兴趣的可以自己的探索。
4.3 日志配置增加日志

默认的日志进去只有日志的级别,并不会打印日志。
这是官方的描述:

我们增加配置:
properties
logging.file.name=/var/log/boot-log.log
logging.pattern.file=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx (2)
启动查看结果:

我们就可以看到信的菜单:日志文件
4.4 缓存
【缓存】是没有数据的:

缓存依赖
xml
<!-- 监控缓存需要的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
代码

触发缓存任务之后,就会出现缓存的管理:

4.5 计划任务
【计划任务】和缓存基本一样,但是无需引入第三方依赖。使用@Scheduled
即可。

监控结果:

05 小结
Spring Boot Admin
以其简洁的配置、强大的功能和友好的界面,成为了 Spring Boot
微服务监控领域的事实标准。它极大地降低了监控和运维的复杂度,让开发者能够更专注于业务逻辑开发。
对于中小型规模的微服务集群,直接使用 SBA 是一个高效且成本低廉的解决方案。
赶快去探索里面不同的功能的吧!