SpringBootAdmin是一个针对 Spring Boot 的 Actuator 接口进行 UI 美化封装的监控工具,它可以在列表中浏览所有被监控 spring-boot 项目的基本信息、详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等。可分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用http通讯方式实现数据交互。服务端server需要单独启动一个服务,而客户端client只需要集成到各个微服务中。

1、初识SpringBootAdmin

首先我们需要了解到Spring Boot Admin应用程序是能够提供以下功能供我们使用:

  1. 显示健康状况
  2. 显示详细信息
  3. JVM和内存指标
  4. micrometer.io指标
  5. 数据源指标
  6. 缓存指标
  7. 显示内部编号
  8. 关注并下载日志文件
  9. 查看JVM系统和环境属性
  10. 查看Spring Boot配置属性
  11. 支持Spring Cloud的可发布/ env-&/ refresh-endpoint
  12. 轻松的日志级别管理
  13. 与JMX-beans交互
  14. 查看线程转储
  15. 查看http-traces
  16. 查看审核事件
  17. 查看http端点
  18. 查看预定的任务
  19. 查看和删除活动会话(使用spring-session)
  20. 查看Flyway / Liquibase数据库迁移
  21. 下载heapdump
  22. 状态更改通知(通过电子邮件,Slack,Hipchat等)
  23. 状态更改的事件日志(非持久性)

2、搭建服务端--POM文件中添加相关依赖

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.5.1</version>
</dependency>

3、修改服务端application启动类

在咱们启动类上面新增@EnableAdminServer注解,进行启用SpringBootAdminServer服务端

@SpringBootApplication
@EnableAdminServer
public class BootAdminServerApplication { public static void main(String[] args) {
SpringApplication.run(BootAdminServerApplication.class, args);
}
}

4、配置security安全信息

在application.properties文件中新增以下配置信息。

# 应用程序端口
server.port=8085
# 配置一个账号和密码
spring.security.user.name=admin
spring.security.user.password=admin

初始化SecuritySecureConfig配置(如未初始化是看不到带SpringBootAdmin Logo登录页面的)

    @Configuration
public static 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();
}
}

5、启动server服务端

服务启动后,在浏览器中输入以下地址。我们是可以看见对应登录页面,对应账号密码就是咱们在properties文件中配置的。

http://127.0.0.1:8085/login

登录后可以看到应用列表数量是空的,此时咱们需要开始搭建咱们的Client客户端了。

6、搭建client客户端

在pom文件中新增以下依赖信息。(注意版本要与server端保持一致)

<!-- SpringBootAdmin管控台 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.5.1</version>
</dependency>

修改properties文件

spring.boot.admin.client.url=http://127.0.0.1:8085
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
spring.application.name=spring-boot-application
management.endpoints.web.exposure.include=*

spring.boot.admin.client.url 指向我们上面服务端的项目接口路径。management.endpoints.web.exposure.include 表示将所有端口都暴露出来,可以被监控到。spring.application.name 表示改项目在spring-boot-admin 上的的显示名称。spring.boot.admin.client.username 和password 就是设置的用户名和密码了,这里需要注意的是,如果admin-server 中没有集成 security 的话,不用配置用户名和密码也可以注册进去,在服务端可以监控到,但如果admin-server 集成了security,就需要保证client 中配置的用户名和server 中配置的用户名密码保持一致。

把client客户端启动后,会自动注册到咱们server服务端,咱们可以通过server服务端应用墙找到对应服务查看详细指标信息。(题外话:期间博主是有遇到客户端启动后,服务端无法采集到对应指标信息。原因是由于client客户端有配置security,没有给对应探针接口放行。如大家客户端有用到security的话,需要在security配置中放行以下两个接口信息。)

// 对应匿名+已授权均可访问
.antMatchers("/actuator/**","/instances").permitAll()

