SpringBoot实战(十三)集成 Admin

目录

    • 一、简介
    • 二、搭建 springboot-admin 管理服务
      • 1.Maven 依赖
      • 2.application.yml
      • 3.添加 @EnableAdminServer
      • 4.启动服务,查看页面
    • 三、搭建 springboot-admin-client 客户端服务
      • 1.Maven 依赖
      • 2.application.yml
      • 3.启动服务,查看页面
    • 四、搭配 Eureka 使用
      • 1.搭建 springboot-eureka 服务
        • 1.1)Maven 依赖:
        • 1.2)application.yml:
        • 1.3)添加 @EnableEurekaServer 注解
        • 1.4)启动服务
      • 2.调整 `springboot-admin` 管理服务
        • 1.1)Maven依赖:
        • 1.2)application.yml
        • 1.3)启动服务
      • 3.调整 `springboot-admin-client` 客户端服务
        • 1.1)Maven依赖:
        • 1.2)application.yml
        • 1.3)启动服务

上一章 SpringBoot实战(十二)我们集成了 Spring Actuator,我们拿到了应用服务的健康状态指标以及其他参数。这一章,我们就来看一下基于 Spring Actuator 数据进行图形化界面展示的 Spring Boot Admin 框架。

一、简介

Spring Boot Admin: Spring Boot Admin 是一个开源项目,提供了一个基于 web 的界面来管理和监控 Spring Boot 的应用程序。它可以实时监控您的 Spring Boot 应用程序,包括健康状况、指标和其他有用信息。

GitHub: https://github.com/codecentric/spring-boot-admin

官方文档: https://codecentric.github.io/spring-boot-admin/2.5.1/#getting-started

通过 Spring Boot Admin,我们可以轻松地从一个仪表板管理多个 Spring Boot 应用程序。我们可以查看每个应用程序的详细信息,包括内存使用情况、CPU 使用情况、线程等等。您还可以查看每个应用程序的配置属性,并在运行时进行编辑。

Spring Boot Admin 还提供了一个集中查看 Spring Boot 应用程序日志的地方。您可以按日期、日志级别和文本搜索过滤日志。这可以帮助我们快速排查应用程序中的问题。

此外,Spring Boot Admin 还具有发送通知的内置支持,当发生某些事件时,例如应用程序关闭或堆使用超过某个阈值时,您可以接收到通知。

总体而言,Spring Boot Admin 是一个有用的工具,用于管理和监控您的 Spring Boot 应用程序。它可以帮助您快速识别和排查问题,同时为您的应用程序的健康和性能提供有价值的参考。

这里,我们会一起创建一个 Spring Boot Admin 的管理服务客户端服务

二、搭建 springboot-admin 管理服务

1.Maven 依赖

<properties>
    <java.version>1.8</java.version>
    <spring.boot.version>2.4.5</spring.boot.version>
    <spring.cloud.version>2020.0.3</spring.cloud.version>
    <admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <!-- spring-boot-admin -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>${admin.starter.server.version}</version>
    </dependency>

    <!-- Eureka -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.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>

2.application.yml

server:
  port: 8000

spring:
  application:
    name: springboot-admin

management:
  endpoint:
    health:
      show-details: always

3.添加 @EnableAdminServer

在启动类添加 @EnableAdminServer 注解:

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

@EnableAdminServer
@SpringBootApplication
public class SpringbootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
}

4.启动服务,查看页面

启动 springboot-admin 服务,访问地址:http://localhost:8000

在这里插入图片描述

三、搭建 springboot-admin-client 客户端服务

1.Maven 依赖

<properties>
    <java.version>1.8</java.version>
    <spring.boot.version>2.4.5</spring.boot.version>
    <spring.cloud.version>2020.0.3</spring.cloud.version>
    <admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <!-- spring-boot-actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- spring-boot-admin-client -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>${admin.starter.client.version}</version>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.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>

2.application.yml

server:
  port: 8001

spring:
  application:
    name: springboot-admin-client
  boot:
    admin:
      client:
        api-path: /instances
        url: http://127.0.0.1:8100
        instance:
          prefer-ip: true # 使用ip注册进来

management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: "*"

3.启动服务,查看页面

启动 springboot-admin-client 服务,再次访问地址:http://localhost:8000

在这里插入图片描述

点击 应用墙,我们可以看到目前是只有一个客户端服务。

在这里插入图片描述

点击这个服务,我们可以看到当前服务的元数据、进程和线程的状态等信息。

在这里插入图片描述

以上就是 Spring Boot Admin 框架的原始集成方式。

四、搭配 Eureka 使用

其实 Spring Boot Admin 可以搭配 Eureka 注册中心,实现自动扫描注册到注册中心上的所有服务,只要服务中集成了 Spring Actuator

1.搭建 springboot-eureka 服务

1.1)Maven 依赖:

<properties>
    <java.version>1.8</java.version>
    <spring.boot.version>2.4.5</spring.boot.version>
    <spring.cloud.version>2020.0.3</spring.cloud.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- eureka -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.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>

1.2)application.yml:

server:
  port: 1001

