Spring Boot Admin 2.0 监控Spring Cloud服务
程序员文章站
2022-05-22 08:24:00
...
一、简介
Spring Boot Admin 在Spring Boot Actuator 的基础上提供简介的可视化WEB UI,用来管理Spring Boot应用程序的一个简单的界面,提供如下的功能:
- 显示 name/id 和版本号
- 显示在线状态
- Logging 日志级别管理
- JMX beans 管理
- Threads 会话和线程管理
- Trace 应用请求跟踪
- 应用运行参数信息,如:
- Java 系统属性
- Java 环境变量属性
- 内存信息
- Spring 环境属性
本文将以Spring Boot Admin 2.0 与 Eureka整合展示Spring Boot Admin 2.0 的使用。
下面我介绍一下使用到的相关应用:
服务 | 端口 | 服务说明 |
---|---|---|
eureka-server | 8100 | 服务注册与发现中心 |
config-server | 8101 | 配置中心 |
codedict | 8102 | 代码字典微服务(监控客户端) |
admin | 8103 | spring boot admin监控服务(监控服务端) |
这里我主要讲解spring boot admin服务端与客户端的搭建,服务注册发现和配置中心的搭建不再做赘述。
二、Spring Boot Admin服务端搭建
- 添加相关依赖
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--JMX-bean 管理-->
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
- 启动类
@EnableAdminServer
@EnableEurekaClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class AdminCustomApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(AdminCustomApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(AdminCustomApplication.class, args);
}
}
- 安全控制
@Profile("secure")
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf().disable();
}
}
这里为Spring Boot Admin配置了登录控制。
- 配置文件
#服务名
spring.application.name=admin
spring.cloud.config.profile=dev2
#配置上下文路径
server.servlet.context-path=/admin
#注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka
#为监控端点加前缀,这样才可以收集到监控信息
#eureka.instance.metadata-map.management.context-path=/admin/actuator
#eureka.instance.health-check-url=http://localhost:${server.port}/admin/actuator/health
#eureka.instance.status-page-url=http://localhost:${server.port}/admin/actuator/info
#eureka.instance.home-page-url=http://localhost:${server.port}
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.health-check-url-path=/admin/actuator/health
eureka.client.registry-fetch-interval-seconds=5
eureka.instance.metadata-map.user.name=user
eureka.instance.metadata-map.user.password=password
#暴露actuator的所有端点
management.endpoints.web.exposure.include=*
#health endpoint是否必须显示全部细节。默认情况下, /actuator/health 是公开的,并且不显示细节
management.endpoint.health.show-details=always
#配置登录名,密码和安全策略
spring.profiles.active=secure
spring.security.user.name=user
spring.security.user.password=password
#通过服务连接配置中心
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.uri = http://localhost:8080/config-server
#配置文件获取失败快速返回
spring.cloud.config.failFast=true
spring.jmx.default-domain=admin
-
启动admin服务
登录界面
主界面
三、Spring Boot Admin 客户端
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 其他监控依赖
<!-- 增加对hystrix的UI支持,需要服务依赖了hystrix --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-hystrix</artifactId> <version>1.5.7</version> </dependency> <!-- 增加对turbine的集成支持,需要指定相关turbine参数信息 --> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-turbine</artifactId> <version>1.5.4</version> </dependency>
- 配置文件
#服务名
spring.application.name=codedict
spring.cloud.config.profile=dev2
#配置上下文路径
server.servlet.context-path=/codedict
#注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka
#为监控端点加前缀,这样才可以收集到监控信息
eureka.instance.metadata-map.management.context-path=/codedict/actuator
eureka.instance.health-check-url=http://localhost:${server.port}/codedict/actuator/health
eureka.instance.status-page-url=http://localhost:${server.port}/codedict/actuator/info
eureka.instance.home-page-url=http://localhost:${server.port}
#Actuator 在 spring boot 2.0 版本后,只暴露了两个端点,下面开启所有端点
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
#通过服务连接配置中心
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.uri = http://localhost:8080/config-server
#配置文件获取失败快速返回
spring.cloud.config.failFast=true
这里只展示与本节内容相关的配置。
-
查看监控信息
服务上线
监控信息
其它详细信息可以查看GitHub:https://github.com/codecentric/spring-boot-admin
推荐阅读
-
spring boot 添加admin监控的方法
-
spring Boot+spring Cloud实现微服务详细教程第二篇
-
Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控
-
Spring Boot Admin 集成自定义监控告警
-
服务监控之spring-boot-admin
-
从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择
-
基于Spring Boot 2.0.2.RELEASE 的 Spring Cloud 速成指南 | 二. Spring Cloud 服务注册中心(Eureka Server)
-
Spring Boot Admin监控服务上下线邮件通知
-
Spring Cloud 微服务中搭建 OAuth2.0 认证授权服务
-
spring boot 添加admin监控的方法