在上一篇文章《Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解》咱们介绍了 Spring Boot 基于 Spring Boot Actuator 的服务监控, Spring Boot Actuator 提供了对单个 Spring Boot 的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了 Spring Boot 应用的整个生命周期。可是, Spring Boot Actuator 只为咱们提供了监控的数据接口,并且返回的数据量很是的大,咱们不可能经过人工肉眼的方式去分析这些返回的数据,确定是但愿能有一个图形化的界面帮助咱们去分析这些信息,同时,在微服务的体系中,咱们的服务数量是很是多的,这一样不方便咱们人工管理,在这样的背景下,诞生了另外一个开源软件,也是本篇文章要介绍的: Spring Boot Admin 。html
Spring Boot Admin 是一个 Web 应用,用于管理和监视 Spring Boot 应用程序的运行状态。每一个 Spring Boot 应用程序都被视为客户端并注册到管理服务器。背后的数据采集是由 Spring Boot Actuator 端点提供。前端 Spring Boot Admin UI 展现使用 VueJs 将数据展现在前端。前端
本文将介绍如何使用 Spring Boot Admin 对 Spring Boot 进行监控。java
依赖文件 pom.xml 以下:git
代码清单:spring-boot-admin/pom.xmlgithub
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR3</spring-cloud.version> <spring-boot-admin.version>2.1.5</spring-boot-admin.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-dependencies</artifactId> <version>${spring-boot-admin.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<dependencyManagement>
中增长 spring-boot-admin-dependencies
的版本配置,由于 spring-boot-admin
有关的版本信息未集成在 spring-boot-dependencies
中,咱也不知道为啥,咱也不敢问。Spring Boot Admin 能够用做单台服务的监控,也可用于集群的监控,咱们先介绍单台服务的监控配置。web
pom.xml 配置文件以下:spring
代码清单:spring-boot-admin/spring-boot-admin-server/pom.xml浏览器
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
注意: 若是只是单台服务使用,只需引入 spring-boot-admin-starter-server
的依赖便可, spring-cloud-starter-netflix-eureka-client
此依赖是 Spring Boot Admin 基于 Eureka 服务中心会使用到的依赖。springboot
配置文件 application.yml 以下:服务器
代码清单:spring-boot-admin/spring-boot-admin-server/src/main/resources/application.yml
server: port: 8888 spring: application: name: spring-boot-admin-server eureka: instance: leaseRenewalIntervalInSeconds: 10 health-check-url-path: /actuator/health client: registryFetchIntervalSeconds: 5 serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/ management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS
注意: 单机版本无需配置其中的 eureka.***.***
等相关内容。
启动主类 SpringBootAdminServerApplication.java 以下:
代码清单:spring-boot-admin/spring-boot-admin-server/src/main/java/com/springboot/springbootadminserver/SpringBootAdminServerApplication.java
@SpringBootApplication @EnableAdminServer @EnableEurekaClient public class SpringBootAdminServerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminServerApplication.class, args); } }
注意: 单机版本无需添加 @EnableEurekaClient
注解。
此工程为 Spring Boot Admin 单机版演示用例。
pom.xml 以下:spring-boot-admin/spring-boot-admin-clienta/pom.xml
代码清单:
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency>
spring-boot-admin-starter-client
Spring Boot Admin 的客户端便可。配置文件 application.yml 以下:
代码清单:spring-boot-admin/spring-boot-admin-clienta/src/main/resources/application.yml
server: port: 9090 spring: application: name: spring-boot-clienta boot: admin: client: url: http://localhost:8888 management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS
spring.application.name
配置的名称会在 Spring Boot Admin 的 UI 界面中显示出来。spring.boot.admin.client.url
配置的是咱们 Spring Boot Admin 服务端的地址。management.endpoints.web.exposure.include
开启 Spring Boot Actuator 的所有监控。management.endpoint.health.show-details
开启 Spring Boot Actuator 监控的应用的详细的应用健康信息。启动 spring-boot-admin-server 工程和 spring-boot-admin-clienta ,稍等一会, spring-boot-admin-clienta 会自动注册到 spring-boot-admin-server 上面去。
打开浏览器访问 http://localhost:8888/ ,这时咱们能够看到 Spring Boot Admin 监控图,以下:
点击后会进入该应用的详细信息,咱们能够看到 Spring Boot Admin 使用图形化的界面展现了该应用的各类信息,以下:
此工程示例为微服务版本的 Spring Boot Admin 使用示例,其中使用服务中心 Eureka 注册服务, Spring Boot Admin 会从服务中心 Eureka 上读取相关的信息,进行服务监控。这样咱们就不须要在客户端再配置 Spring Boot Admin 的服务地址,后续若是 Spring Boot Admin 服务发生地址迁移等事情时,也无需修改客户端的配置文件。
Eureka 代码示例这里再也不列出,若是有须要补课的同窗,能够访问笔者的 《Spring Cloud 系列文章》 。
工程依赖 pom.xml 以下:
代码清单:spring-boot-admin/spring-boot-admin-client/pom.xml
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
配置文件 application.yml 以下:
代码清单:spring-boot-admin/spring-boot-admin-client/src/main/resources/application.yml
server: port: 8080 spring: application: name: spring-boot-admin-client eureka: instance: leaseRenewalIntervalInSeconds: 10 health-check-url-path: /actuator/health client: registryFetchIntervalSeconds: 5 serviceUrl: defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/ management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS
启动主类 SpringBootAdminClientApplication.java 以下:
代码清单:
@SpringBootApplication @EnableEurekaClient public class SpringBootAdminClientApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminClientApplication.class, args); } }
@EnableEurekaClient
含义为启用 Eureka 客户端,实测虽然这里不写也同样会启用,可是最好仍是写一下吧:)测试:
修改编辑器 idea 配置,在两个不一样的端口启动子工程 spring-boot-admin-client ,打开 Spring Boot Admin 的 UI 界面,显示以下:
能够看到,这里显示了两个应用( APPLICATIONS ),一个是咱们的 spring-boot-admin-server 自己的监控,还有一个是咱们的 spring-boot-admin-client 应用,且该应用有两个实例( INSTANCES ),分别位于两个不一样的端口 8080 和 8081 。点进去同样能够看到对应的实例的详情。
使用 spring-boot-admin 对 Spring Boot 服务进行监控
原文出处:https://www.cnblogs.com/babycomeon/p/11645673.html