Spring-Boot快速集成Spring Boot Admin 监控服务 (入门详解)
Spring Boot Admin 简介
官网介绍
codecentric’s Spring Boot Admin is a community project to manage and
monitor your Spring Boot ® applications. The applications register
with our Spring Boot Admin Client (via HTTP) or are discovered using
Spring Cloud ® (e.g. Eureka, Consul). The UI is just a Vue.js
application on top of the Spring Boot Actuator endpoints.
codecentric的Spring Boot Admin是一个社区项目,用于管理和监视您的Spring
Boot®应用程序。这些应用程序在我们的Spring Boot Admin Client中注册(通过HTTP),或者是通过Spring
Cloud®(例如Eureka,Consul)发现的。 UI只是Spring Boot Actuator端点之上的Vue.js应用程序
总之这玩意就是对运行中的sping-boot项目的监控组件。
在Spring Boot Admin中 对外部提供服务的项目中作为admin中的客户端,将项目注册到admin服务端上,在admin的服务端就可以统一监控这些部署的服务状态和配置。
就是这个样子
Admin Server 监控服务端实现
Admin Server 端实现是为了后续将服务注册到监控客户端中统一管理和监视。
可以新建一个正常 spring boot的web项目
完整的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.dlblog.admin</groupId>
<artifactId>server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>admin-server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-boot-admin.version>2.2.3</spring-boot-admin.version>
</properties>
<dependencies>
<!-- spring boot web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring boot admin 服务端依赖 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意版本,若Spring-boot版本过低,启动会报错,
我这里 Spring Boot Admin 的版本是2.2.3 , Spring Boot 版本是2.3.0。之前使用的是2.1.7,启动报错,官网的解决办法就是升Spring Boot 版本。
添加好依赖还需要开启Spring-Boot对AdminServer的支持
@EnableAdminServer //开启AdminServer的支持
@SpringBootApplication
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
指定监控服务的配置
# tomcat configuration
server:
port: 8082
servlet :
context-path:
# log level
logging.level:
root: WARN
org.springframework: DEBUG
org.apache.coyote.http11.Http11InputBuffer: DEBUG
sample.mybatis.mapper: DEBUG
org.apache.ibatis: DEBUG
配置访问端口,当访问这个端口时,就可以看到admin管理画面。
可以看到当前监控服务端已经成功启动,但是还没有客户端注册进来。
Admin Client 监控客户端实现
完整依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.dlblog.admin</groupId>
<artifactId>admin-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>admin-client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-boot-admin.version>2.2.3</spring-boot-admin.version>
</properties>
<dependencies>
<!--spring boot web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring boot admin 客户端依赖-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意Spring Boot 和Spring Boot Admin的版本关系
#admin客户端注册地址
spring.boot.admin.client.url: http://localhost:8082
management.endpoints.web.exposure.include: "*"
#监视服务名
spring.application.name: adminServer
# log level
logging.level:
root: WARN
org.springframework: DEBUG
org.apache.coyote.http11.Http11InputBuffer: DEBUG
sample.mybatis.mapper: DEBUG
org.apache.ibatis: DEBUG
这里的 spring.boot.admin.client.url 中地址就时上面实现的Admin Server的地址。就是指定注册的地址,若是要注册到多个admin服务端上
用逗号分隔就可以
#admin客户端注册地址
spring.boot.admin.client.url: http://localhost:8082, http://localhost:10082
management.endpoints.web.exposure.include: "*"
#监视服务名
spring.application.name: adminServer
先启动admin 客户端的代码,在启动admin 服务端的代码, 客户端项目可以多放几个。
访问admin服务端的地址 我上面指定的是8082端口
可以看到我监控到两个服务。
spring-boot 快速集成 Admin
最后附上 admin-server 通用源码
https://github.com/DavidLei08/Spring-Boot-dlblog/releases/