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

简介: 08、SpringCloud之SpringBoot-Admin监控组件学习笔记

一、认识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配置。



2.2、搭建admin-server服务


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



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


<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.changlu</groupId>
    <artifactId>admin-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>admin-server</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.3.0</spring-boot-admin.version>
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--    admin-server依赖    -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>


配置文件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: '*'  # 暴露所有的监控端点 # 如果一个服务需要被监控 那么就要讲自身的一些情况(一些信息接口)暴露出去



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

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


@SpringBootApplication
@EnableEurekaClient
@EnableAdminServer  //开启admin服务
public class AdminServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminServerApplication.class, args);
    }
}


测试管理服务


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



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



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


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



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


点击应用墙:



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



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



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


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


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

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


操作如下:



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


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



①引入依赖


<!--  暴露自身检查端点 endPoints 一个依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


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


# 添加监控
management:
  endpoints:
    web:
      exposure:
        include: '*'


接着我们来重启user服务。


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



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


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

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



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


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

相关文章
|
3月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
监控 负载均衡 Java
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
本文图文详解 Spring Cloud 的五大核心组件,帮助深入理解和掌握微服务架构。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
|
2月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
223 2
|
19天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
62 5
|
19天前
|
Prometheus 监控 Java
如何全面监控所有的 Spring Boot 微服务
如何全面监控所有的 Spring Boot 微服务
32 3
|
1月前
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
80 5
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
483 37
|
2月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
152 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
2月前
|
负载均衡 网络协议 Java
浅谈Springboot与Springcloud的区别
浅谈Springboot与Springcloud的区别
47 1
|
2月前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
50 1
下一篇
DataWorks