应用级监控方案Spring Boot Admin

news2024/11/24 10:57:21

在这里插入图片描述

1.简介

Spring Boot Admin为项目常用的监控方式,可以动态的监控服务是否运行和运行的参数,如类的调用情况、流量等。其中分为server与client:

  • server: 提供展示UI与监控服务。
  • client:加入server,被监控的项目。

同时在监控的过程中spring-boot-starter-actuator也被经常提及,actuator使用后,会在被项目内部打上探针,提供一系列的监控api接口,如堆内存、栈内存等。下文数据为actuator提供。
在这里插入图片描述

2.server端

2.1 新建springboot项目

这里不多说常用方法新建springboot项目。

2.2 修改pom文件

由于使用了spring cloud alibaba生态,所以这里将nacos包也加入了,请自行选择。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <optional>true</optional>
        </dependency>

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

        <!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

2.3 修改yml文件

server端暂无其他配置。

server:
  port: 8008
  servlet:
    context-path: /monitor
spring:
  application:
    name: monitor-resource # Eureka页面显示

2.4 修改

加入@EnableAdminServer注解。

@SpringBootApplication
@EnableAdminServer
public class MonitorApplication {

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

}

访问ip:端口/context-path就可以访问了。页面如下。
在这里插入图片描述

3.client端

3.1 修改pom文件

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.2.0</version>
        </dependency>

3.2 修改yml文件

在有context-path情况下,需要加入特殊配置,否则报错。本文为nacos中的配置,请参考。

server:
  port: 8008
  servlet:
    context-path: /monitor
spring:
  application:
    name: monitor-resource 
  boot:
    admin:
      client:
        api-path:
        url: http://127.0.0.1:8008/monitor  # 这里为server地址,如果有context-path需要加入
        instance:
          prefer-ip: true # 使用ip注册进来
        management-url: /monitor
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: ip:8848
        metadata:   # 如果有context-path需要加上,否者报错
          management:
            context-path: ${server.servlet.context-path}/actuator
      config:
        # 配置中心地址
        server-addr: ip:8848
        # 配置文件格式
        file-extension: yml
management:  # actuator配置
  endpoint:
    health:
      show-details: always
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: '*'

启动后即可加入server服务,页面展示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Security

4.1 修改pom文件。

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

4.2 修改application.xml文件

加入登录账号密码。

spring:
  security:
    user:
      name: "admin"
      password: "1qaz@WSX"

4.3 新增登入登出配置

这里需要配置登入登出的页面地址,同其他博文相同配置。

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter( "redirectTo" );

        http.authorizeRequests()
                .antMatchers( adminContextPath + "/assets/**" ).permitAll()
                .antMatchers( adminContextPath + "/login" ).permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage( adminContextPath + "/login" ).successHandler( successHandler ).and()
                .logout().logoutUrl( adminContextPath + "/logout" ).and()
                .httpBasic().and()
                .csrf().disable();
    }
}

再次登录可以看到需要账号登录。
在这里插入图片描述

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

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

相关文章

C语言王国探险记之函数的简单概念

王国探险记系列 文章目录&#xff08;5&#xff09; 目录 王国探险记系列 文章目录&#xff08;5&#xff09; 前言 一&#xff0c;函数的基本概念 二&#xff0c;调用外部函数和main()函数区别 2.1如果我们将函数的定义放到后面&#xff0c;可不可以呢&#xff1f; 总结…

插值应用案例1

案例1 一阶线性插值 待加工零件外形根据工艺要求在一组数据(x,y)给定&#xff08;如下表&#xff09;&#xff0c;用程控铣床加工时每一刀只能沿着x方向或y方向走非常小的一步&#xff0c;需要从已知数据得到加工步长很小的(x,y)的坐标。 下表中所给x,y数据位于机翼断面的下…

使用Vue脚手架

(193条消息) 第 3 章 使用 Vue 脚手架_qq_40832034的博客-CSDN博客 初始化脚手架 说明 1.Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09; 2.最新的版本是4.x 3.文档Vue CLI脚手架&#xff08;命令行接口&#xff09; 具体步骤 1.如果下载缓慢…

Libvirt Event Loop简介

文章目录 前言实现原理处理框架编程接口 原理验证事件订阅服务监听验证流程 前言 Event Loop顾名思义就是事件循环&#xff0c;整个程序是一个大的循环&#xff0c;通过事件来驱动程序要做的事情。传统编程模型是顺序的&#xff0c;程序运行一次然后终止&#xff0c;这种模型简…

JavaScript Day10 DOM详解

DOM DOM是JS操作网页的接口&#xff0c;全称为“文档对象模型”&#xff08;Document Object Model&#xff09;。它的作用是将网页转为一个JS对象&#xff0c;从而可以用脚本进行各种操作&#xff08;比如增删内容&#xff09;。 • 文档 – 文档表示的就是整个的HTML网页文档…

19-Linux 权限

目录 1.用户操作 1.1.创建用户 1.2.配置密码 1.3. 切换用户 2.三种角色 3.文件类型和访问权限 3.1.文件类型 3.2.基本权限 4.修改文件权限 1.用户操作 Linux下有两种用户&#xff1a; 超级用户&#xff08;root&#xff09;普通用户 超级用户&#xff1a;可以再lin…

【Cache】Redis主从复制哨兵模式集群

