作者语录:
我们一直在追逐需求和迭代的路上,却不曾回头看自己曾经的作品是否给自己留下经验和遗憾。技术永远没有边界,但个人必须对自己过往的行为买单,无论对与错,终究是个做个复盘。我们一直在被降本增效,我们自己也要考虑增效降本,技术人如何增效,简言之,就是释放自己成就他人。 释放自己,就需要“别人”替你去做事,无论是监控亦或是AI 还有可能是替身,最终的目的都是为了释放自己。何为成就他人?你把事做好了,他人就舒服了。那么现在作为开发者,你也可以去着手自己做独立的事情了-创业or do sth。
Spring Boot 集成 Spring Boot Admin(一)
我们会分几期进行拆分讲解,因为其中的高阶功能和扩展相对知识点很多,安全认证、邮件/短信通知、监控日志、图表分析,结合普罗米修斯 Prometheus和Grafana实现可视化智能服务监控等等。
下面将重新整理 Spring Boot 项目集成 Spring Boot Admin 的简单完整步骤。
1. Spring Boot Admin Server 项目
1.1 创建 Spring Boot Admin Server 项目
- 打开 IntelliJ IDEA,新建一个 Spring Boot 项目。
- 选择依赖:
Spring Web
Spring Boot Admin Server
1.2 添加依赖
在 pom.xml
中添加 Spring Boot Admin Server 的依赖:
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>3.3.3</version> <!-- 版本根据 Spring Boot 的版本选择 -->
</dependency>
</dependencies>
build.gradle
文件
dependencies {
implementation 'de.codecentric:spring-boot-admin-starter-server:3.3.3'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
1.3 主类文件
在主类上加上 @EnableAdminServer
注解以启用 Admin Server。
package com.depencencies.springbootadmin;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer
public class SpringBootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}
1.4 配置文件 application.properties
在 src/main/resources/application.properties
中,添加如下配置:
spring.application.name=spring-boot-admin
server.port=9091
在 application.yml
中配置基本的 Spring Boot Admin Server 信息。
application.yml
server:
port: 9091
spring:
application:
name: spring-boot-admin
2. Spring Boot Admin Client 项目
2.1 创建 Spring Boot Admin Client 项目
- 新建另一个 Spring Boot 项目作为 Client,选择依赖:
Spring Web
Spring Boot Admin Client
2.2 添加依赖
在 pom.xml
中添加 Spring Boot Admin Client 的依赖:
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>3.3.3</version> <!-- 版本根据 Spring Boot 的版本选择 -->
</dependency>
</dependencies>
修改 build.gradle
dependencies {
implementation 'de.codecentric:spring-boot-admin-starter-client:3.3.3'
}
2.3 配置文件 application.properties
在 src/main/resources/application.properties
中,配置客户端注册到 Admin Server:
spring.application.name=spring-boot-admin-client
server.port=8081
# Spring Boot Admin Client 配置
spring.boot.admin.client.url=http://localhost:9091
spring.boot.admin.client.instance.service-base-url=http://localhost:8081/
同理如果你使用的是.yml,在 Spring Boot 应用的 application.yml
中,配置 Spring Boot Admin Client,这里不再赘述,有需要可以交流。
2.4 编写简单的 Controller
为确保客户端功能正常,可以创建一个简单的 RestController
:
package com.depencencies.springbootadminclient.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zhizhou 2024/9/5 10:16
*/
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello from Client 1!";
}
}
2.5 主类文件
客户端应用的主类,这些主类一般IDEA生成项目的同时会自动创建,所以一般无需过多关注:
package com.depencencies.springbootadminclient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootAdminClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminClientApplication.class, args);
}
}
3. 启动和测试
3.1 启动步骤
- 启动 Admin Server 项目(端口
9091
)。 - 启动 Admin Client 项目(端口
8081
)。
3.2 访问 Spring Boot Admin Server
打开浏览器,访问 http://localhost:9091
,可以看到在 Admin UI 界面中,spring-boot-admin-client
已注册到 Server 上。
3.3 测试客户端接口
访问客户端接口,确保应用正常运行:
http://localhost:8081/hello
你应该会看到返回 "Hello from Client 1!"
。
4. 使用示例
查看监控页面
- 打开浏览器,访问
http://localhost:9091
,即可看到 Spring Boot Admin 的 UI 界面。 - 注册的 Spring Boot 应用(Client)会出现在界面中,你可以点击某个应用,查看该应用的健康状态、日志、环境变量、JVM 指标等。
示例截图
为了测试监控多服务的状态,我创建了3个client注册到server上,其中client3图中的状态不健康,因为它在启动中,尚未启动完成,可以实现服务状态监控。
- 主界面:如图
- 应用监控页面:
服务性能指标:(这块后期会做特定章节进行讲解分享,对于研发后期实现智能监控做铺垫)
日志报表:
- 应用监控页面:
5. 总结
我们实现了实时监控多个 Spring Boot 应用的运行状况,并获取详细的应用指标,成功实现对客户端应用的监控和管理。
另外因为其中的高阶功能和扩展相对知识点很多,我们会分几期进行拆分讲解,安全认证、邮件/短信通知、监控日志、图表分析,结合普罗米修斯 Prometheus和Grafana实现可视化智能服务监控等等。