【Spring实战】24 使用 Spring Boot Admin 管理和监控应用

news2024/9/30 3:27:09

文章目录

    • 1. 定义
    • 2. 使用场景
    • 3. 主要功能
    • 4. 示例
      • 1)[服务端] 添加依赖
      • 2)[服务端] 相关配置
      • 3)[服务端] 启动类
      • 4)[服务端] 启动服务
      • 5)[服务端] 浏览器访问
      • 6)[客户端] 添加依赖
      • 7)[客户端] 相关配置
      • 8)[客户端] 启动类
      • 9)[客户端] 启动服务
      • 验证
    • 总结

Spring Boot Admin 是一个强大的工具,为开发人员和运维人员提供了在生产环境中监控和管理 Spring Boot 应用程序的便捷方式。通过集成 Spring Boot Admin,你可以很轻松的监视应用程序状态、查看健康状况、管理日志、获取性能指标等,从而更好地了解和维护应用程序。本文将介绍 Spring Boot Admin 的定义、使用场景以及如何通过 Maven 集成和配置它。

1. 定义

Spring Boot Admin 是一个基于 Web 的用户界面,用于管理和监控 Spring Boot 应用程序。它为开发人员和运维人员提供了一个集中式的仪表板,展示了注册的 Spring Boot 应用程序的关键信息。通过这个仪表板,可以方便的查看应用程序状态、健康状况、日志、指标等,从而更好地了解应用程序的运行情况。

2. 使用场景

  • 集中式监控

    它提供了一个集中式的监控平台,使您能够在一个地方查看所有注册的 Spring Boot 应用程序的状态。这简化了监控和管理的流程

  • 实时日志查看

    通过它可以实时查看和管理应用程序的日志,帮助您及时发现和解决问题

  • 健康状况监测

    它提供了健康检查,让您能够迅速了解应用程序的健康状况,包括是否存活、是否响应请求等

  • 性能指标展示

    显示有关应用程序的各种指标和性能统计,如内存使用、垃圾回收、线程利用率等。这有助于性能调优和资源管理

  • 通知和警报

    支持配置通知,以便在应用程序状态发生变化或健康状况下降时接收警报。这有助于及时响应问题并采取纠正措施

3. 主要功能

Spring Boot Admin 提供了多种功能,下面仅是是常用的功能:

  • 应用程序概览
  • 应用程序详细信息
  • 日志查看与管理
  • 健康状况检查
  • 指标监控
  • 通知和警报
  • 与 Spring Cloud 集成

4. 示例

接下来,让我们使用一个示例,看看实际开发中是如何集成 Spring Boot Admin 并做一些简单的配置

在这里插入图片描述

1)[服务端] 添加依赖

在项目的 pom.xml 文件中添加 Spring Boot Admin 依赖,此处使用了最新版本 3.2.0

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>3.2.0</version>
</dependency>

2)[服务端] 相关配置

application.properties 文件中配置 Spring Boot Admin 服务器的端口和上下文路径

application.properties

server.port=8090
spring.boot.admin.context-path=/admin

3)[服务端] 启动类

编写一个 Spring Boot Admin 的启动类,就是在一个普通的 boot 启动类上追加了 @EnableAdminServer 注解而已

AdminApplication.java

package com.cheney.admin;

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

@EnableAdminServer
@SpringBootApplication
public class AdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}

4)[服务端] 启动服务

运行刚刚这个的 Spring Boot 程序,就可以启动 Spring Boot Admin 服务器

在这里插入图片描述

5)[服务端] 浏览器访问

访问一下下面的 URL 看看此时这个服务长什么样

http://localhost:8090/admin

在这里插入图片描述

此时,Admin 服务端的服务还只是一个光杆司令,没有任何 客户端服务注册上来呢

6)[客户端] 添加依赖

在你要监控的每个 Spring Boot 应用程序中,添加 Spring Boot Admin 客户端依赖

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>3.2.0</version>
</dependency>

7)[客户端] 相关配置

application.properties 文件中配置 指定 Spring Boot Admin 服务器的地址

application.properties

spring.application.name=cheney-demo
spring.boot.admin.client.url=http://localhost:8090/admin
spring.boot.admin.client.instance.management-base-url= http://localhost:8090

8)[客户端] 启动类

编写一个最普通的 Spring Boot 的启动器,仅注释 @SpringBootApplication 即可

