SpringBoot Admin 详解

SpringBoot Admin 详解

  • 一、Actuator 详解
    • 1.Actuator原生端点
      • 1.1 监控检查端点:health
      • 1.2 应用信息端点:info
      • 1.3 http调用记录端点:httptrace
      • 1.4 堆栈信息端点:heapdump
      • 1.5 线程信息端点:threaddump
      • 1.6 获取全量Bean的端点:beans
      • 1.7 条件自动配置端点:conditions
      • 1.8 配置属性端点:configprops
      • 1.9 追踪度量端点:metrics
      • 1.10 根据名称追踪度量端点:metrics/{name}
      • 1.11 获取全部环境端点:env
      • 1.12 根据名称获取环境属性端点:env/{name}
      • 1.13 审计事件端点:auditevents
      • 1.14 停止Actuator端点:shutdown
    • 2.使用Actuator
      • 2.1 引入依赖
      • 2.2 增加配置信息
      • 2.3 验证端点
      • 2.5 自定义根路径
  • 二、SpringBoot Admin 详解
    • 1.服务端搭建
      • 1.1 引入依赖
      • 1.2 启动类增加注解
      • 1.3 启动服务
    • 2.客户端搭建
      • 2.1 引入依赖
      • 2.2 增加application.yml配置
      • 2.3 启动客户端
  • 三、SpringBoot Admin功能展示
    • 1.功能介绍-细节
    • 2.功能介绍-环境
    • 3.功能介绍-类
    • 4.功能介绍-配置属性
    • 5.功能介绍-日志配置
    • 6.功能介绍-JVM
    • 7.功能介绍-映射

SpringBoot Admin是一个三方的监控和服务管理组件,常用于服务监控的检查,服务元信息获取,是一个轻量且简单的组件。他依赖于Actuator暴漏的接口完成大部分功能,Actuator是一个用于提供服务多种监控接口的组件。这里先总结Actuator的用法,再介绍SpringBoot Admin集成Actuator以后如何使用。

一、Actuator 详解

Actuator是一个可以快速集成在SpringBoot项目中的组件,他支持对单个项目暴露监控接口,同时还支持自定义的监控接口,方便我们进行自定义的一些信息监控,比如说health这个是用途最广范的接口,经常被用来做服务的健康检查,企业中有各种各样的监控组件,但无论使用何种监控组件都需要有一个接口对外提供健康信息展示,那health就可以做这个事情。

1.Actuator原生端点

所谓原生端点(Endpoint)就是指Actuator自带的监控接口,这些接口是最常用、最普遍的监控类接口,适用于大多数场景,一般这些场景是完全够用的了,除非有特殊场景,否则是无需自己定义端点信息的。下面根据这些监控接口的常用频率来由高到底进行说明。

1.1 监控检查端点:health

接口地址:/health
请求方式:GET
端点作用:验证服务是否健康,是否在线的接口,这个也是最常用的接口,一般对服务的监控监控都是使用该接口,SpringBoot项目基本都会使用该接口做健康监控。

1.2 应用信息端点:info

接口地址:/info
请求方式:GET
端点作用:获取自定义的info信息,使用时需要在配置文件增加info开头的配置信息,比如如下:

1.3 http调用记录端点:httptrace

接口地址:/httptrace
请求方式:GET
端点作用:默认显示最近100次的http调用记录,包含请求和响应

1.4 堆栈信息端点:heapdump

接口地址:/heapdump
请求方式:GET
端点地址:可以返回一份jvm的堆信息,这个功能和jvm参数的堆转存储快照类似

1.5 线程信息端点:threaddump

接口地址:/threaddump
请求方式:GET
端点作用:获取线程活动的信息

1.6 获取全量Bean的端点:beans

接口地址:/beans
请求方式:GET
端点作用:获取服务中全部的Bean的信息

1.7 条件自动配置端点:conditions

接口地址:/conditions
请求方式:GET
端点作用:用于显示系统中使用条件进行装配的信息的情况,常见的有ConditionalOnProperty等,只有满足某些条件才会进行操作,此端点用于显示此类的条件满足情况。

