转载

SpringBootAdmin快速指南

这篇文章介绍了如何在dockerized环境中的设置Spring Boot Admin 1.X。在测试和生产环境中,我们需要手动检查每个Spring Boot应用程序,这些很有挑战性。

为什么选择Spring Boot Admin?我们可以一次性监控所有节点中的所有Spring Boot应用程序。我们可以监控什么呢?很多,比如系统和应用指标等等。在本文中,我们将重点关注 日志运行状况检查java melody 信息

先来看看如何设置?

让我们使用 Spring Initializr 创建一个新的Spring Boot应用程序。选择1Spring Boot Admin(服务器)的依赖关系。在 pom.xml中 的Maven文件看起来像如下:


    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
    </dependencies>

在主应用程序java类中添加@EnableAdminServer注释启用管理服务:

@SpringBootApplication
@EnableAdminServer
public class DemoApplication {

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

我们还通过application.properties指定了一个具体的端口:

server.port=8181

如何设置Spring Boot Admin Client

在现有的Spring Boot应用程序中,您只需要添加Spring Boot Admin客户端依赖项spring-boot-admin-starter-client:并在应用程序属性中指定Spring Boot Admin Server URL:

spring.application.name=hive-gw
spring.boot.admin.url=http://localhost:8181

Spring Boot Admin将使用相同的 spring.application.name 对所有Spring Boot应用程序进行 分组

如何在dockerized环境中设置Spring Boot Admin

如果我们在同一网络上运行docker容器(docker -net = XXX),则无需执行任何操作。如果不是在同一网段需要将Spring Boot Admin客户端配置为使用IP而不是主机名。这可以通过配置完成:

spring.application.name=hive-gw
spring.boot.admin.url=http://localhost:8181

spring.boot.admin.client.prefer-ip=true

Actuator

Actuator提供了有关应用程序的一些基本信息。我们可以通过添加 InfoContributor 配置类来扩展“ /info” 提供的信息:

@Component
public class MyCustomConfiguration implements InfoContributor {
    @Override 
   public void contribute(Builder builder) {  
      builder.withDetail("key", "value");  
  }

}

现在,来自我们应用程序的 / info 端点的响应将是:

{
    key: "value"
}

所有Spring Boot应用程序都应该有Maven插件 spring-boot-maven-plugin 。感谢这个插件,我们可以公开构建info:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution> 
           <id>build-info</id> 
           <goals> 
               <goal>build-info</goal>  
          </goals> 
       </execution>
    </executions>
</plugin>

最后, / info 端点将如下:

{
   build: {
      version: "0.0.1-SNAPSHOT",
            artifact: "demo",
            name: "demo",
            group: "com.example",
            time: 1533796864000
   },
   key: "value"
}

日志和LogFile Actuator

当我们在环境中遇到问题时,这些Actutor对我们的帮助很大,因为我们可以在运行时启用/禁用日志记录器以查看 调试 信息,同时可以搜索记录器名称并通过UI更改日志级别,而且可以通过UI查看日志。

为了启用日志Actuator,无需执行任何操作。对于LogFile Actuator,只需要为Spring Boot客户端配置所要跟踪日志文件的位置:

spring.application.name=hive-gw
spring.boot.admin.url=http://localhost:8181

spring.boot.admin.client.prefer-ip=true

logging.file=/opt/spring-boot/logs/hiveGateway.log

健康Actuator

在实际环境中,当用户开始抱怨因为某些功能不起作用时,可能大多数时候是由第三方系统停止工作引起的。我们可以添加健康检查。使用 AbstractHealthIndicator 通过 / health 公开它们:

@Configuration
public class MyHealthCheck extends AbstractHealthIndicator {

   private final String address = "my third party address"

   @Override
   protected void doHealthCheck(Builder builder) throws Exception {
      builder.withDetail("address", address);

      URL url = new URL(address);
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      connection.setRequestMethod("GET");
      connection.connect();

      int httpCode = connection.getResponseCode();
      builder.withDetail("response", httpCode);

      if (HttpResponseCodes.SC_OK == httpCode) {
         builder.up();
      } else {
         builder.down();
      }

   }

}

Spring Boot Admin将根据健康检查的结果管理客户端何时关闭或启动。它将允许我们实施断路器,从而确保整个系统在所有情况下都能正常工作。

JavaMelody

JavaMelody提供了许多有关服务的指标,运行了多长时间等等,甚至可以看到每个查询sql所做的解释计划。它还提供了一个UI,我们可以在其中查看所有这些。

JavaMelody团队为Spring Boot Admin 开发了一个插件,为每个客户端添加自定义选项卡。要启用它,您需要将这些依赖项添加到Spring Boot Admin服务器应用程序:

<!-- Enable Java Melody -->
<dependency>
    <groupId>net.bull.javamelody</groupId>
    <artifactId>spring-boot-admin-server-ui-javamelody</artifactId>
  </dependency>
<dependency>
    <groupId>net.bull.javamelody</groupId>
    <artifactId>javamelody-core</artifactId>
  </dependency>

并在属性中启用收集服务器:

server.port=8181

javamelody.collectserver.enabled=true
javamelody.init-parameters.storage-directory=/tmp/javamelody

spring boot专题

原文  https://www.jdon.com/springboot/sprint-boot-admin.html
正文到此结束
Loading...