介绍
在当今复杂的分布式系统架构中,高效的监控至关重要。Spring Boot Admin、Spring Cloud 与 Nacos 强强联合,可快速为我们项目带来轻量级的可视化监控的理想方案。本文将详细剖析这三者的集成要点与实践细节,助您构建稳固且可控的微服务体系 。
项目结构
spring-cloud-admin-demo
├── spring-cloud-admin-server
└── spring-cloud-admin-client
示例代码地址:https://gitee.com/hushow/learning-demo/tree/master/spring-cloud-admin-demo
Spring cloud Admin Server 配置
1. 创建 spring-cloud-admin-server
项目
在 pom.xml
中添加依赖:
<dependencies>
<!-- Spring Boot Admin Server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.1</version>
</dependency>
<!-- Spring Cloud Starter Alibaba Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!-- Spring Cloud Starter -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
2. 配置 application.yml
server:
port: 8081
spring:
application:
name: spring-boot-admin-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
3. 启用 Spring Boot Admin Server
在主应用类上添加 @EnableAdminServer
注解:
package com.hushow.demo;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Slf4j
@EnableAdminServer
@SpringBootApplication(scanBasePackages = {"com.hushow.demo.**"})
public class AdminUiApplication {
public static void main(String[] args) {
SpringApplication.run(AdminUiApplication.class, args);
}
}
Spring Boot Admin Client 配置
1. 创建 spring-cloud-admin-client
项目
在 pom.xml
中添加依赖:
<dependencies>
<!-- Spring Boot Admin Client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.1</version>
</dependency>
<!-- Spring Cloud Starter Alibaba Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!-- Spring Cloud Starter -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2. 配置 application.yml
server:
port: 8082
spring:
application:
name: spring-cloud-admin-client
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
#通过nacos发现,不需要指标admin注册中心了
#spring.boot.admin.client.url: http://localhost:8080
3. 创建主应用类
package com.hushow.demo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Slf4j
@SpringBootApplication(scanBasePackages = {"com.hushow.demo.**"})
public class AdminClientApplication {
public static void main(String[] args) {
SpringApplication.run(AdminClientApplication.class, args);
}
}
运行步骤
- 启动 Nacos 服务,确保其运行在
http://localhost:8848
。 - 启动
spring-cloud-admin--server
项目。 - 启动
spring-cloud-admin-client
项目。
监控效果
启动成功后,访问 http://localhost:8081
即可看到 Spring Boot Admin Server 的管理界面,其中会显示已注册的客户端应用,效果如下: