SpringBoot Admin监控平台《一》平台搭建及基础介绍

news2024/11/25 6:36:00

一、SpringBoot Admin简介

1.1.简介

Spring Boot Admin是一个管理和监控Spring Boot应用程序的开源项目,在对单一应用服务监控的同时也提供了集群监控方案,支持通过eureka、consul、zookeeper等注册中心的方式实现多服务监控与管理。Spring Boot Admin UI部分使用Vue JS将数据展示在前端。

Spring Boot Admin分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client)两个组件:

  • spring-boot-admin-server通过采集actuator端点数据显示在spring-boot-admin-ui上,已知的端点几乎都有进行采集。
  • spring-boot-admin-client是对Actuator的封装,提供应用系统的性能监控数据。此外,还可以通过spring-boot-admin动态切换日志级别、导出日志、导出heapdump、监控各项性能指标等。

Spring Boot Admin服务器端负责收集各个客户的数据。各台客户端配置服务器地址,启动后注册到服务器。服务器不停地请求客户端的信息(通过Actuator接口)。具体架构如下图所示。

image.png

上图为Spring Boot Admin的整体架构,在每个Spring Boot应用程序上增加Spring Boot Admin Client组件。这样每个Spring Boot应用即Admin客户端,Admin服务端通过请求Admin客户端的接口收集所有的Spring Boot应用信息并进行数据呈现,从而实现Spring Boot应用监控

 换句话说,监控平台就像老师,各SpringBoot就像学生,老师(监控平台)可以收集学生(客户端)的成绩(信息),来判断学生的状态,彼此关系是一对多的关系。

1.2.功能 

监控平台有多中功能,主要包括显示应用程序的监控状态、应用程序上下线监控、查看 JVM,线程信息、可视化的查看日志以及下载日志文件、动态切换日志级别、Http 请求信息跟踪等等

二、监控平台搭建 

2.1.pom依赖 

        创建新的Spring Boot项目,在新建的项目中添加Spring Boot Admin服务器端的依赖JAR包:spring-boot-admin-starter-server。 

项目创建就不具体介绍了,不熟悉的可以参考SpringBoot项目搭建 

版本说明:Spring Boot 2.x=Spring Boot Admin 2.x  (比如Spring Boot 2.3.x 可以用Spring Boot Admin 2.3.x) 

Spring版本: 

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.6.RELEASE</version>
</parent>

服务器端依赖: 

<!-- 监控平台依赖  -->
<dependency>
      <groupId>de.codecentric</groupId>
      <artifactId>spring-boot-admin-starter-server</artifactId>
      <version>2.3.1</version>
</dependency>


<!--   添加spring-boot-starter-web是为了让应用处于启动状态。-->
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
</dependency>

我上面给的是项目搭建完毕后,再在pom文件里添加依赖,如果是创建项目时选择依赖,要仔细选择,平台依赖和客户端依赖类似,要注意区分,具体如下

 2.2.配置文件

server.port=8000
spring.application.name=admin-test
management.endpoint.health.show-details=always

 

 2.3.主启动类添加注解 @EnableAdminServer

2.4.浏览器登录URL: localhost:8000 

        URL是IP+端口,端口用自己定义的。下面是在没有客户端的情况下的初始界面 

从Admin服务端的启动界面可以看到,Applications页面会展示应用数量、实例数量和状态3个信息。 

三、客户端的搭建 

3.1.pom依赖 

创建新的Spring Boot项目,在新建的项目中添加Spring Boot Admin客户端的依赖JAR包:spring-boot-admin-starter-server。 

Spring版本: 

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

 客户端依赖:

<dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-client</artifactId>
     <version>2.3.1</version>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-admin-starter-client会自动添加Actuator相关依赖,所以这里不需要重复添加Actuator的相关依赖。 

 

 3.2.配置文件

server.port=9999
spring.application.name=clientTest1
spring.boot.admin.client.url=http://localhost:8000

配置说明:

  • server.port:当前应用设置端口为8001。
  • spring.application.name:设置Application名称,其默认名称都是spring-boot-application。
  • spring.boot.admin.client.url:意思是被监控的信息要发到哪个服务器,这里配置Admin服务器的地址。

 3.3刷新监控平台

启动客户端并刷新监控平台页面... 

四、监控平台页面说明 

4.1.主页面 

启动client了,等待几秒钟,刷新刚才打开的页面 

点击【应用墙】可以看到如下图所示界面,如果有多个客户端,界面会出现多个6边型 

  • 绿色:健康
  • 灰色:连接客户端健康信息超时(超过10s)
  • 红色:就能看到具体异常信息 

客户端启动之后,Admin服务器界面的Application数量会增加。单击Application下的数值可以查看完整的应用信息。页面会展示被监控的应用列表,单击应用名称会进入此应用的详细监控信息页面。 

这个页面会实时显示应用的运行监控信息,包括之前介绍的Actuator所有的端点数据信息。

