Spring Boot Admin指南
- 作者
Spring Boot Admin是一个用于管理和监控Spring Boot应用程序的Web应用。它将每个应用视为客户端并注册到管理服务器。底层利用了Spring Boot Actuator端点的功能。
本文将介绍如何配置Spring Boot Admin服务器,以及如何将应用程序设置为客户端。
2. 设置管理服务器
首先,创建一个简单的Spring Boot Web应用,并添加以下Maven依赖:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.4.1</version>
</dependency>
然后在主类上添加@EnableAdminServer注解:
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
这样我们就可以启动服务器并注册客户端应用了。
3. 设置客户端
要将Spring Boot应用注册为客户端,需要添加以下依赖:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.4.1</version>
</dependency>
然后配置管理服务器的URL:
spring.boot.admin.client.url=http://localhost:8080
从Spring Boot 2开始,默认只暴露health和info端点。我们可以配置暴露所有端点:
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
4. 安全配置
由于管理服务器可以访问应用的敏感端点,建议为服务器和客户端添加安全配置。
对于服务器,添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
然后添加一个WebSecurityConfig类进行安全配置。
对于客户端,需要在配置文件中添加凭证:
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
spring.security.user.name=client
spring.security.user.password=client
spring.boot.admin.client.instance.metadata.user.name=${spring.security.user.name}
spring.boot.admin.client.instance.metadata.user.password=${spring.security.user.password}
5. 监控和管理功能
Spring Boot Admin可以配置只显示需要的信息:
spring.boot.admin.routes.endpoints=env,metrics,trace,jolokia,info,configprops
它还支持使用Hazelcast进行集群复制,只需添加hazelcast依赖即可。
6. 通知
Spring Boot Admin支持多种通知方式,如邮件、Hipchat等。以邮件通知为例,添加mail starter依赖并配置:
spring.mail.host=smtp.example.com
spring.mail.username=smtp_user
spring.mail.password=smtp_password
spring.boot.admin.notify.mail.to=admin@example.com
我们还可以配置自定义通知系统,如过滤通知器等。
7. 总结
本文介绍了使用Spring Boot Admin监控和管理Spring Boot应用的基本步骤。通过简单的配置,我们就可以搭建一个功能完善的管理服务器。
示例代码可以在Github上找到。
分享内容