文章目录 一、Redis 持久化1. 主从复制2. 哨兵模式3. 集群 二、 Redis 主从复制1. 概述2. 主从复制的作用3. 主从复制流程4. 搭建 Redis 主从复制4.1 环境准备4.2 安装 Redis4.3 修改 Master 节点配置文件4.4 修改Slave节点配置文件&#xff08;Slave1和Slave2配置相同&#xf…

【vant移动端表格数据排版】用vant2简单实现一个把PC端表格数据展示在移动端的排版。上拉加载更多,下拉刷新页面,新增,编辑,删除功能

前言 上次做了一个移动端的表格功能&#xff0c;纯表格的那种。 跟PC一样&#xff0c;但是我一直觉得在移动端上写表格很糟糕的体验&#xff0c;毕竟手机就那么大。这不合理。 但是我这公司又需要把PC端的表格的数据展示在移动端。 导致我只能去试试看怎么排版比较好。由于网上…

【Qt-14】QT小知识点

1、关闭程序时报错 解决方案&#xff1a; 报这个错误可能是内存溢出&#xff0c;申请的空间与注销的空间不一致导致&#xff0c;排查了好久&#xff0c;我不是因为这个原因&#xff0c;我的问题如下&#xff0c;没有new窗体。 2、固定QT窗体大小 this->setMinimumSize(QSi…

NLP实战6:seq2seq翻译实战-Pytorch复现-小白版

目录 一、前期准备 1. 搭建语言类 2. 文本处理函数 3. 文件读取函数 二、Seq2Seq 模型 1. 编码器&#xff08;Encoder&#xff09; 2. 解码器&#xff08;Decoder&#xff09; 三、训练 1. 数据预处理 2. 训练函数 四、训练与评估 &#x1f368; 本文为[&#x1f51…

【算法集训之线性表篇】Day 02

文章目录 题目一思路分析代码实现效果 题目二思路分析代码实现效果 题目一 01.设置一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求其空间复杂度为O(1)。 思路分析 首先&#xff0c;根据题目要求&#xff0c;空间复杂度度为O(1),则不能通过空间换时间的方…

为什么编程更关注内存而很少关注CPU?

我们知道&#xff0c;我们编写的程序&#xff0c;不管是什么编程语言&#xff0c;最后执行的时候&#xff0c;基本上都是CPU在完成。之所以说基本上&#xff0c;是因为还有GPU、FPGA等特殊情况。 但不知道大家发现没有&#xff0c;我们编程的时候&#xff0c;经常在关注内存问…

大促转化率精准预估优化论文随笔记

这是一篇阿里妈妈的论文【KDD’23 | 转化率预估新思路&#xff1a;基于历史数据复用的大促转化率精准预估】 常规的销量预测&#xff0c;遇到一些特大事件&#xff0c;直播、大促&#xff0c;一般很难预估得准确。而且现在电商机制也比较多样&#xff0c;预售、平台折扣等。 本…

初识MySQL:了解MySQL特性、体系结构以及在Linux中部署MySQL

目录 MySQL简介 MySQL特性 MySQL体系结构 SQL的四个层次&#xff1a; 连接层&#xff1a; SQL层&#xff1a; 插件式存储引擎&#xff1a; 物理文件层&#xff1a; 一条SQL语句的执行流程&#xff1a; MySQL在Linux中的安装、部署 首先需要下载mysql软件包&#xff…

月入9000+的CSGO游戏搬砖项目操作细节和疑问 ?给您一一解答

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 01 海外CSGO游戏搬砖项目是什么&#xff1f; csgo搬砖是在外服steam上购买包含印花枪皮等等…

9.2、增量表数据同步

1、数据通道 2、Flume配置 1&#xff09;Flume配置概述 Flume需要将Kafka中topic_db主题的数据传输到HDFS&#xff0c;故其需选用KafkaSource以及HDFSSink&#xff0c;Channel选用FileChannel。 需要注意的是&#xff0c; HDFSSink需要将不同mysql业务表的数据写到不同的路径…

2023.7.4 Dataloader切分

一、 如果文件夹路径是 path/to/folder with spaces/&#xff0c;使用以下方式输入 path/to/folder\ with\ spaces/或者使用引号包裹路径&#xff1a; "path/to/folder with spaces/"这样可以确保命令行正确解析文件夹路径&#xff0c;并将空格作为路径的一部分进…

ADB自动化测试框架

一、介绍 adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用&#xff0c;利用adb工具的前提是在手机上打开usb调试&#xff0c;然后通过数据线连接电脑。在电脑上使用命令模式来操作手机&#xff1a;重启、进入recovery、进入fastboot、推送文件功能等。简单来…

Intellij IDEA 初学入门图文教程(八) —— IDEA 在提交代码时 Performing Code Analysis 卡死

在使用 IDEA 开发过程中&#xff0c;提交代码时常常会在碰到代码中的 JS 文件时卡死&#xff0c;进度框上显示 Performing Code Analysis&#xff0c;如图&#xff1a; 原因是 IDEA 工具默认提交代码时&#xff0c;分析代码功能是打开的&#xff0c;需要通过配置关闭下就可以了…

Linux高性能网络编程:TCP底层的收发过程

今天探索高性能网络编程&#xff0c;但是我觉得在谈系统API之前可以先讲一些Linux底层的收发包过程&#xff0c;如下这是一个简单的socket编程代码&#xff1a; int main() {... fd socket(AF_INET, SOCKET_STREAM, 0);bind(fd, ...);listen(fd, ...);// 如何建立连接...afd …