4

Я пытаюсь понять, как использовать SBAP в моем приложении, потому что это очень удобный инструмент для разработки. Я читаю их reference guide, но я не понимаю нескольких вещей. Вот мой ПОМ для моего приложения прямо сейчас:Spring Admin 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: @[email protected] 
    boot: 
    admin: 
     url: http://localhost:8080 

Остальное я очень смущен около.

  1. Я регистрирую свое приложение как сервер и клиент?
  2. Как запустить это приложение и получить доступ к странице администрирования? Они не упоминают ни одного URL-адреса, чтобы перейти на страницу администратора. Это просто: http://localhost:8080?
  3. Как настроить это для разработки, но отключить его в процессе производства? Там справочник на дне говорит:

Может ли я включить пружинные загрузочные админ в моем бизнесе-приложение?

tl; dr Вы можете, но не должны. Вы можете установить spring.boot.admin.context-path, чтобы изменить путь, в котором обслуживается UI и REST-api, но в зависимости от сложности вашего приложения у вас могут возникнуть проблемы. С другой стороны, на мой взгляд, нет никакого смысла для приложения контролировать себя. В случае, если ваше приложение идет вниз, ваш инструмент для озвучивания также делает.

Я принимаю это за то, что вы не должны иметь этого в производстве. Поэтому, если вы не можете использовать Spring boot admin для мониторинга своего приложения в процессе производства, то в чем смысл? Является ли решение иметь 2 приложения, 1 которое является вашим бизнес-приложением, а другое - вашим приложением мониторинга, которое контролирует бизнес-приложение?

ответ

4
  1. Так я регистрирующий мое заявление в качестве сервера и клиента?

В вашем примере, вы делаете. Не проблема, что сервер администратора является клиентом для себя. На самом деле шаблон spring-boot-admin настроен таким образом, чтобы вы получали информацию о самом сервере администратора.

  1. Как запустить это приложение и получить доступ к странице администрирования? Они не упоминают ни одного URL-адреса, чтобы перейти на страницу администратора. Это просто: http://localhost:8080?

Да. Если вы не установили spring.boot.admin.context-path, администратор будет работать в корне. Поэтому, если вы отправляете администратора внутри своего бизнес-приложения, вы должны настроить spring.boot.admin.context-path так, чтобы он обслуживался в другом месте.

  1. Как настроить это для разработки, но отключить его в процессе производства? Там ссылки руководство на дне говорит: ...

Дело просто использовать два отдельных приложения. Так мы делаем это с dev-, qa- до стадии производства. Мы всегда отделяем бизнес от администратора. Если вы хотите включить администратор-сервер внутри своего бизнес-приложения, попробуйте этот подход: Напишите класс @Configuration, который активен только в определенном профиле и переместит @EnableAdminServer в эту конфигурацию.

Надеюсь, это поможет.

1

Я не думаю, что эта рекомендация не использовать Spring загрузки администратора в производстве для контроля, конечно, после того, как вы убедитесь, что есть определенный уровень безопасности, который встроен в систему.

Правильный шаблон использования для SBAP заключается в том, чтобы думать об этом как о отдельном приложении, которое обеспечивает агрегированное представление обо всех ваших сервисах Springboot через графический интерфейс. Infact, пока URL-адреса HEALTH/METRICS отображаются через ACTUATOR, службы MONITORED даже не должны знать, что есть приложение, которое контролирует его статус.

SBAP может отображать все METRICS со стандартных конечных точек после того, как он обнаруживает ваши сервисы из реестра служб, такого как EUREKA, поскольку это полностью отделяет 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 "и следить за вашими услугами.