文章目录
  1. 1.概述
  2. 2.开始
    1. 2.1 Server端搭建
      1. 2.1.1 引入依赖
      2. 2.1.2 配置注解
      3. 2.1.3 项目配置
      4. 2.1.4 上线发布
      5. 2.1.5 简单方式
    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.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/
# 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即可在应用墙看到客户端情况。

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