SpringBoot快速集成SpringBootAdmin管控台监控服务的更多相关文章

  1. 十三、springboot 优雅集成spring-boot-admin 实现程序监控

    前言 我们知道项目的监控是尤为重要的,但是我们如果用jdk 自带的jconsole 和jvisualvm 的话会非常繁琐,且界面不是很友好.之前我们使用了spring boot 项目,但是都没有对项目 ...

  2. springboot快速集成swagger

    今天技术总监说:小明,我们本次3.0改造,使用swagger2.0作为前后端分离的接口规范,它可以一键生成前后端的API,一劳永逸--小明:??? Spring Boot 框架是目前非常流行的微服务框 ...

  3. 「Elasticsearch」SpringBoot快速集成ES

    Elastic Search 的底层是开源库 Lucene.但是Lucene的使用门槛比较高,必须自己写代码去调用它的接口.而Elastic Search的出现正是为了解决了这个问题,它是 Lucen ...

  4. SpringBoot 快速集成 Elastic Job

    一.引入依赖 <dependency> <groupId>com.github.kuhn-he</groupId> <artifactId>elasti ...

  5. SpringBoot(七):集成DataSource 与 Druid监控配置

    绑定DataSource:Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource,Druid是Java语言中最好的数据库连接池,并且能够提供 ...

  6. SpringBoot系列之集成Druid配置数据源监控

    SpringBoot系列之集成Druid配置数据源监控 继上一篇博客SpringBoot系列之JDBC数据访问之后,本博客再介绍数据库连接池框架Druid的使用 实验环境准备: Maven Intel ...

  7. SpringBoot 快速构建微服务体系 知识点总结

    可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...

  8. spring-boot-route(十九)spring-boot-admin监控服务

    SpringBootAdmin不是Spring官方提供的模块,它包含了Client和Server两部分.server部分提供了用户管理界面,client即为被监控的服务.client需要注册到serv ...

  9. Spring Boot 微服务应用集成Prometheus + Grafana 实现监控告警

    Spring Boot 微服务应用集成Prometheus + Grafana 实现监控告警 一.添加依赖 1.1 Actuator 的 /prometheus端点 二.Prometheus 配置 部 ...

随机推荐

  1. Genymotion模拟器安装ARM架构编译应用失败解决方案

    我们在安装一些应用到Genymotion模拟器会提示:adb: failed to install xx.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: ...

  2. Linux扩展分区和文件系统

    磁盘分区 linux也与windows一样,为了使用全部的磁盘空间,需要先对磁盘分区:如果所有分区的总容量小于磁盘容量,说明磁盘还有未分配空间,这个时候会对磁盘造成浪费.需要增加一个新的分区来将全部空 ...

  3. for,while,until三种循环

    目录 一.echo命令-改变输出字符串或者提取shell变量的值 1.1..格式 2.2.常用参数 二.for循环语句 2.1.for循环结构 示例1 示例2 三.while循环语句结构 示例1 示例 ...

  4. VS2019 +MySQL+EntityFramework 使用配置与坑点避免随记

    一.安装运行环境 首先我们到mysql的官方网站上下载 mysql-installer-community-8.0.26.0 ,或者其他特定版本,通过它我们可以先将 mysql-for-visuals ...

  5. 工具idea 基于maven 创建springMVC项目

    SpringMVC Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制器一般不 ...

  6. 官宣 .NET MAUI 预览版 6

    最近,我们发布了.NET 多平台应用程序UI (MAUI)的最新进展. 在此版本中,我们全力支持Visual Studio 2022 预览版2.这也标志着我们首次将.NET MAUI 作为工作负载安装 ...

  7. null是对象吗?

    null是基本数据类型但是typeof null为object,这是因为在js存储中对象是以000开头的,而null是一个空,相当于全0,所以typeof null也是object 在js中,变量由类 ...

  8. Linux线程同步之读写锁(rwlock)

    读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 和 ...

  9. Swagger在线文档使用教程

    springboot整合Swagger2 1.首先创建一个springboot工程,在pom文件内导入依赖   <!--swagger依赖-->      <!--Swagger2- ...

  10. Spring源码浅析之bean实例的创建过程(一)

    在之前的文章内容中,简单介绍了bean定义的加载过程,下面这篇的主要内容就是bean实例的创建过程. bean实例的创建方式 ApplicationContext context = new Clas ...