Spring Boot Admin以图形化的形式展示了应用的各项信息,这些信息大多来自于Spring Boot Actuator提供的接口。利用图形化的形式很容易看到应用的各项参数变化,甚至有些页面还可以进行一些配置操作,比如改变打印日志的级别等。

 4.2.监控界面

 4.2.1.接口信息

 4.2.2.JVM信息

可以看到各个时间点,各个线程的工作状态

 4.2.3.日志

 以客户端2为示例,在客户端项目的resources目录下创建logback.xml文件,添加日志信息

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml" />
	<!-- pro -->
	<property name="LOG_PATH" value="/data/jar/j-client-test2/log" />
	<!-- 按照每天生成日志文件 -->
	<appender name="INFO_FILE"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日志文件输出的文件名 -->
			<fileNamePattern>${LOG_PATH}/client-test2.%d{yyyy-MM-dd}.%i.log	</fileNamePattern>
			<!--日志文件保留天数 -->
			<maxHistory>30</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<!-- or whenever the file size reaches 100MB -->
				<maxFileSize>200MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</layout>
	</appender>

	<logger name="com.apache.ibatis" level="TRACE"/>
	<logger name="java.sql.Connection" level="DEBUG"/>
	<logger name="java.sql.Statement" level="DEBUG"/>
	<logger name="java.sql.PreparedStatement" level="DEBUG"/>
	<logger name="com.alibaba.druid" level="ERROR" />
	<logger name="com.task" level="DEBUG" />

	<root level="INFO">
		<appender-ref ref="INFO_FILE" />
	</root>
</configuration>

 所需pom依赖

<!-- log 日志打印 -->
<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.21</version>
</dependency>


<!-- logback日志框架 -->
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-core</artifactId>
	<version>1.1.7</version>
</dependency>
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.1.7</version>
</dependency>

刷新Maven,重启项目后,界面如下所示

勾选【已配置】选项,可以看到该项目已经配置的日志配置 

配置文件添加日志路径 

##与logback中路径保持一致
management.endpoint.logfile.external-file=/data/jar/j-client-test2/log/client-test2.2023-09-05.0.log


##logback文件中,日志文件命名是动态的,但我这里是写死的仅用来测试,后续需要修改

 刷新监控平台界面,可以看到日志信息

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

npm修改为国内镜像

npm config get registry 查看下载地址&#xff0c;默认是https://registry.npmjs.org/ 这是国外的地址&#xff0c;npm下载很慢 npm config set registry https://registry.npmmirror.com/ 使用此指令&#xff0c;修改为淘宝镜像&#xff0c;输入指令后检查是否修改成功 …

02-Tomcat打破双亲委派机制

Tomcat 如果使用默认的双亲委派类加载机制行不行&#xff1f; 我们思考一下&#xff1a;Tomcat是个web容器&#xff0c; 那么它要解决什么问题&#xff1a; 一个web容器可能需要部署两个应用程序&#xff0c;不同的应用程序可能会依赖同一个第三方类库的不同版本&#xff0c;…

配电网智能软开关(sop)规划模型matlab

目录 1 主要内容 2 部分程序 3 程序结果 1 主要内容 该程序参考文献《基于改进灵敏度分析的有源配电网智能软开关优化配置》&#xff0c;采用二阶锥算法&#xff0c;以改进的IEEE33节点配电系统模型作为分析对象&#xff0c;以联络开关位置作为sop安装备选位置&#xff0c;以…

最适合运动的耳机类型是什么、最适合运动的耳机推荐

运动和音乐天生就是绝佳的组合&#xff0c;因此对于许多运动爱好者来说&#xff0c;耳机一直都是必备的装备。通过音乐&#xff0c;我们可以带着节奏感去探索世界&#xff0c;让我们的运动过程更加有动力。 一款优秀的运动耳机需要具备舒适的佩戴感、稳固性和防水性能。作为一位…

实践和项目:解决实际问题时,选择合适的数据结构和算法

文章目录 选择合适的数据结构数组链表栈队列树图哈希表 选择合适的算法实践和项目 &#x1f389;欢迎来到数据结构学习专栏~实践和项目&#xff1a;解决实际问题时&#xff0c;选择合适的数据结构和算法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT…

水处理行业污水处理厂电能质量监测与治理系统解决方案-安科瑞黄安南

摘要&#xff1a;在水处理行业供配电系统中&#xff0c;涉及曝气风机、提升泵、污泥脱水设备等感性负荷设备&#xff0c;导致异步电动机产生较多无功功率和大量的谐波&#xff0c;使部分设备表现出轻载或不满载运行状况降低功率因数&#xff0c;以及谐波对配电系统、负载产生较…

leetcode 234. 回文链表

2023.9.5 本题先将链表的节点值移到数组中&#xff0c;再用双指针去判断该数组是否为回文的即可。 代码如下&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* …

ST表(转载自其它博主)