1.8 配置属性端点:configprops

接口地址:/configprops
请求方式:GET
端点作用:描述的是属性被Bean加载的信息

1.9 追踪度量端点:metrics

接口地址:/metrics
请求方式:GET
端点作用:内存、http等信息的追踪展示

1.10 根据名称追踪度量端点:metrics/{name}

接口地址:/metrics/{name}
请求方式:GET
端点作用:指定名称的展示

1.11 获取全部环境端点:env

接口地址:/env
请求方式:GET
端点作用:获取服务的全部环境信息

1.12 根据名称获取环境属性端点:env/{name}

接口地址:/env/{name}
请求方式:GET
端点作用:指定名称获取对应环境属性的值

1.13 审计事件端点:auditevents

接口地址:/auditevents
请求方式:GET
端点作用:显示应用的审计事件,比如认证失败等

1.14 停止Actuator端点:shutdown

接口地址:/shutdown
请求方式:POST
端点作用:用以关闭Actuator所在的应用服务,注意只有这个是POST,使用他可以不用进入服务器就实现应用的关闭,比如某个服务异常了,想要将这个服务从集群中剔除出去,就可以使用这个功能。

2.使用Actuator

这里使用一个SpringBoot项目进行测试Actuator的提供的这些接口。注意这个项目得是web项目。

2.1 引入依赖

这里需要至少引入web和Actuator的依赖


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.5.4</version>
</dependency>

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     <version>2.6.11</version>
 </dependency>

2.2 增加配置信息

如果不增加配置信息,上面的这些监控接口就只有个别的开启了,大部分是不可用的,比如health是开启的但也只展示在线信息,所以我们需要开启其他端点。下面的配置信息都有详细的注解,这里不做多余的解释了,解释详见配置上的注释,正常生产使用这些配置也完全够用了:

server:
  port: 8093

#  配置应用名称, 方便监控使用
spring:
  application:
    name: test-actuator
    version: 1.0.0


# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        # 配置需要暴露出去的端点,一般直接*暴露全部就行
        include: "*"
  endpoint:
    health:
      # health 默认只展示 是否在线,增加该配置后会展示更多信息
      show-details: ALWAYS
    shutdown:
      # 启用关闭应用的功能,不启用则无法关闭应用
      enabled: true
  info:
    env:
      # 开启info端点的配置支持,不开启info将无信息返回,即使配置了info也无信息
      enabled: true
# 自定义info端点信息,info端点获取的就是这里的信息
info:
  title: ${spring.application.name}服务
  version: ${spring.application.name}-${spring.application.version}
  description: ${spring.application.name}服务监控

2.3 验证端点

上面配置增加完以后就可以启动服务了,这里基本不会有任何意外,然后开始验证接口。

  • 验证health端点
    注意这里actuator是固定前缀,支持更改(生产如果处于安全考虑可以更改):

    http://localhost:8093/actuator/health
    

    health端点的信息如下,这里包含了在线状态服务器的ping状态,服务器的磁盘信息等。在这里插入图片描述

  • 验证info端点
    info端点的信息是自定义信息,这里验证是否返回的是我们自定义的信息

    http://localhost:8093/actuator/info
    

    可以看到返回的正式我们自定义的信息,这里信息可以随便指定,title、version等名称都是随便指定的。
    在这里插入图片描述

  • 验证beans端点
    这个是获取全量bean信息的端点

    http://localhost:8093/actuator/beans
    

    结果如下图,也没啥问题
    在这里插入图片描述

  • 验证shutdown端点
    这个接口需要使用POST方式进行调用

    http://localhost:8093/actuator/shutdown
    

    然后借助postman进行调用测试,结果如下:
    在这里插入图片描述
    然后观察应用程序,发现确实已经被关闭了:
    在这里插入图片描述

  • 验证jvm端快照端点
    这个可以用来观察生产实时的堆信息,还是有一些作用的。

    http://localhost:8093/actuator/heapdump
    

    请求后会直接下载一份堆信息,需要我们使用对应工具才可以打开,网上一堆这种在线工具,下面是执行截图:
    在这里插入图片描述
    可以随便找个在线工具打开看看,这里笔者用的是这个:https://heaphero.io/heap-index.jsp#header
    分析结果如下,这里不做jvm知识的拓展了,从下图可以看到已经正常分析出了堆的信息了,说明我们拿到的dump文件时可用的:
    在这里插入图片描述
    端点验证就不一一验证了。

