使用Spring Boot Admin监控Spring Boot应用
1.概述
Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:
显示健康状况
显示详细信息,例如
- JVM和内存指标
- micrometer.io指标
- 数据源指标
- 缓存指标
显示构建信息编号
关注并下载日志文件
查看jvm系统和环境属性
查看Spring Boot配置属性
支持Spring Cloud的postable / env-和/ refresh-endpoint
轻松的日志级管理
与JMX-beans交互
查看线程转储
查看http跟踪
查看auditevents
查看http-endpoints
查看计划任务
查看和删除活动会话(使用spring-session)
查看Flyway / Liquibase数据库迁移
下载heapdump
状态变更通知(通过电子邮件,Slack,Hipchat,……)
状态更改的事件日志(非持久性)
2.开始
Spring Boot Admin
由两部分组成Server
和Client
,一个Server
可支持多个Client
的监控。
2.1 Server端搭建
Server端搭建主要分为如下步骤:
2.1.1 引入依赖
1 2 3
| "de.codecentric:spring-boot-admin-starter-server:${boot_admin}" # 可选增强配置(如需对监控页面进行鉴权访问添加此项) "org.springframework.boot:spring-boot-starter-security:${springBootVersion}"
|
2.1.2 配置注解
启动类上添加启用注解@EnableAdminServer
即可。
2.1.3 项目配置
1 2 3 4 5 6 7 8 9 10
| server: port: 19001
spring: security: user: name: "eva" password: "***"
|
Spring security 鉴权配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| @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(); } }
|
2.1.4 上线发布
建议使用Docker
将打包后的文件发布
2.1.5 简单方式
可以直接拉取我上传的 docker 镜像 然后启动容器即可
1
| docker pull mosvex/eva-boot-admin
|
2.2 Client配置
客户端的配置也十分简单,分为如下步骤
2.2.1 引入依赖
1
| "de.codecentric:spring-boot-admin-starter-client:${boot_admin}",
|
2.2.2 项目配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| spring: boot: admin: client: url: http://192.168.10.166:19001/ username: eva password: *** instance: prefer-ip: true management: endpoints: web: exposure: include: '*' endpoint: health: show-details: ALWAYS server: address: 192.168.10.127
|
2.2.3 上线发布
启动客户端服务之后 访问Server
即可在应用墙看到客户端情况。