文章目录 一、简介二、Leetcode题目补充1. 2023/9/6 更新 一、简介 ST表&#xff1a;https://zhuanlan.zhihu.com/p/123360481 二、Leetcode题目补充 1. 2023/9/6 更新 239. 滑动窗口最大值 class Solution {public int[] maxSlidingWindow(int[] nums, int k) {//记录数…

vue3项目,点击分页器,列表接口请求两次的问题

接手别人做的项目&#xff0c;出现了一个分页器bug&#xff0c;vue3element plus&#xff0c;记录一下。 点击分页器&#xff0c;却出现了调用两次列表接口的情况&#xff0c;并且第二次请求&#xff0c;分页器的pageNum自动变成1&#xff0c;这样就导致了分页器bug&#xff0…

Git 命令行查看仓库信息

目录 查看系统config ​编辑查看当前用户&#xff08;global&#xff09;配置 查看当前仓库配置信息 查看系统config git config --system --list 1 查看当前用户&#xff08;global&#xff09;配置 git config --global --list 1 查到的是email , name 等ssl签名信息&a…

不再产生火花:光耦合器继电器如何确保您的电路安全

近年来&#xff0c;对电子设备和电路的需求激增&#xff0c;推动了对更安全、更可靠的组件的需求。确保电路安全的关键元件之一是光耦继电器。这些不起眼的设备在保护电路和防止潜在危险情况&#xff08;例如火花和电气过载&#xff09;方面发挥着重要作用。 什么是光耦继电器…

Zoom正式发布类ChatGPT产品—AI Companion

9月6日&#xff0c;全球视频会议领导者Zoom在官网宣布&#xff0c;正式发布生成式AI助手——AI Companion。 AI Companion提供了与ChatGPT类似的功能&#xff0c;包括根据文本对话起草各种内容&#xff0c;自动生成会议摘要&#xff0c;自动回答会议相关问题等&#xff0c;以帮…

74HC138 , 38译码器

简介 74HC138D 是一种三通道输入、八通道输出译码器&#xff0c;主要应用于消费类电子产品

PMD 检查java代码:未使用的赋值(UnusedAssignment )

https://docs.pmd-code.org/latest/pmd_rules_java_bestpractices.html#unusedassignment 对一个变量赋了值&#xff0c;但这个值在被覆盖前从来没有用到&#xff0c;或者代码运行超出变量的作用范围还没有用到&#xff0c;就认为是未被使用的赋值。包含下面的情况&#xff1a…

一个产品级MCU菜单框架设计

分享一个用单色屏做的菜单框架。代码托管在github&#xff1a; https://github.com/wujique/stm32f407/tree/sw_arch 1、概述 本处所说的菜单是用在128*64这种小屏幕的菜单&#xff0c;例如下面这种&#xff0c;不是彩屏上的GUI。 2、菜单框架设计 作为一个底层驱动工程师&a…

Hadoop的分布式文件存储系统HDFS组件的使用

Hadoop的第一个核心组件&#xff1a;HDFS&#xff08;分布式文件存储系统&#xff09; 一、HDFS的组成1、NameNode2、DataNode3、SecondaryNameNode4、客户端&#xff1a;命令行/Java API 二、HDFS的基本使用1、命令行操作2、Java API操作 三、HDFS的工作流程问题&#xff08;H…

递归算法学习——N皇后问题,单词搜索

目录 ​编辑 一&#xff0c;N皇后问题 1.题意 2.解释 3.题目接口 4.解题思路及代码 二&#xff0c;单词搜索 1.题意 2.解释 3.题目接口 4.思路及代码 一&#xff0c;N皇后问题 1.题意 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上…

阿里云服务器怎么退款?云服务器退款流程图

阿里云服务器如何退款&#xff1f;云服务器在哪申请退款&#xff1f;在用户中心订单管理中的退订管理中退款&#xff0c;阿里云百科分享阿里云服务器退款流程&#xff0c;包括申请退款入口、云服务器退款限制条件、退款多久到账等详细说明&#xff1a; 目录 阿里云服务器退款…

I/O系统:I/O设备,I/O接口,I/O端口的编址,I/O指令、通道指令,I/O控制方式 ,补充:中断

I/O&#xff1a;Input / Output&#xff0c;即输入/输出。 I/O系统一般由I/O硬件&#xff08;I/O设备&#xff0c;I/O接口&#xff0c;I/O总线等&#xff09;和I/O软件&#xff08;驱动程序&#xff0c;用户程序&#xff0c;管理程序&#xff0c;升级补丁等&#xff09;构成。…

基于sd的模特换装

这个领域的核心就是怎么把商品展示出来&#xff0c;商品本身不能发生变化&#xff0c;细节不能乱&#xff0c;模特换装或者虚拟换装&#xff0c;核心不在人&#xff0c;而在于商品&#xff0c;阿里塔玑这种核心在于怎么把平面的2D商品转成一个3D商品图&#xff0c;怎么让模特把…