4

我想了解如何在我的应用程序中使用SBAP,因为它是一个非常方便的开发工具。我正在阅读他们的reference guide,但我不了解一些事情。 这里是我的我的应用程序POM现在:Spring Boot Admin页面

<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 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <packaging>war</packaging> 

    <groupId>com.batch.books.test</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.1.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
      <version>1.3.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <version>1.3.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>de.codecentric</groupId> 
      <artifactId>spring-boot-admin-server</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
     <dependency> 
      <groupId>de.codecentric</groupId> 
      <artifactId>spring-boot-admin-server-ui</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
     <dependency> 
      <groupId>de.codecentric</groupId> 
      <artifactId>spring-boot-admin-starter-client</artifactId> 
      <version>1.3.2</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>test</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
      </plugin> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

这里是我的Application.java

package app; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.ApplicationContext; 

@SpringBootApplication 
@EnableAdminServer 
@EnableDiscoveryClient 
public class Application { 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(Application.class, args); 
    } 

} 

而且我application.yml文件:

info: 
    version: @[email protected] 
    stage: test 

spring: 
    application: 
    name: @pom.[email protected] 
    boot: 
    admin: 
     url: http://localhost:8080 

其余的我很迷茫关于。

  1. 那么我注册我的应用程序作为服务器和客户端?
  2. 如何运行此应用程序并访问管理页面?他们没有提及要去查看管理页面的任何URL。它只是:http://localhost:8080
  3. 我该如何设置开发,但在生产中关闭它?在底部有参考指南说:

我可以在我的业务应用程序中包含spring-boot-admin吗?

tl; dr你可以,但你不应该。您可以设置 spring.boot.admin.context-path来更改UI和REST API所服务的路径,但取决于您可能遇到麻烦的应用程序的复杂程度。另一方面,在我看来, 对于一个应用程序来监视自己是没有意义的。如果您的应用程序停止运行,您的监控工具也会启动。

我正在考虑这个意思是说你不应该在生产中这样做。所以如果你不能使用spring boot admin在生产环境中监控你的应用程序,那么有什么意义呢?解决方案是否有两个应用程序,一个是您的业务应用程序,另一个是监控应用程序的监控应用程序?

回答

4
  1. 那么我注册我的应用程序作为服务器和客户端?

在你的例子中,你这样做了。管理服务器本身就是客户端并不是问题。事实上,spring-boot-admin-sample是这样配置的,所以你可以获得关于管理服务器本身的信息。

  1. 如何运行此应用程序并访问管理页面?他们没有提及要去查看管理页面的任何URL。它只是: http://localhost:8080

是的。如果您未设置spring.boot.admin.context-path,则管理员将在根目录上提供服务。因此,如果您将管理员发布到商业应用内部,则应该配置spring.boot.admin.context-path,以便在其他地方投放。

  1. 如何为开发设置此功能,但在生产中关闭它?在底部有参考指南说:...

这一点只是使用两个单独的应用程序。这是我们从开发 - 从qa-到生产阶段的方式。我们总是将业务与管理服务器分开。如果要在业务应用程序内部启用管理服务器,请有条件地尝试使用此方法: 编写一个@Configuration -class类,该类仅在特定配置文件中处于活动状态,并将@EnableAdminServer移动到此配置。

希望这会有所帮助。

1

我不认为该建议不使用Spring的引导管理在生产监控着,当然,你保证有安全的一些级别内置在后。

为SBAP正确的使用模式将其视为独立的应用程序,通过GUI提供所有Springboot服务的汇总视图。事实上,只要HEALTH/METRICS网站通过ACTUATOR公开,监控服务甚至不需要意识到有一些应用正在监控其状态。

SBAP可以从标准端点上发现您的服务后,从EUREKA这样的服务注册中心中取出所有METRICS,因为它完全将SBAP从静态上意识到除了EUREKA本身以外的任何其他服务。样品YAML配置和JAVA代码如下

@SpringBootApplication 
@EnableDiscoveryClient 
@EnableAdminServer 
public class SpringbootAdminApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringbootAdminApplication.class, args); 
    } 
} 

bootstrap.yml

eureka: 
    instance: 
     leaseRenewalIntervalInSeconds: 10 
    client: 
     registerWithEureka: false 
     fetchRegistry: true 
     serviceUrl: 
     defaultZone: http://localhost:8761/eureka/ 
    spring: 
    boot: 
    admin: 
     url: http://localhost:8080 
    cloud: 
     config: 
     enabled: false 

随着2个配置上述独自在SpringBoot项目,这将成为可通过“访问的服务器SBAP http://localhost:8080“并监控您的服务。