Spring Boot - 管理服务器



使用 Spring Boot Actuator 端点监控您的应用程序有点困难。因为,如果您有“n”个应用程序,每个应用程序都有单独的 Actuator 端点,从而使监控变得困难。Spring Boot Admin Server 是一个用于管理和监控您的微服务应用程序的应用程序。

为了处理这种情况,CodeCentric 团队提供了一个 Spring Boot Admin UI,用于在一个地方管理和监控所有 Spring Boot 应用程序 Actuator 端点。

为了构建 Spring Boot Admin Server,我们需要在您的构建配置文件中添加以下依赖项。

Maven 用户可以在您的 pom.xml 文件中添加以下依赖项:

<dependency>
   <groupId>de.codecentric</groupId>
   <artifactId>spring-boot-admin-starter-server</artifactId>
   <version>3.3.3</version>
</dependency>

Gradle 用户可以在您的 build.gradle 文件中添加以下依赖项:

compile group: 'de.codecentric', name: 'spring-boot-admin-starter-server', version: '3.3.3'

创建 Spring Admin Server

首先,从 Spring Initializer 页面下载 Spring Boot 项目,并选择 Spring Admin Server 和 Admin Server UI 依赖项。观察下面给出的屏幕截图:

Creating Spring Admin Server

在您的主 Spring Boot 应用程序类文件中添加 @EnableAdminServer 注解。@EnableAdminServer 注解用于将您的应用程序作为 Admin Server 来监控所有其他微服务。

AdminserverApplication

package com.tutorialspoint.adminserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.codecentric.boot.admin.config.EnableAdminServer;

@SpringBootApplication
@EnableAdminServer
public class AdminserverApplication {   
   public static void main(String[] args) {
      SpringApplication.run(AdminserverApplication.class, args);
   }
}

现在,在 application.properties 文件中定义 server.port 和 application name,如下所示:

server.port = 9090
spring.application.name = adminserver

对于 YAML 用户,请使用以下属性在 application.yml 文件中定义端口号和应用程序名称。

server:
   port: 9090
spring:
   application:
      name: adminserver

构建配置文件如下所示。

pom.xml

<?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>3.3.3</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>adminserver</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>adminserver</name>
   <description>Demo project for Spring Boot</description>
   <url/>
   <licenses>
      <license/>
   </licenses>
   <developers>
      <developer/>
   </developers>
   <scm>
      <connection/>
      <developerConnection/>
      <tag/>
      <url/>
   </scm>
   <properties>
      <java.version>21</java.version>
      <spring-boot-admin.version>3.3.3</spring-boot-admin.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>de.codecentric</groupId>
         <artifactId>spring-boot-admin-starter-server</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </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>

对于 Gradle 用户 - build.gradle 文件

buildscript {
   ext {
      springBootVersion = '3.3.3'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 21
repositories {   
   mavenCentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter')
   compile group: 'de.codecentric', name: 'spring-boot-admin-server', version: '3.3.3'
   testCompile('org.springframework.boot:spring-boot-starter-test')
}

编译和执行

您可以创建一个可执行的 JAR 文件,并使用以下 Maven 或 Gradle 命令运行 Spring Boot 应用程序:

对于 Maven,请使用此处显示的命令:

mvn clean install

“BUILD SUCCESS”后,您可以在 target 目录下找到 JAR 文件。

对于 Gradle,请使用此处显示的命令:

gradle clean build

“BUILD SUCCESSFUL”后,您可以在 build/libs 目录下找到 JAR 文件。

现在,使用以下命令运行 JAR 文件:

java –jar <JARFILE> 

现在,应用程序已在 Tomcat 端口 9090 上启动,如下所示:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

[32m :: Spring Boot :: [39m              [2m (v3.3.3)[0;39m

[2m2024-09-12T16:16:44.507+05:30[0;39m [32m INFO[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mc.t.adminserver.AdminserverApplication  [0;39m [2m:[0;39m Starting AdminserverApplication using Java 21.0.3 with PID 18380 (E:\Dev\adminserver\target\classes started by Tutorialspoint in E:\Dev\adminserver)
[2m2024-09-12T16:16:44.510+05:30[0;39m [32m INFO[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mc.t.adminserver.AdminserverApplication  [0;39m [2m:[0;39m No active profile set, falling back to 1 default profile: "default"
[2m2024-09-12T16:16:45.909+05:30[0;39m [33m WARN[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mion$DefaultTemplateResolverConfiguration[0;39m [2m:[0;39m Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
[2m2024-09-12T16:16:46.179+05:30[0;39m [32m INFO[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mo.s.b.a.e.web.EndpointLinksResolver     [0;39m [2m:[0;39m Exposing 1 endpoint beneath base path '/actuator'
[2m2024-09-12T16:16:46.867+05:30[0;39m [32m INFO[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mo.s.b.web.embedded.netty.NettyWebServer [0;39m [2m:[0;39m Netty started on port 9090 (http)
[2m2024-09-12T16:16:46.881+05:30[0;39m [32m INFO[0;39m [35m18380[0;39m [2m---[0;39m [2m[adminserver] [           main][0;39m [2m[0;39m[36mc.t.adminserver.AdminserverApplication  [0;39m [2m:[0;39m Started AdminserverApplication in 2.702 seconds (process running for 3.754)

现在,从您的 Web 浏览器中点击以下 URL 并查看 Admin Server UI。

https://127.0.0.1:9090/

Web Browser Admin Server UI
广告