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专题