2.5 自定义根路径

上面也提到过,Actuator是支持自定义根路径的,如果使用根路径会有一些安全隐患,比如别人通过抓包知道了你的接口地址,就可以使用Actuator的接口使用DOS进行攻击你的系统,这是有安全隐患的,解决这个办法有的是去集成认证,有的是更改默认地址,默认地址更改后就很难猜出来真正的端点地址了。所以这里建议生产更改默认的接口地址,如下:

# 暴露监控端点
management:
  endpoints:
    web:
      # 这是监控的默认根路径,支持自定义
      base-path: /observe

重启服务进行验证,如下,可见地址更改生效:
在这里插入图片描述

二、SpringBoot Admin 详解

SpringBoot Admin是一个在github上开元的社区项目,通过使用Actuator暴漏的端点来是实现项目的可视化监控和管理。SpringBoot Admin是一个简单易用的小组件,易上手,可以作为中小公司健康监控系统的使用是没有太大问题的。
SpringBoot Admin是一个BS架构,分为客户端和服务端,这里分别就进行介绍。

1.服务端搭建

服务端搭建也比较简单,只需要少量的配置就可以运行,首先我们需要导入所需服务端的依赖

1.1 引入依赖

这里需要引入web和admin-server两个依赖,admin监控的肯定是web服务,所以这里引入web依赖。

<!-- 版本保持与springboot统一即可 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.6.11</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.6.11</version>
</dependency>

1.2 启动类增加注解

这个也比较简单,直接启动类上增加一个注解即可,用以表示admin的服务端。

@EnableAdminServer

如下:
在这里插入图片描述

1.3 启动服务

只需要简单的两步导入依赖和增加注解即可开启一个服务端,服务启动基本不会有任何异常,服务启动完成以后,然后打开如下地址:

# applications 是默认地址
http://localhost:8094/applications

然后展示如下,此时没有客户端,所有目前这里没有任何信息,信息的展示需要等到客户端同样启动以后才会有展示:
在这里插入图片描述

2.客户端搭建

客户端搭建也很简单,只需要引入web依赖和admin的客户端依赖就行,注意客户端不需要重复引入Actuator的依赖,因为Admin的客户端已经默认引入了这个依赖。

2.1 引入依赖

<!-- 客户端依赖版本保持和服务端一致 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.6.11</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.6.11</version>
</dependency>

2.2 增加application.yml配置

客户端因为默认是集成了Actuator的,所以我们上面使用的Actuator的配置依然是可用的,只需要在原有的Actuator的配置基础上增加服务端地址的信息指定即可,客户端全部配置信息如下:

server:
  port: 8093

#  配置应用名称, 方便监控使用
spring:
  application:
    name: test-actuator
    version: 1.0.0
  boot:
    admin:
      client:
        # 指定admin-server的地址
        url:  http://localhost:8094


# 暴露监控端点
management:
  endpoints:
    web:
      exposure:
        # 配置需要暴露出去的端点,一般直接*暴露全部就行
        include: "*"
      # 这是监控的默认根路径,支持自定义
      base-path: /observe
  endpoint:
    health:
      # health 默认只展示 是否在线,增加该配置后会展示更多信息
      show-details: ALWAYS
    shutdown:
      # 启用关闭应用的功能,不启用则无法关闭应用
      enabled: true
  info:
    env:
      # 开启info端点的配置支持,即使配置了info也无信息
      enabled: true
# 自定以info端点信息,info端点获取的就是这里的信息
info:
  title: ${spring.application.name}服务
  version: ${spring.application.name}-${spring.application.version}
  description: ${spring.application.name}服务监控

