springboot常用starter⑱-admin
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