文章目录
  1. 1.概述#
  2. 2.开始#
    1. 2.1 Server端搭建#
      1. 2.1.1 引入依赖#
      2. 2.1.2 配置注解#
      3. 2.1.3 项目配置#
      4. 2.1.4 上线发布#
    2. 2.2 Client配置#
      1. 2.2.1 引入依赖#
      2. 2.2.2 项目配置#
      3. 2.2.3 上线发布#

使用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由两部分组成ServerClient,一个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 {
// @formatter:off
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();
// @formatter:on
}
}

2.1.4 上线发布#

建议使用Docker将打包后的文件发布

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/
# Server鉴权需要的用户名/密码 这里不需要引号
username: eva
password: ***
#是否使用注册的ip地址来取代上述各个url中hostname的值,默认值是false(也就是说默认情况下上述各个url中会使用hostname的值,比如我的电脑的hostname为p-v-9)。如果设置了server.address或者management.address的话ip地址就是该值,如果没有设置这两个属性的话ip地址值是InetAddress.getLocalHost()的值。
# 注意 不配置此项使用默认hostname可能会出现 `Name or service not known`异常
instance:
prefer-ip: true
management:
endpoints:
web:
exposure:
# 暴露所有端口
include: '*'
endpoint:
health:
show-details: ALWAYS
# 本机ip 对应上面instace:prefeer-ip配置说明
server:
address: 192.168.10.127

2.2.3 上线发布#

​ 启动客户端服务之后 访问Server即可在应用墙看到客户端情况。

支持一下
您得支持,是我前进的动力.