1.简介
Spring Boot Admin为项目常用的监控方式,可以动态的监控服务是否运行和运行的参数,如类的调用情况、流量等。其中分为server与client:
- server: 提供展示UI与监控服务。
- client:加入server,被监控的项目。
同时在监控的过程中spring-boot-starter-actuator也被经常提及,actuator使用后,会在被项目内部打上探针,提供一系列的监控api接口,如堆内存、栈内存等。下文数据为actuator提供。
2.server端
2.1 新建springboot项目
这里不多说常用方法新建springboot项目。
2.2 修改pom文件
由于使用了spring cloud alibaba生态,所以这里将nacos包也加入了,请自行选择。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><optional>true</optional></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.2.0</version></dependency><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies>
2.3 修改yml文件
server端暂无其他配置。
server:port: 8008servlet:context-path: /monitor
spring:application:name: monitor-resource # Eureka页面显示
2.4 修改
加入@EnableAdminServer注解。
@SpringBootApplication
@EnableAdminServer
public class MonitorApplication {public static void main(String[] args) {SpringApplication.run(MonitorApplication.class, args);}}
访问ip:端口/context-path
就可以访问了。页面如下。
3.client端
3.1 修改pom文件
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.2.0</version></dependency>
3.2 修改yml文件
在有context-path情况下,需要加入特殊配置,否则报错。本文为nacos中的配置,请参考。
server:port: 8008servlet:context-path: /monitor
spring:application:name: monitor-resource boot:admin:client:api-path:url: http://127.0.0.1:8008/monitor # 这里为server地址,如果有context-path需要加入instance:prefer-ip: true # 使用ip注册进来management-url: /monitorcloud:nacos:discovery:# 服务注册地址server-addr: ip:8848metadata: # 如果有context-path需要加上,否者报错management:context-path: ${server.servlet.context-path}/actuatorconfig:# 配置中心地址server-addr: ip:8848# 配置文件格式file-extension: yml
management: # actuator配置endpoint:health:show-details: alwaysendpoints:enabled-by-default: trueweb:exposure:include: '*'
启动后即可加入server服务,页面展示如下:
4.Security
4.1 修改pom文件。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
4.2 修改application.xml文件
加入登录账号密码。
spring:security:user:name: "admin"password: "1qaz@WSX"
4.3 新增登入登出配置
这里需要配置登入登出的页面地址,同其他博文相同配置。
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {private final String adminContextPath;public SecuritySecureConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath();}@Overrideprotected void configure(HttpSecurity http) throws Exception {// @formatter:offSavedRequestAwareAuthenticationSuccessHandler 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();}
}
再次登录可以看到需要账号登录。