首页 > 其他分享 >SpringBoot 搭建和使用图形化监控界面

SpringBoot 搭建和使用图形化监控界面

时间:2022-08-20 15:15:20浏览次数:106  
标签:界面 SpringBoot Admin Spring 监控 图形化 服务端 客户端

我们开发好的 SpringBoot 服务发布到公网上,肯定希望能够对其状态和资源消耗情况进行监控,特别是对每个接口访问情况的统计,以便在发生问题时能够快速排查和分析并解决问题。尤其是当 SpringBoot 服务比较多时,监控工作就尤为重要。

Spring Boot Admin 组件是第三方开发的一款非常实用的专门针对 SpringBoot 服务进行图形化监控的组件,它分为客户端组件和服务端组件。对于我们开发的 SpringBoot 业务服务,可以导入客户端组件,然后我们再专门开发一个 SpringBoot 程序引入服务端组件。客户端组件负责收集 SpringBoot 业务服务的相关监控信息,并将其发送给服务端组件,通过访问 SpringBoot 服务端提供的图形化界面,就可以轻松监控所有 SpringBoot 客户端服务。

Spring Boot Admin 组件的使用和图像化监控界面的搭建,非常简单,真的非常简单!!!

话不多说,我们还是通过具体的 Demo 要演示吧,在本篇博客的最后会提供源代码的下载。


一、搭建工程

我们搭建一个空的工程,然后在其下面创建 3 个 SpringBoot 工程:

  • 1个服务端工程:用于接收客户端收集并发送过来的监控信息,并进行图形化展示。

  • 2个客户端工程:用于在 SpringBoot 运行过程中收集监控信息,并发送给服务端。

有关 SpringBoot 工程搭建详细过程,这里不再进行赘述,可以参考前面发面的博客,这里只列出最关键的细节。

SpringBoot Admin 服务端工程搭建时,勾选了 Spring Web 和 Spring Boot Admin Server

image

客户端工程搭建时,勾选了 Spring Web 和 Spring Boot Admin Client

image

最终搭建好的工程结构如下所示:

image

工程创建好之后,我查看一下服务端和客户端的 pom 文件,跟 Spring Boot Admin 有关的 jar 包如下:

<!--Spring Boot Admin 服务端导入的 jar 包-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<!--Spring Boot Admin 客户端导入的 jar 包-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

二、服务端配置

Spring Boot Admin 的服务端配置非常简单,只需要在启动类上添加一个注解 @EnableAdminServer 即可。

package com.jobs.springbootserver;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//添加 Spring Boot Admin 启用注解 
@EnableAdminServer
@SpringBootApplication
public class SpringBootServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootServerApplication.class, args);
    }
}

由于是在同一台机器上运行 Spring Boot Admin 的服务端和客户端,因此需要将 SpringBoot 配置为不同的端口

# 在 application.yml 中配置启动端口
# 配置 SpringBoot Admin Server 的启动端口
server:
  port: 9090

三、客户端配置

本博客的 Demo 故意做了 2 个 SpringBoot 客户端程序,目的在于让后续的图形化监控界面中展示多个客户端的监控信息。

我们拿其中一个 SpringBoot 客户端进行举例,比如就拿 SpringBootClient1 来进行代码和配置演示。

对于 SpringBoot 客户端来说,主要就是对 application.yml 进行配置,具体如下:

# 配置第一个 SpringBoot 客户端访问端口
server:
  port: 8081

# 配置 SpringBoot Admin Server 的地址
# 用于将自身状态监控信息发送给 SpringBoot Admin Server
spring:
  boot:
    admin:
      client:
        url: http://localhost:9090
  # 应用程序名称(多个 SpringBoot 程序,可以配置相同的应用程序名称)
  application:
    name: SpringBootClient1

# 收集当前 SpringBoot 的所有健康检查信息
management:
  endpoint:
    health:
      show-details: always
  # 将当前 SpringBoot 的所有监控端点暴露出来
  endpoints:
    web:
      exposure:
        include: "*"