spring:
  application:
    name: springboot-eureka
  security:
    user:
      name: demo
      password: Demo2023

eureka:
  instance:
    hostname: localhost
  client:
    # eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。
    # 由于当前这个应用就是Eureka Server,故而设为false
    register-with-eureka: false
    # eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。
    # 因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
    fetch-registry: false
  server:
    # 配置属性,但由于 Eureka 自我保护模式以及心跳周期长的原因,经常会遇到 Eureka Server 不剔除已关停的节点的问题
    enable-self-preservation: false
    # 清理间隔(单位毫秒,默认是60*1000),开发环境设置如下可快速移除不可用的服务
    eviction-interval-timer-in-ms: 5000

1.3)添加 @EnableEurekaServer 注解

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class SpringbootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }
}

1.4)启动服务

启动服务,访问地址:http://localhost:1001

在这里插入图片描述

2.调整 springboot-admin 管理服务

1.1)Maven依赖:

<properties>
    <java.version>1.8</java.version>
    <spring.boot.version>2.4.5</spring.boot.version>
    <spring.cloud.version>2020.0.3</spring.cloud.version>
    <admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- spring-boot-admin -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>${admin.starter.server.version}</version>
    </dependency>

    <!-- Eureka -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.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>

1.2)application.yml

server:
  port: 8000

spring:
  application:
    name: springboot-admin

management:
  endpoint:
    health:
      show-details: always

#eureka client
eureka:
  client:
    service-url:
      defaultZone: http://demo:Demo2023@localhost:1001/eureka/
  instance:
    hostname: localhost
    prefer-ip-address: true # 是否使用 ip 地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:port
    lease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容
    lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)

1.3)启动服务

访问 Eureka 地址:http://localhost:1001

在这里插入图片描述

访问管理页面地址:http://localhost:8000/wallboard

在这里插入图片描述

3.调整 springboot-admin-client 客户端服务

1.1)Maven依赖:

<properties>
    <java.version>1.8</java.version>
    <spring.boot.version>2.3.6.RELEASE</spring.boot.version>
    <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
    <admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- spring-boot-actuator -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- spring-boot-admin-client -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>${admin.starter.client.version}</version>
    </dependency>

    <!-- Eureka -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.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>

1.2)application.yml

server:
  port: 8001

spring:
  application:
    name: springboot-admin-client
#  boot:
#    admin:
#      client:
#        api-path: /instances
#        url: http://127.0.0.1:8000
#        instance:
#          prefer-ip: true # 使用ip注册进来

management:
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      base-path: /actuator
      exposure:
        include: "*"

#eureka client
eureka:
  client:
    service-url:
      defaultZone: http://demo:Demo2023@localhost:1001/eureka/
  instance:
    hostname: localhost
    prefer-ip-address: true # 是否使用 ip 地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:port
    lease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容
    lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)

1.3)启动服务

访问 Eureka 地址:http://localhost:1001

在这里插入图片描述

访问管理页面地址:http://localhost:8000/wallboard

在这里插入图片描述

整理完毕,完结撒花~ 🌻





参考地址:

1.Spring Boot Admin 介绍及使用,https://blog.csdn.net/zouliping123456/article/details/121977792

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二叉树的顺序存储与手撕数据结构—堆

TIPS树的话是一种非线性的数据结构&#xff0c;他实际上就是具有一定层次关系的数据集合&#xff0c;并且在树形结构当中&#xff0c;子树之间不能有任何的交集&#xff0c;否则就不是树形结构。然后对于树而言的话&#xff0c;在实际应用当中并不是特别多&#xff0c;在实际应…

Linux防火墙——SNAT、DNAT

目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条件 1、临时打开 2、永久打开 3、SNAT转换1&#xff1a;固定的公网IP地址 4、SNAT转换2&#xff1a;非固定的公网IP地址&#xff08;共享动态IP地址&#xff09; 二、SNAT实验 配置web服务…

力扣-银行账户概要 II

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1587. 银行账户概要 II二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果前言 …

css总结12(盒子模型外篇)

前言 主要补充一下和盒子模型相关的一些样式属性&#xff1a;box-sizing、resize和outline box-sizing 可选值 ## (1) content-box 默认值&#xff0c;内容盒子&#xff0c;盒子的大小会随着内容(盒子模型的content)尺寸的变化而变化 ## (2) border-box边框盒子&#xff0c;与…

leetcode究极刷题笔记(16~20)

&#xff08;16&#xff09;最接近的三数之和&#xff08;中等&#xff09; 实现思路&#xff1a; 本题与前文讲的三数之和有相同之处&#xff0c;但是本题求的是最接近的三数之和&#xff0c;所以我们这里可以使用键值对来映射对应的差值与值的关系&#xff0c;从而达到目的。…

系统集成路由器OSPF动态、综合路由配置

实验任务&#xff1a;动态路由协议RIP、OSPF协议的内容和特点动态路由RIP、OSPF实验&#xff0c;建立拓扑pc1>>R1>>R2>>R3>>pc2&#xff0c;使pc1与pc2能相互通信&#xff0c;并配置PC端静默接口。熟悉配置vlan间路由技术&#xff1a;多层交换机虚拟接…