DemoApplication.java

package com.cheney.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

9)[客户端] 启动服务

启动这个 Demo 服务

在这里插入图片描述

Application registered itself as 1a257d42f2b7

看到这个说明,你启动的客户端服务,已经注册到 Admin 服务端了

验证

再次访问访问服务端下面的 URL(Spring Boot Admin 控制台) 地址

http://localhost:8090/admin

应用选项卡
在这里插入图片描述

此时,便可以在 Admin 控制台上看到我们的 cheney-demo 服务了,并且状态是 UP(正常启动)

💥注意:如果,此时一直显示 《离线实例》 (如果没出现,则忽略,继续往下看)

如下错误信息:
Failed to resolve ‘X.mshome.net’ [A(1)] after 2 queries
在这里插入图片描述

此时可以参考 【Spring实战】[错误] 向Spring Boot Admin总显示离线实例 文章,查看解决办法

应用墙选项卡
再切换到 应用墙 上看看,可以发现整理也可以看到注册上来的服务

在这里插入图片描述

日志报表选项卡
再来看看 日志报表

在这里插入图片描述

注意:此时我们只是向 Admin 服务器,注册了一个 cheney-demo 服务,你还可以注册其他的。当注册完成一个之后就会控制台上看到啦。

总结

通过这个简单的示例,可以快速集成和配置 Spring Boot Admin,实现对应用程序的集中监控和管理。请注意,具体的配置和使用可能会根据项目的需求和环境而有所调整,建议查阅 Spring Boot Admin 的官方文档以获取更详细的信息和配置选项。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双变量probit模型

1. Probit模型 1.1 模型含义 假设个体只有两种选择&#xff0c;y1或y0。影响选择的变量都包括在向量x中。即线性概率模型为 y值服从两点分布 被认为是连接函数&#xff0c;函数选择具有一定的灵活性。如果为标准正态的累积分布函数&#xff0c;则模型成为Probit模型&#xff…

网络嗅探器的设计与实现(2024)-转载

1.题目描述 参照 raw socket 编程例子&#xff0c;设计一个可以监视网络的状态、数据流动情况以及网络上传输 的信息的网络嗅探器。 2.运行结果 3.导入程序需要的库 请参考下面链接: 导入WinPcap到Clion (2024)-CSDN博客 4.参考代码 #define HAVE_REMOTE #define LINE_LEN …

【数据库原理】(11)SQL数据查询功能

基本格式 SELECT [ALL|DISTINCT]<目标列表达式>[,目标列表达式>]... FROM <表名或视图名>[,<表名或视图名>] ... [ WHERE <条件表达式>] [GROUP BY<列名 1>[HAVING <条件表达式>]] [ORDER BY <列名 2>[ASC DESC]];SELECT: 指定要…

WinForms中的UI卡死

WinForms中的UI卡死 WinForms中的UI卡死通常是由于长时间运行的操作阻塞了UI线程所导致的。在UI线程上执行的操作&#xff0c;例如数据访问、计算、文件读写等&#xff0c;如果耗时较长&#xff0c;会使得UI界面失去响应&#xff0c;甚至出现卡死的情况。 解决方法 为了避免…

061:vue中通过map修改一维数组,增加一些变量

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

系列二、GitHub中的Alpha、Beta、RC、GA、Release等各个版本

一、GitHub中的Alpha、Beta、RC、GA 1.1、概述 1.2、参考 https://www.cnblogs.com/huzhengyu/p/13905129.html

Qt——TCP UDP网络编程

目录 前言正文一、TCP二、UDP1、基本流程2、必备知识 三、代码层级1、UDP服务端 END、总结的知识与问题1、如何获取QByteArray中某一字节的数据&#xff0c;并将其转为十进制&#xff1f;2、如何以本年本月本日为基础&#xff0c;获取时间戳&#xff0c;而不以1970为基础&#…

Ps 滤镜:高反差保留

Ps菜单&#xff1a;滤镜/其它/高反差保留 Filter/Others/High Pass 高反差保留 High Pass滤镜常用于锐化、保护纹理、提取线条等图像编辑工作流程中。它的工作原理是&#xff1a;只保留显示图像中的高频信息&#xff08;即图像中的细节和边缘区域&#xff09;&#xff0c;而图像…

二分查找算法(指定数值的左右边界)

