springboot常用starter⑱-admin

2021-07-23  本文已影响0人  一个好汉

Admin

什么是Spring Boot Admin

codecentric 的 Spring Boot Admin 是一个社区项目,用于管理和监控您的Spring Boot ®应用程序。应用程序向我们的 Spring Boot Admin Client 注册(通过 HTTP)或使用 Spring Cloud ®(例如 Eureka、Consul)发现。UI 只是一个位于 Spring Boot Actuator 端点之上的 Vue.js 应用程序

上面说的actuator是接口 以json形式返回 这里的admin则是图形化给你展示出来 同样也是监控

Spring Boot Admin是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。
它可以:在列表中浏览所有被监控spring-boot项目的基本信息,
详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,
还可以直接修改logger的level

入门

1. 设置 Spring Boot 管理服务器

首先,您需要设置您的服务器。为此,只需设置一个简单的启动项目(使用start.spring.io)。由于 Spring Boot Admin Server 能够作为 servlet 或 webflux 应用程序运行,因此您需要对此做出决定并添加相应的 Spring Boot Starter。在这个例子中,我们使用 servlet web starter。

将 Spring Boot Admin Server starter 添加到您的依赖项中:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.4.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

如果您想使用 Spring Boot Admin Server 的快照版本,您很可能需要包含 spring 和 sonatype 快照存储库:

pom.xml

<repositories>
    <repository>
        <id>spring-milestone</id>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <url>http://repo.spring.io/milestone</url>
    </repository>
    <repository>
        <id>spring-snapshot</id>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <url>http://repo.spring.io/snapshot</url>
    </repository>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
</repositories>

通过添加@EnableAdminServer到您的配置中来拉入 Spring Boot Admin Server配置:

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

如果您想通过 servlet 容器中的 war-deployment 设置 Spring Boot 管理服务器,请查看spring-boot-admin-sample-war。
另请参阅spring-boot-admin-sample-servlet项目,它也增加了安全性。

2.注册客户端应用程序

要在 SBA 服务器上注册您的应用程序,您可以包含 SBA 客户端或使用Spring Cloud Discovery(例如 Eureka、Consul 等)。还有一个在 SBA 服务器端使用静态配置的简单选项。

2.1. Spring Boot 管理客户端

每个想要注册的应用程序都必须包含 Spring Boot Admin Client。为了保护端点,还要添加spring-boot-starter-security.

将 spring-boot-admin-starter-client 添加到您的依赖项中:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.4.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

通过配置 Spring Boot 管理服务器的 URL 启用 SBA 客户端:

应用程序属性
spring.boot.admin.client.url=http://localhost:8080
management.endpoints.web.exposure.include=*
要注册的 Spring Boot 管理服务器的 URL。
与 Spring Boot 2 一样,默认情况下大多数端点都没有通过 http 公开,我们公开了所有端点。对于生产,您应该仔细选择要公开的端点。
使执行器端点可访问:

@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().permitAll()  
            .and().csrf().disable();
    }
}

为简洁起见,我们暂时禁用安全性。查看有关如何处理安全端点的安全部分。

2.2. spring cloud 注册

如果您已经将 Spring Cloud Discovery 用于您的应用程序,则不需要 SBA 客户端。只需在 Spring Boot Admin Server 中添加一个 DiscoveryClient,其余的由我们的 AutoConfiguration 完成。

以下步骤使用 Eureka,但也支持其他 Spring Cloud Discovery 实现。有使用Consul和Zookeeper 的示例。

另外,请查看Spring Cloud 文档。

将 spring-cloud-starter-eureka 添加到您的依赖项中:

pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

通过添加@EnableDiscoveryClient到您的配置启用发现:

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class SpringBootAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()  
                .and().csrf().disable();
        }
    }
}

为简洁起见,我们暂时禁用安全性。查看有关如何处理安全端点的安全部分。
告诉 Eureka 客户端在哪里可以找到服务注册中心:

应用程序.yml

eureka:   
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      startup: ${random.int}    #needed to trigger info and endpoint update after restart
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/

management:
  endpoints:
    web:
      exposure:
        include: "*"  
  endpoint:
    health:
      show-details: ALWAYS

Eureka 客户端的配置部分
与 Spring Boot 2 一样,默认情况下大多数端点都没有通过 http 公开,我们公开了所有端点。对于生产,您应该仔细选择要公开的端点。
另请参阅spring-boot-admin-sample-eureka。

您可以将 Spring Boot 管理服务器包含到您的 Eureka 服务器中。如上所述设置所有内容并设置spring.boot.admin.context-path为不同的内容,"/"以便 Spring Boot Admin Server UI 不会与 Eureka 的 UI 发生冲突。

Spring Boot Admin
上一篇下一篇

猜你喜欢

热点阅读