专栏名称: 极客挖掘机
高级软件工程师
目录
相关文章推荐
独角兽智库  ·  医药生物行业2025年2月投资策略:关注AI ... ·  3 天前  
独角兽智库  ·  大摩:“空头”也改口了,看多并上调MSCI中 ... ·  3 天前  
洪观新闻  ·  阿里巴巴美股涨近10% ·  3 天前  
洪观新闻  ·  阿里巴巴美股涨近10% ·  3 天前  
51好读  ›  专栏  ›  极客挖掘机

Spring Boot (十): Spring Boot Admin 监控 Spring Boot 应用

极客挖掘机  · 掘金  ·  · 2019-10-10 06:03

正文

阅读 56

Spring Boot (十): Spring Boot Admin 监控 Spring Boot 应用

1. 引言

在上一篇文章 《Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解》 我们介绍了 Spring Boot 基于 Spring Boot Actuator 的服务监控, Spring Boot Actuator 提供了对单个 Spring Boot 的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了 Spring Boot 应用的整个生命周期。但是, Spring Boot Actuator 只为我们提供了监控的数据接口,而且返回的数据量非常的大,我们不可能通过人工肉眼的方式去分析这些返回的数据,肯定是希望能有一个图形化的界面帮助我们去分析这些信息,同时,在微服务的体系中,我们的服务数量是非常多的,这同样不方便我们人工管理,在这样的背景下,诞生了另一个开源软件,也是本篇文章要介绍的: Spring Boot Admin

2. Spring Boot Admin 简介

Spring Boot Admin 是一个 Web 应用,用于管理和监视 Spring Boot 应用程序的运行状态。每个 Spring Boot 应用程序都被视为客户端并注册到管理服务器。背后的数据采集是由 Spring Boot Actuator 端点提供。前端 Spring Boot Admin UI 展示使用 VueJs 将数据展示在前端。

本文将介绍如何使用 Spring Boot Admin 对 Spring Boot 进行监控。

3. 工程实战

3.1 创建父工程 spring-boot-admin

依赖文件 pom.xml 如下:

代码清单:spring-boot-admin/pom.xml


<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 中,咱也不知道为啥,咱也不敢问。

3.2 创建子工程 spring-boot-admin-server

Spring Boot Admin 可以用作单台服务的监控,也可用于集群的监控,我们先介绍单台服务的监控配置。

pom.xml 配置文件如下:

代码清单: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 服务中心会使用到的依赖。

配置文件 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 注解。

3.3 创建子工程 spring-boot-admin-clienta

此工程为 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 使用图形化的界面展示了该应用的各种信息,如下:

3.4 创建子工程 spring-boot-admin-client

此工程示例为微服务版本的 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







请到「今天看啥」查看全文