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

一、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文件中,日志文件命名是动态的,但我这里是写死的仅用来测试,后续需要修改

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

猜你喜欢

转载自blog.csdn.net/weixin_52255395/article/details/132691911
今日推荐