入门
1. 配置SBA服务端应用程序
第一步,你需要配置你的服务端程序。 为此,只需要配置一个基础的boot项目(使用 http://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.6.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
xml
如果你使用的是Spring Boot Admin Server的snapshot版本,那么可能还需要添加spring的sonatype snapshot仓库: pom.xml
xml |
-
在main class上添加`@EnableAdminServer`注解,启用SBA服务器端配置:
@Configuration @EnableAutoConfiguration @EnableAdminServer public class SpringBootAdminApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminApplication.class, args); } }
java
如果你想通过部署war包,以servlet容器的方式来设置SBA,那么请查看 spring-boot-admin-sample-war。 |
同时也看看 spring-boot-admin-sample-servlet, 其中添加了安全保护。
2. 注册客户端应用程序
要想在SBA服务端注册你的应用,你需要引入SBA客户端,或者是使用 Spring Cloud服务发现 (例如 Eureka、Consul等等)。 这里有一个 在SBA服务端使用静态配置的简单选项。
2.1. SBA客户端服务
所有要注册的应用都需要添加Spring Boot Admin客户端依赖。
如果要想对默认接口进行安全保护,还需要添加 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.6.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
xml -
配置Spring Boot Admin服务端的URL来开启SBA客户端:
application.propertiesspring.boot.admin.client.url=http://localhost:8080 (1) management.endpoints.web.exposure.include=* (2) management.info.env.enabled=true (3)
1 将要注册到的Spring Boot Admin 服务端URL地址。 2 与Spring Boot 2一样,大部分默认接口都没有通过http暴露出来,这里我们将它们全部暴露。在生产环境,您应该酌情选择您要公开的接口。 3 在Spring Boot 2.6版本之后,env信息默认是关闭的。所以我们必须启用它们。 -
让所有的actuator接口都可以访问:
@Configuration public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().permitAll() (1) .and().csrf().disable(); } }
java1 为了演示的简单,我们禁用了安全功能。请查看 安全处理章节 来学习如何保护您的接口。
2.2. Spring Cloud 服务发现
如果已经在应用中使用了Spring Cloud Discovery,那么就不需要SBA客户端了。 只需要为Spring Boot Admin服务端添加一个DiscoveryClient,其余的工作都会由我们自动配置完成。
另外,也参考一下 Spring Cloud 文档。
-
在依赖中添加spring-cloud-starter-eureka:
pom.xml<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
xml -
在配置类中添加
@EnableDiscoveryClient
注解以启用服务发现:@Configuration @EnableAutoConfiguration @EnableDiscoveryClient @EnableScheduling @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() (1) .and().csrf().disable(); } } }
java1 为了演示的简单,我们禁用了安全功能。请查看 安全处理章节 来学习如何保护您的接口。 -
告诉Eureka客户端在哪里查找服务:
application.ymleureka: (1) 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: "*" (2) endpoint: health: show-details: ALWAYS
yml1 针对Eureka客户端的配置部分 2 与Spring Boot 2一样,大部分默认接口都没有通过http暴露出来,这里我们将它们全部暴露。在生产环境,您应该酌情选择您要公开的接口。
另外,也参考一下 spring-boot-admin-sample-eureka。
你也可以将Spring Boot Admin服务端安装在Eureka服务端上。首先将前文的安装步骤重复一遍,然后将 spring.boot.admin.context-path 设置为除了 "/" 之外的其它路径,这样Spring Boot Admin服务端的用户交互页面就不会和Eureka的冲突了。
|
2.3. 使用Pyctuator注册Python应用程序
下面的例子使用的是Flask,但是其它web框架也支持的很好。 有关框架的更新列表以及所支持的功能,请查看Pyctuator官方文档。
-
安装pyctuator包:
pip install pyctuator
bash -
将pyctuator指向你的Flask应用,让它知道Spring Boot Admin是在哪里运行的,从而启用pyctuator:
import os from flask import Flask from pyctuator.pyctuator import Pyctuator app_name = "Flask App with Pyctuator" app = Flask(app_name) @app.route("/") def hello(): return "Hello World!" Pyctuator( app, app_name, app_url="http://example-app.com", pyctuator_endpoint_url="http://example-app.com/pyctuator", registration_url=os.getenv("SPRING_BOOT_ADMIN_URL") ) app.run()
python