• 08、SpringCloud之SpringBoot-Admin监控组件学习笔记


    前言

    本节配套案例代码:Gitee仓库Github仓库

    所有博客文件目录索引:博客目录索引(持续更新)

    学习视频:动力节点最新SpringCloud视频教程|最适合自学的springcloud+springcloudAlibaba

    PS:本章节中部分图片是直接引用学习课程课件,如有侵权,请联系删除。


    一、认识SpringBoot Admin组件

    介绍:Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界

    面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。

    主要的功能点有

    • 显示应用程序的监控状态
    • 应用程序上下线监控
    • 查看 JVM,线程信息
    • 可视化的查看日志以及下载日志文件
    • 动态切换日志级别
    • Http 请求信息跟踪
    • 其他功能点击 https://github.com/codecentric/spring-boot-admin 更多了解 Spring-boot-admin。

    单体or分布式服务集成:SpringBoot Admin 分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用http通讯方式实现数据交互;单体项目中需要整合spring-boot-admin-client才能让应用被监控。在SpringCloud项目中,spring-boot-admin-server 是直接从注册中心抓取应用信息,不需要每个微服务应用整合spring-boot-admin-client就可以实现应用的管理和监控。

    搭建服务流程说明

    • admin-server admin 监控服务
    • admin-order amdin 客户端服务

    二、实战案例1、SpringCloud项目集成SpringBoot Admin

    2.1、分布式下监控图示

    在分布式中,我们需要单独创建一个admin-server服务,若是其想要获取到所有的服务实例信息,那么我们就需要将其注册到注册中心中即可获取到所有的服务信息。

    那么此时admin服务如何检测各个实例呢?

    • 那么在针对想要被监控的服务中引入依赖spring-boot-starter-actuator,并且添加management的yaml配置。

    image-20220720195848661

    2.2、搭建admin-server服务

    当前服务环境:SpringBoot:2.3.12.RELEASE、spring-cloud:Hoxton.SR12、spring-boot-admin:2.3.0

    image-20220720202156919

    添加spring-boot-admin-starter-server依赖以及对应eureka client依赖:

    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.3.12.RELEASEversion>
            <relativePath/> 
        parent>
        <groupId>com.changlugroupId>
        <artifactId>admin-serverartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>admin-servername>
        <description>Demo project for Spring Bootdescription>
        <properties>
            <java.version>1.8java.version>
            <spring-boot-admin.version>2.3.0spring-boot-admin.version>
            <spring-cloud.version>Hoxton.SR12spring-cloud.version>
        properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            
            
            <dependency>
                <groupId>de.codecentricgroupId>
                <artifactId>spring-boot-admin-starter-serverartifactId>
            dependency>
    
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
                <scope>testscope>
            dependency>
        dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>de.codecentricgroupId>
                    <artifactId>spring-boot-admin-dependenciesartifactId>
                    <version>${spring-boot-admin.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
                <dependency>
                    <groupId>org.springframework.cloudgroupId>
                    <artifactId>spring-cloud-dependenciesartifactId>
                    <version>${spring-cloud.version}version>
                    <type>pomtype>
                    <scope>importscope>
                dependency>
            dependencies>
        dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72

    配置文件application.yaml:

    server:
      port: 10086
    
    spring:
      application:
        name: admin-server
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka
      instance:
        hostname: localhost
        instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
    
    # 管理配置
    management:
      endpoints:
        web:
          exposure:
            include: '*'  # 暴露所有的监控端点 # 如果一个服务需要被监控 那么就要讲自身的一些情况(一些信息接口)暴露出去
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    image-20220720195347766

    • 默认是health以及info级别,*表示暴露所有的监控信息。

    在启动中添加一个eureka client注册、admin-server服务开启:

    @SpringBootApplication
    @EnableEurekaClient
    @EnableAdminServer  //开启admin服务
    public class AdminServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(AdminServerApplication.class, args);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    测试管理服务

    我们运行一个eureka注册中心、两个服务以及一个admin管理服务(也就是admin-server):

    image-20220720202620369

    额外说明:对于eureka以及user、order都是使用的之前章节案例如下:

    image-20220720203621018

    接着我来访问监控平台:http://localhost:10086/applications

    可以看到此时我们能够查看到eureka注册中心中的服务信息:打x的表示该服务并没有配置admin-client,自然就无法令server与client进行交互以及查看信息了。

    image-20220720202722249

    如何查看当前admin-server服务的一系列运行状态及信息呢?

    点击应用墙:

    image-20220720202858150

    亮着的表示我们能够查看的实例:

    image-20220720202930162

    我们来点击``admin-server`服务来进行查看:在面板中我们可以查看对应的线程、内存相关信息,包括左边的性能、环境、配置属性等等,还有jvm等。

    image-20220720203113977

    2.3、实现admin-server监控User服务

    在2.2中我们可以看到目前只能够查看admin-server本身自己的服务信息,对于其他如订单order、user服务都是不行的,那么我们如何能够对其进行监控呢?

    • 我们之前admin-server注册到eureka中,可以拿到所有的服务实例信息,那么现在需要做的就是如何让admin-server与各个服务之间进行交互。

    方案:自己搭建的服务来集成spring-boot-starter-actuator,然后配置下即可。

    操作如下

    image-20220720203513063

    可以看到当前服务包含有user以及order,那么如何让admin-server来进行监控呢?

    我们来对user服务进行监控!其实很简单,只需要两个步骤:①引入依赖。②进行配置。

    image-20220720203759021

    ①引入依赖

    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ②配置文件:application.yaml来添加管理配置

    # 添加监控
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    接着我们来重启user服务。

    接着我们回到admin-server服务监控大屏,可以看到此时USER-SERVICE实例已经亮了:

    image-20220720212209020

    此时我们也来查看一下,果然也可以监控其相应的信息。

    额外:集成spring-boot-starter-actuator的好处

    上面案例中对user服务进行了监控,集成了对应的依赖,还有一个好处就是我们能够看到当前服务中所有对外提供的服务接口:

    image-20220720212710286

    好处:对于一些引入进来的依赖包,若是通过文件去查看暴露的一些接口会很麻烦,集成actuator可以将所有引入依赖jar包中的一些接口都给你暴露,弥补了原本只能进行全局搜索的问题。

    如何将某个应用服务被admin来进行监控?引入actuator依赖,然后进行配置,即可在admin中也进行获取!


    参考资料

    [1]. Spring Boot Admin 介绍及使用

    [2]. SpringBoot Admin的简单使用 包含admin-client端的安全配置,集成springsecurity

    我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
    欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
    Q群:851968786 我们可以一起探讨学习
    注明:转载可,需要附带上文章链接

  • 相关阅读:
    第五届“传智杯”全国大学生计算机大赛(练习赛)题解
    Java学习【IO流:深入理解与应用(上)】
    6G网络潜在关键技术研究综述
    open graph协议
    【学习笔记】Maven
    京东大数据:2023年Q3美妆行业数据分析报告
    处理器架构和配置
    Linux系统的FTP服务
    第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    pytest多线程运行日志显示错误
  • 原文地址:https://blog.csdn.net/cl939974883/article/details/125901150