Spring Boot Admin 快速指南

  这篇文章介绍了如何在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专题