之前一直以为二分查找有什么难的&#xff0c;不就是确定左右边界&#xff0c;然后while循环求mid&#xff0c;大于mid的找右半边&#xff0c;小于mid的找左半边。直到最后相同了就是最后查找的结果了. 后来等真正用到二分查找算法的时候&#xff0c;发现问题远没有这么简单&…

【论文阅读笔记】ISINet: An Instance-Based Approach for Surgical Instrument Segmentation

1. 论文介绍 ISINet: An Instance-Based Approach for Surgical Instrument Segmentation ISINet&#xff1a;一种基于实例的手术器械分割方法 2020 MICCAI 【Paper】 【Code】 2.摘要 我们研究了机器人辅助手术场景中手术器械的语义分割任务。我们提出了基于实例的手术器械…

计算机Java项目|基于Springboot实现患者管理系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号&#xff1a;KS-032…

Hello 2024

Hello 2024 A. Wallet Exchange 题意&#xff1a;Alice和Bob各有a和b枚硬币&#xff0c;每次他们可以选择交换硬币或者保留&#xff0c;然后扣除当前一枚手中的硬币&#xff0c;当一方没得扣另一方就赢了。 思路&#xff1a;Alice先手&#xff0c;所以当硬币和为奇数时Alice…

Java面试之并发篇(一)

1、前言 本篇主要总结JAVA面试中关于并发相关的高频面试题。本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、简述程序、进程、线程、的基本概念&#xff1f; 2.1、程序 程序&#xff0c;是含有指令和数据的文件&#xff0c;被存储在磁盘或其他的…

基于神经网络的手写汉字提取与书写评分系统研究

相关源码和文档获取请私聊QQ:3106089953 论文目录结构 目 录 摘 要 I Abstract II 目 录 IV 第1章 绪论 1 1.1. 研究背景与意义 1 1.2. 国内外研究现状 2 1.2.1. 文本定位技术研究现状 2 1.2.2. 手写汉字识别研究现状 3 1.2.3. 汉字书写质量评价方法研究现状 4 1.3. 本文所做工…

OS_lab——bochs源码的编译与安装

1. 实验环境VMware station 15 Ubuntu 14.04.6 32位。2. 实验步骤2.1 安装虚拟机&#xff0c;并在虚拟机根目录下编译并安装bochs环境。 2.2 使用bochs自带工具bximage创建虚拟软驱。 2.3 编写引导程序boot.asm并用nasm编译得到引导文件boot.bin和boot.com。 2.4 修改bochs…

Hadoop分布式文件系统(二)

目录 一、Hadoop 1、文件系统 1.1、文件系统定义 1.2、传统常见的文件系统 1.3、文件系统中的重要概念 1.4、海量数据存储遇到的问题 1.5、分布式存储系统的核心属性及功能含义 2、HDFS 2.1、HDFS简介 2.2、HDFS设计目标 2.3、HDFS应用场景 2.4、HDFS重要特性 2.4…

性能分析与调优: Linux 安装基于BPF的bcc-tools系统性能工具库

目录 一、实验 1.环境 2.agent服务器安装使用ELRepo安装依赖包 3.agent服务器安装基于BPF的bcc-tools系统性能工具库 二、问题 1.安装bcc-tools后执行命令报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 pro…

【C++】- 类和对象(!!C++类基本概念!this指针详解)

类和对象 引入类类的定义类的访问限定操作符类的作用域类的实例化类对象模型this指针 引入类 在 C中&#xff0c;引入了一个新的定义----------类。类是一种用户自定义的数据类型&#xff0c;用于封装数据和行为。类可以看作是一个模板或蓝图&#xff0c;描述了一组相关的数据和…

JVM虚拟机的垃圾回收器(面试题)

1.什么是垃圾回收 垃圾回收主要说的是java会自动把程序在运行过程中产生的一些没有用的对象给回收掉&#xff0c;这样可以避免内存的浪费。 java主要是通过一个叫“根可达”的算法来识别这个对象是否可以被回收的&#xff0c;然后回收的算法也主要有三种&#xff1a;标记清除&a…

QT c++和qml交互实例

文章目录 一、demo效果图二、c和qml交互的基本方式1、qml访问C类对象 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQuickTopRect.qmlMainQuickMiddleRect.qmlMainQuickMiddleTableRect.q…