1.前言
Spring Boot 官方提供了应用监控,也就是Spring Boot Actuator,它包含了许多功能,例如健康检查、审计、指标收集、HTTP 请求追踪等,程序运行过程中 Spring Boot Actuator 将信息收集起来后,通过 HTTP 和 JMX 两种方式暴露给外部。例如通过访问 /health路径,可以看到应用的健康信息,但是这些端点返回的数据是 JSON 格式的,不方便查看,也不方便分析,所以Spring Boot Actuator 要和一些外部模块一起使用,
要么自己手写一个UI界面,通过暴露的应用信息,做可视化展示。自己手写很麻烦,而民间有人就开源了这种UI,就是springboot Admin
springboot Admin的结构如下
配置一个java程序作为springboot admin-server,server接收各个应用的监控信息并可视化处理
各个应用只需要告诉server自己的端口和地址,server即可读取其信息并展示。这些应用也可以称作:springboot admin-client
2.创建springboot-admin-server
2.1.maven依赖
<!-- web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<!-- admin-server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.0</version>
</dependency>
2.2.配置权限控制,通过账号密码才能访问可视化页面
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler
= new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl("/");
http.authorizeRequests()
.antMatchers("/assets/**").permitAll()
.antMatchers("/login").permitAll()
.anyRequest().authenticated().and()
.formLogin().loginPage("/login")
.successHandler(successHandler).and()
.logout().logoutUrl("/logout").and()
.httpBasic().and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(
"/instances",
"/actuator/**"
);
}
}
2.3.配置账号密码
server.port=9760
spring.security.user.name=admin
spring.security.user.password=123456
2.4.启动类增加注解
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer
public class ServerMain {
public static void main(String[] args) {
SpringApplication.run(DemoMain.class, args);
}
}
2.5.启动后,访问server的页面,输入账号密码后,可以看到目前没有应用注册过来,列表为空
3.配置一个springboot应用作为client,发送健康信息到server,server进行可视化展示
3.1.maven依赖
<!-- web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<!-- admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.0</version>
</dependency>
3.2.添加application.properties配置文件
server.port=9770
#在server页面中显示的应用名称
spring.application.name=yuchen-admin-sys
#配置server的地址、账号密码,才能正常认证
spring.boot.admin.client.url=http://localhost:9760
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=123456
#配置所有监控接口都对外访问
management.endpoints.web.exposure.include=*
2.3.启动类无需添加其他注解,直接启动,当出现regist说明已注册到server
此时再访问server的页面,可以看到应用的具体信息了,在应用墙中点击这个应用,可以进入到详情
把应用停止后,在事件日志中也可以看到停止时间