JavaScript到底如何存储数据?

1.var的迷幻操作 普遍的观点&#xff1a;JavaScript中的基本数据类型是保存在栈空间&#xff0c;而引用数据类型则是保存在堆空间里, 是否正确&#xff1f; 浏览器环境下JavaScript变量类型的运行实践结果: var a 10;console.log(a);console.log(window.a); console.log(wind…

【云原生】Linux进程控制(进程程序替换)

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f38a;每篇一句&#xff1a; 图片来源 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 Good judgment comes from experience, and a lot of that comes from bad jud…

keepalived配置使用

keepalived安装tar -zxvf ***yum install -y gcc gcc-c wget popt-devel openssl openssl-devel yum install -y libnl libnl-devel libnl3 libnl3-devel yum install -y libnfnetlink-devel ./configure --sysconf/etc make make installmaster1 编辑keepalived的配置文件keep…

【C++】科普:C++中的浮点数怎么在计算机中表示?

这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的&#xff1a; float a 8.25;引言 1. 所占位数 首先&#xff0c;明确一个概念&#xff0c;float类型的数据在常规计算机中通常占4个字节&#xff0c;也就是32位。其内存分布如图&#xff1a; 位字段说明所占位…

【pytorch源码剖析系列】优化器

写在前言&#xff1a;pyotrch优化器从源码的角度带你理解优化器的由来&#xff0c;实现&#xff0c;作用。pytorch的优化器&#xff1a;管理并更新模型中可学习参数的值&#xff0c;使得模型输出更接近真是标签。导数&#xff1a;函数在指定坐标轴上的变化率方向导数&#xff1…

ChatGPT来了你慌了吗?

文章目录一、ChatGPT是什么&#xff1f;一、ChatGPT到底多强大&#xff1f;三、各平台集成了ChatGPT插件&#xff1a;四、ChatGPT能否取代程序员&#xff1f;一、ChatGPT是什么&#xff1f; ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&…

快速上手vue elementUI好看的登录界面

这是一个非常非常适合新手的vue登录界面&#xff0c;总体来说美观大气&#xff0c;axios那部分没有发&#xff0c;有需要的大家可以自己进行二次开发&#xff0c;继续编写。 用到了技术栈有 vue/cli 5.07 element-ui 2.15.9 适合入门级新手&#xff0c;展示下页面 emmm验证码…

【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)

文章目录环境要求简介安装Nacos源码安装Docker安装数据库配置访问服务我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos&#xff0c;阿里巴巴提供的Nacos组件&#xff0c;可以提供服务注册与发现和分布式配置服务&#xff0c;拥有着淘宝双十一十几年的流量经验&#xff0c…

关于docker mysql 请求速度慢的问题

一&#xff0c;问题描述&#xff1a; 请求mysql 数据库&#xff0c;请求速度很慢&#xff0c;需要六七秒&#xff0c;数据量也不大。使用的是docker 容器启动的mysql 二&#xff0c;问题原因&#xff1a; 网上说的是因为MySQL的dns导致&#xff0c;我实测也是有效果的&#xf…

Linux:主机USB设备驱动简析

文章目录1. 前言2. 分析背景3. USB 总线硬件拓扑4. USB 协议栈概览4.1 Linux USB 子系统概览4.2 USB外设(如U盘)固件基础5. Linux USB 子系统初始化6. Linux USB 主机控制器(HCD) 驱动6.1 USB 主机控制器驱动初始化6.2 USB 主机控制器设备对象注册和驱动加载7. Linux USB 设备驱…

【亲测搭建成功】模拟无网络情况下安装K8S集群和相关组件

目录标题 前言准备工作:k8s集群:先构思网络拓扑图划分网络资源服务器开始搭建服务器操作系统初始化1.关闭防火墙2. 关闭selinux3. 修改网卡配置5.系统模块配置nacos 高可用mysql双主+双从rockemq 集群nginx高可用(双主)Redis 双主、双从minio分布式文件存储前言 最近项目上…

vulnhub Noob渗透笔记

靶机下载地址:https://www.vulnhub.com/entry/noob-1,746/ kali ip 信息收集 依旧我们先使用nmap扫描确定一下靶机ip nmap -sP 192.168.20.0/24发现靶机ip 扫描开放端口 nmap -A -p 1-65535 192.168.20.129 开放21 80 55077端口 先尝试使用匿名账号登录ftp,账户anonym…

linux系统运维面试题大全(137道题)

linux系统运维面试题大全 1、 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数&#xff1f; 查看物理cup&#xff1a; cat /proc/cpuinfo|grep -c ‘physical id’ 查看每颗cup核数 cat /proc/cpuinfo|grep -c ‘processor’ 2、查看系统负载有两个常用的命令&#xff0c;…

STM32 ADC+定时器+DMA+FFT

本次实现的功能为单片机DAC输出一个正弦波&#xff0c;然后ADC定时采样用DMA输出&#xff0c;最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1&#xff0c;采用DMA输出&#xff0c;定时器3触发定时器时钟64M&#xff0c;分频后为102.4KHzADC采…