2.3 启动客户端

添加完配置以后直接启动客户端服务就行了,客户端服务启动完成后就可以导服务端的页面中查看信息了,服务端地址:http://localhost:8094/applications
信息展示如下:
在这里插入图片描述
到这里客户端和服务端的搭建就全部完成了,以下介绍下admin的使用。

三、SpringBoot Admin功能展示

SpringBoot Admin其实就是将Actuator暴露的端点进行了可视化,这里大部分的接口都是Actuator提供的。
在admin-server的首页点击服务名,如下
在这里插入图片描述
然后会弹出如下的服务信息,这里继续点击服务名,即可进入到当前服务的监控页面了
在这里插入图片描述
点击后进入到下面的页面,几乎主要的功能都在这里了:
在这里插入图片描述
或者也可以从如下位置直接点击进入到上图的页面:
在这里插入图片描述

1.功能介绍-细节

细节这块的信息,仔细一看就会比较熟悉了,基础展示如下:
信息:展示的是info端点的信息。
监控:展示的就是health的信息
元数据:项目的启动时间
进程:项目的进程id使用的cpu等信息
线程:线程的总数与当前系统使用的线程数
垃圾回收:jvm垃圾回收的次数与耗时
内存heap:jvm堆使用信息
non heap:jvm栈的使用信息
在这里插入图片描述
在这里插入图片描述

2.功能介绍-环境

这里展示的是项目加载和使用的各种环境变量信息的key和value,使用的就是env端点,没啥特别需要说的
在这里插入图片描述

3.功能介绍-类

这里展示的是spring容器加载的类信息,其实就是beans端点,用来查看所有的加载的bean信息。
在这里插入图片描述

4.功能介绍-配置属性

这里其实就configprops端点在这里插入图片描述

5.功能介绍-日志配置

这里可以动态调整系统各个目录的日志级别,这个还是有用的,调整后实时生效

在这里插入图片描述

6.功能介绍-JVM

这里是heapdump和threaddump的信息,在这里可以看到线程和jvm堆的信息
在这里插入图片描述

7.功能介绍-映射

这个是mappings端点,用于展示接口和类之间的关系
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/408820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的萌宠宜家商城系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的萌宠宜家商城系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …

【黑马程序员】3、TypeScript常用类型_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 3、TypeScript常用类型 3.1 类型注解 …

【51单片机】想学会串口通信,你需要知道这些(串口通信实验前置知识)(13)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

Qt Android sdk配置报错解决

使用的jdk8总是失败&#xff0c;报错command tools run以及platform sdk等问题。后来主要是设置jdk版本为17&#xff0c;就配置生效了。Android sdk路径可以选用Android Studio自带的&#xff0c;但是也要在Qt中点击“设置SDK”按钮做必要的下载更新等。 编译器这里会自动检测到…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

探究全链路压力测试的含义与重要性

全链路压力测试是指对整个应用系统的各个环节或组件进行压力测试&#xff0c;以模拟实际生产环境中的用户负载和流量&#xff0c;评估系统在高负载条件下的性能表现。 1. 全链路压力测试的含义 全链路压力测试涉及系统的所有组件和环节&#xff0c;包括前端用户界面、应用服务器…

算法沉淀——动态规划之路径问题(leetcode真题剖析)

算法沉淀——动态规划之路径问题 01.不同路径02.不同路径 II03.珠宝的最高价值04.下降路径最小和05.最小路径和06.地下城游戏 01.不同路径 题目链接&#xff1a;https://leetcode.cn/problems/unique-paths/ 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图…

c++: 用c++语言对车辆进行建模

一 原理 1.1 阿克曼转向模型 转向半径:后轴中心点到原点O的距离 已知道转向半径,可以反求转向角。或者知道转向角,可以求出转向半径。 四个顶点的转向半径。 还要定义这两个参数 1.2 车辆运动的建模 运动写在大的while循环里。 绘制车辆的思路;(1)清

020 基于Spring Boot + Thymeleaf 实现的任务发布网站(源码+数据库)