由于 SpringBoot 客户端一般都是我们的业务实现,因此这里提供一个接口作为示例。

package com.jobs.springbootclient1.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/test1")
@RestController
public class Test1Controller {

    @RequestMapping("/getdata")
    public String GetData() {
        return "Test1 GetData OK...";
    }
}

ok,到此为止,客户端和服务端就配置完了,对于 SpringBootClient2 的配置和编码也是一样的,这里不再赘述。


四、图形化监控界面

启动 Spring Boot Admin 的服务端和 2 个客户端,由于服务端配置的端口是 9090,因此访问 localhost:9090 查看监控界面。

image

在界面可以发现 2 个 SpringBoot 客户端服务,比如点击 SpringBootClient1 可以进入其监控界面:

image

滚动条往下拉,还能看到 SpringBootClient1 的进程、线程、垃圾回收、内存等相关统计信息。

image

在左侧选择【性能】选项卡,在右侧顶部下拉列表中选择【http.server.requests】,然后可以在 uri 下拉框中选择具体的接口(必须是曾经访问过的接口,才能在 uri 下拉框中找到),然后进行添加。在下方的列表中,就会对所关注的接口进行访问次数、最小时间、最大时间等信息进行统计。

image

当然图形化监控界面,功能很多很强大,毕竟界面是中文,大家可以到处点击浏览一下,很容易看明白监控的内容。



好了,就到这里吧,本篇博客主要介绍了 Spring Boot Admin 图形化监控界面的搭建和简单实用,希望对大家有用。

本篇博客的源代码下载地址为:https://files.cnblogs.com/files/blogs/699532/SpringBootMonitor.zip


标签:界面,SpringBoot,Admin,Spring,监控,图形化,服务端,客户端
From: https://www.cnblogs.com/studyjobs/p/16607740.html

相关文章

  • 聊聊@SpringBootApplication注解
    @SpringBootApplication其实就是以下三个注解的总和@Configuration: 用于定义一个配置类@EnableAutoConfiguration :SpringBoot会自动根据你jar包的依赖来自动配置项......
  • 基于SpringBoot的SSMP整合
    前言实体类开发————使用Lombok快速制作实体类Mapper开发————整合MyBatisPlus,制作数据层测试Service开发————基于MyBatisPlus进行增量开发,制作业务层测试......
  • SpringBoot整合Redis实现常用功能
    SpringBoot整合Redis实现常用功能建议大小伙们,在写业务的时候,提前画好流程图,思路会清晰很多。文末有解决缓存穿透和击穿的通用工具类。1登陆功能我想,登陆功能......
  • IDEA初始化创建SpringBoot项目
    创建SpringBoot打开新建项目配置项目基本需求其中URL改成:start.springboot.io创建完成后等待依赖包下载下载完成之后点击右侧Maven中的Lifecycle-install进行更新......
  • SpringBoot中调用Kafka
    Kafka实战——在SpringBoot中的应用官网文档链接1.pom引用 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spri......
  • SpringBoot集成Swagger
    一、pom.xml中引入如下依赖:<!--swagger2--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</arti......
  • SpringBoot-常用配置类
    1.WebMvcConfigMVC的配置类需要继承WebMvcConfigurationSupport类,通过重写方法来实现需要的功能。自定义的对象映射器,设置序列化或反序列化时格式转换。例如:解决了MP雪......
  • SpringBoot 整合flyway
    目录【pom.xml】【启动类】【配置属性类】【配置类】【配置文件】【IDEA插件支持】【参考文章】前言:本文章专用于因版本问题导致springboot整合flyway不成功无法自动迁移......
  • SpringBoot简介
    SpringBoot简介回顾什么是SpringSpring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:RodJohnson 。Spring是为了解决企业级应用开发的复杂性而创建的,简......
  • 关于SpringBoot整合redis使用Lettuce客户端超时问题
    问题起因使用到Lettuce连接redis,一段时间后不操作,再去操作redis,会报连接超时错误,在其重连后又可使用。原因是:Lettuce自适应拓扑刷新(Adaptiveupdates)与定时拓扑刷新(Peri......