部分代码地址&#xff1a; https://github.com/XinChennn/xc020-springboot-recruit 基于Spring Boot Thymeleaf 实现的任务发布网站&#xff08;源码数据库&#xff09; 一、系统介绍 雇主&#xff1a;登录、注册、发布任务、选择中标雇员、评价雇员雇员&#xff1a;登录、…

如何解决Nginx启动出现闪退问题?

哈喽&#xff0c;大家好&#xff0c;我是小浪。那么大家首次在启动nginx的时候&#xff0c;绝大部分同学会出现以下情况&#xff0c;就是我们双击nginx.exe文件之后&#xff0c;屏幕闪退一下就没了&#xff0c;然后我们访问localhost:8080提示404. 那么出现这种情况其实是我们…

【深度学习笔记】 3_13 丢弃法

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.13 丢弃法 除了前一节介绍的权重衰减以外&#xff0c;深度学习模型常常使用丢弃法&#xff08;dropout&#xff09;[1] 来应对过拟合…

“点击查看显示全文”遇到的超链接默认访问的问题

今天在做一个例子&#xff0c;就是很常见的点击展开全文。 我觉得这是一个很简单的效果&#xff0c;也就几行代码的事&#xff0c;结果点击了以后立刻隐藏不见&#xff0c;控制台代码也不报错&#xff0c;耽误了我很长时间&#xff0c;最后才发现问题出在超链接身上。 “展开全…

k8s-kubeapps部署 20

部署kubeapps应用&#xff0c;为Helm提供web UI界面管理&#xff1a; 下载最新版本的kubeapps并修改其values.yaml文件 下载并拉取所需镜像&#xff1a; 部署应用 添加解析 修改svc暴露方式为LoadBalancer 得到分配地址 访问http://192.168.182.102 授权并获取token 1.24前的…

osmnx笔记:从OpenStreetMap中提取点和边的shp文件(FMM文件准备内容)

1 导入库 import osmnx as ox import time from shapely.geometry import Polygon import os import numpy as np 2 提取Openstreetmap 的graph Gox.graph_from_place(Huangpu,Shanghai,China,network_typedrive,simplifyTrue) ox.plot_graph(G) 3 提取graph中的点和边 gdf…

pytest如何在类的方法之间共享变量?

在pytest中&#xff0c;setup_class是一个特殊的方法&#xff0c;它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时&#xff0c;你实际上是在修改类的一个实例属性。在Pyth…

《模仿游戏》:天才团队如何破解密码学之谜

引言 计算机科学相关的电影不少&#xff0c;有探索人工智能的《黑客帝国》、还有逻辑和结构学的《盗梦空间》、还有互联网创业的《社交网络》和《硅谷海盗》、还有探索虚拟世界的《源代码》&#xff0c;更甚有国产计算机科学科幻启蒙儿童电视剧《快乐星球》。上述电影充满科技和…

函数——递归6(c++)

角谷猜想 题目描述 日本一位中学生发现一个奇妙的 定理&#xff0c;请角谷教授证明&#xff0c;而教授 无能为力&#xff0c;于是产生了角谷猜想。 猜想的内容&#xff1a;任给一个自然数&#xff0c; 若为偶数则除以2&#xff0c;若为奇数则乘 3加1&#xff0c;得到一个新的…

JDK8新特性全解析:Java8变革之旅

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库&#xff0c;终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手&#xff0c;按照 MySQL &#xff0c; Nacos &#xff0c; Redis &#xff0c; Nginx &#xff0c; Gateway &#xff0c; Auth &#xff0c;…

测试圈的网红工具:Jmeter到底难在哪里?!

小欧的公司最近推出了一款在线购物应用&#xff0c;吸引了大量用户。然而随着用户数量的增加&#xff0c;应用的性能开始出现问题。用户抱怨说购物过程中页面加载缓慢&#xff0c;甚至有时候无法完成订单&#xff0c;小欧作为负责人员迫切需要找到解决方案。 在学习JMeter之前…
最新文章