一起来学 SpringBoot 2.x | 第十五篇:actuator 与 spring-boot-admin 可以说的秘密

SpringBoot安全漏洞解析与防御实践:从信息泄露到RCE攻击链 在Java Web开发领域,应用安全是构建健壮系统的基石。其核心原理在于理解攻击者如何利用框架特性、配置缺陷和依赖漏洞实施入侵。从技术价值看,掌握安全防护能显著降低数据泄露、服务中断等业务风险。常见应用场景包括企业级后台管理系统、金融交易平台和物联网服务端等。本文聚焦SpringBoot框架,深入剖析其常见安全漏洞如信息泄露、依赖风险等,并提供从开发到部署的纵深防御方案,帮助开发者构建更安全的微服务应用。 阅读详情

点击上方“芋道源码”,选择“置顶公众号”

技术文章第一时间送达!

源码精品专栏

 

来源:http://t.cn/EwMgr3F

  • 什么是SBA

  • 导入依赖

  • 属性配置

  • 描述信息

    • 主函数

    • 测试

  • 总结

  • 说点什么


SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程

一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了actuator 的作用,细心的朋友可能会发现通过http restful api的方式查看信息过于繁琐也不够直观,效率低下,运维人员看到JSON数据更是一脸懵逼,当服务过多的时候查看起来就过于操蛋了,每个服务都需要调用不同的接口来查看监控信息,备受各种困扰因素的我默默翻了下全球最大男性交友平台找到了spring-boot-admin

什么是SBA

SBA 全称 Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源项目。分为admin-server 与 admin-client 两个组件,admin-server通过采集 actuator 端点数据,显示在 spring-boot-admin-ui 上,已知的端点几乎都有进行采集,通过 spring-boot-admin 可以动态切换日志级别、导出日志、导出heapdump、监控各项指标 等等….

Spring Boot Admin 在对单一应用服务监控的同时也提供了集群监控方案,支持通过eureka、consul、zookeeper等注册中心的方式实现多服务监控与管理…

导入依赖

在 pom.xml 中添加 spring-boot-admin 的相关依赖,这里只演示单机版本的,因此就自己监控自己了

<dependencies>
    <!-- 服务端:带UI界面 -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.0.0</version>
    </dependency>
    <!-- 客户端包 -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.0.0</version>
    </dependency>
    <!-- 安全认证 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- 端点 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- 在管理界面中与 JMX-beans 进行交互所需要被依赖的 JAR -->
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
    </dependency>
</dependencies>

注意事项

如果要访问info接口想获取maven中的属性内容请记得添加如下内容

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

属性配置

在 application.properties 文件中配置actuator的相关配置,其中info开头的属性,就是访问info端点中显示的相关内容,值得注意的是Spring Boot2.x中,默认只开放了info、health两个端点,剩余的需要自己通过配置management.endpoints.web.exposure.include属性来加载(有include自然就有exclude,不做详细概述了)。这个management.endpoints.web.base-path属性比较重要,因为Spring Boot2.x后每个端点默认的路径是/actuator/endpointId这样一来Spring Boot Admin是无法正常采集的

application.properties

# 描述信息
info.blog-url=http://blog.battcn.com
info.author=Levin
# 如果 Maven 插件没配置此处请注释掉
info.version=@project.version@
info.name=@project.artifactId@
# 选择激活对应环境的配置,如果是dev则代表不用认证就能访问监控页,prod代表需要认证
spring.profiles.active=prod

# 日志文件
logging.file=./target/admin-server.log

# 加载所有的端点/默认只加载了 info / health
management.endpoints.web.exposure.include=*
# 比较重要,默认 /actuator spring-boot-admin 扫描不到
management.endpoints.web.base-path=/
management.endpoint.health.show-details=always

spring.boot.admin.client.url=http://localhost:8080
# 不配置老喜欢用主机名,看着不舒服....
spring.boot.admin.client.instance.prefer-ip=true

application-dev.properties - 空

application-prod.properties

为了安全起见,应采用认证的方式

# 登陆所需的账号密码
spring.security.user.name=battcn
spring.security.user.password=battcn
# 便于客户端可以在受保护的服务器上注册api
spring.boot.admin.client.username=battcn
spring.boot.admin.client.password=battcn
# 便服务器可以访问受保护的客户端端点
spring.boot.admin.client.instance.metadata.user.name=battcn
spring.boot.admin.client.instance.metadata.user.password=battcn

主函数

添加上 @EnableAdminServer 注解即代表是Server端,集成UI的

package com.battcn;

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;


/**
 * @author Levin
 */
@SpringBootApplication
@EnableAdminServer
public class Chapter14Application {

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

    /**
     * dev 环境加载
     */
    @Profile("dev")
    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()
                    .and().csrf().disable();
        }
    }

    /**
     * prod 环境加载
     */
    @Profile("prod")
    @Configuration
    public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
        private final String adminContextPath;

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

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            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();
        }
    }
}

测试

完成准备事项后,启动Chapter14Application 访问 http://localhost:8080/login 看到登陆页面则代表一切正常,接着输入账号密码点击登陆即可…

首页

由于篇幅原因大图就不放太多了,有兴趣的朋友可以直接fork代码运行即可

总结

参考文档:http://codecentric.github.io/spring-boot-admin/2.0.0/

目前很多大佬都写过关于 SpringBoot 的教程了,如有雷同,请多多包涵,本教程基于最新的 spring-boot-starter-parent:2.0.2.RELEASE编写,包括新版本的特性都会一起介绍…

说点什么

全文代码:https://github.com/battcn/spring-boot2-learning/tree/master/chapter14



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:


SpringBoot配置文件加密实战:Jasypt集成与生产环境最佳实践 在软件工程实践中,配置管理是保障应用安全与合规性的基础环节。其核心原理在于将敏感信息(如数据库密码、API密钥)从明文存储转为密文,通过运行时动态解密机制,实现业务代码的无感知透明访问。这项技术的核心价值在于,它能有效防止代码仓库泄露、配置误提交等场景下的敏感信息暴露,是满足等保、GDPR等安全合规要求的必要手段。典型的应用场景包括微服务架构下的配置中心安全存储、CI/CD流水线中的密钥注入以及生产环境运维的权限隔离。本文聚焦于SpringBoot生态,深入解析如何利用Jasypt这一轻量级加密库,结合AE 阅读详情

相关推荐

SpringBoot集成Jasypt实现数据加密实战指南

数据加密是保障系统安全的基础技术,其核心原理是通过加密算法将明文转换为不可读的密文。Jasypt作为Java领域轻量级加密库,支持AES、PBE等主流算法,通过与SpringBoot的深度集成,为配置文件加密提供了开箱即用的解决方案。在实际工程中,Jasypt的配置简单性和高性能特点使其成为微服务架构下敏感信息保护的首选方案,特别适合数据库密码、API密钥等场景的加密需求。本文基于SpringBoot 2.7.x和Jasypt 3.0.4,详细解析从基础集成到生产级应用的全流程实践。

weixin_30455023的博客 407

springboot 监控 Actuator和Admin

一、什么是Actuator Actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况。Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。特别对于微...

江城宴的博客 4111

Spring Boot Admin 详解(Spring Boot 2.0,基于 Eureka 的实现)

Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。(一)简介Spring Boot Admin 提供了很多功能,如显示 name、id 和 version,显示在线状态,Loggers 的日志级别管理,Threads 线程管理,Environment 管理等。(二)Spring...

永不止步 11万+

SpringBoot整合Actuator 和 Admin实现服务监控功能

SpringBoot整合Actuator 和 Admin实现服务监控功能

H_Q_Li的博客 1289

【信息科学与工程学】【通信工程】【企业网、园区网、数据中心、广域网】各类业务网络及其网络演算算法

企业网络是一个复杂的系统,其业务、人员、流量和安全特征相互交织。下面这张表格梳理了这些核心特征及其关联的数学模型,帮你先建立整体概念。特征维度核心特征关联数学模型/方法业务特征​多样性、服务等级协议、混合云趋势图论(拓扑优化)、排队论(M/M/1)、随机过程(业务到达)、优化理论(资源调度)人员特征​角色权限差异、访问行为随机性、安全意识差异概率统计(行为建模)、随机过程(会话生成)、博弈论(安全策略)、访问控制矩阵流量特征​混合性、突发性、时空规律性、方向性(南北/东西向)泊松过程(短时突发)、重尾分布(

weixin_49199313的博客 890

SpringBoot Admin 使用指南(推荐)

主要介绍了SpringBoot Admin 使用指南(推荐),Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序,非常具有实用价值,需要的朋友可以参考下

玩转SpringBoot 2.x 之搭建 Actuator 和 SpringBoot Admin监控篇

1 搭建SpringBoot Admin 服务端 创建SpringBoot 项目并引入SpringBoot Admin 服务端的依赖。 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId&...

程序员小奎的博客 3323

VC Spyglass调试秘籍:从Lint报错到代码修复的完整工作流

本文详细介绍了VC Spyglass调试的完整工作流,重点解析了如何高效定位和修复Lint检查中常见的XMRE-L跨模块引用错误。通过对比GUI与命令行(vc_static_shell)双模式调试技巧,并结合TCL脚本实现批量处理与规则豁免,帮助数字设计工程师系统化地提升代码调试效率与质量。

weixin_29246195的博客 585

Spring Boot 接入大众点评 CAT系统监控

主要参考: 单体:http://www.2cto.com/os/201507/422030.html 集群:https://www.cnblogs.com/lori/p/5382304.html 1.git 载入https://github.com/dianping/cat 2.构建 mvn clean install -DskipTests

silyvin 1万+

基于Python的高考志愿辅助填报系统

在实际应用中,系统需要处理更复杂的数据,包括更多的高校和专业信息、更详细的录取规则、以及用户的历史选择等。系统需要提供用户友好的界面,让考生输入自己的信息和偏好,然后通过后端的模型计算出推荐的志愿列表。此外,系统还应该提供一些个性化的服务,如根据考生的输入动态调整推荐策略、保存用户的填报历史和偏好等。特征可能包括考生的分数、所在省份、文理科类别、专业偏好、高校的地理位置、排名、专业的就业前景等。3. **推荐逻辑**:根据用户的分数和专业偏好,结合历史录取数据,使用简单的算法来推荐可能录取的高校和专业。

coder_wwwdy的博客 1979

芯片低功耗设计的两种常用EDA流程

如题。

EricWZY2008的专栏 5559

一起来学SpringBoot | 第十五篇:actuator与spring-boot-admin 可以说的秘密

SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了actuator 的作用,细心的朋友可能会发现通过http...

唐亚峰 3579

工厂自动化布线实战:从功率计算到线槽布局的完整避坑指南

本文详细介绍了工厂自动化布线的实战经验,从功率计算到线槽布局的完整避坑指南。通过三步计算法确定线径需求,强调电压降控制的重要性,并分享线槽布局的50%法则和强弱电分离技巧。特别针对移动设备和多芯信号线提供专业解决方案,帮助工程师避免常见错误,提升布线效率和质量。

weixin_29266007的博客 355

SpringCloud集成Elasticsearch实战与性能优化

Elasticsearch作为分布式搜索引擎,通过倒排索引机制实现毫秒级数据检索,解决了传统关系型数据库在模糊查询和大数据量场景下的性能瓶颈。其分布式架构支持水平扩展,配合分片与副本机制保障高可用性。在微服务体系中,SpringCloud与Elasticsearch的典型集成场景包括商品搜索、日志分析和实时监控等。通过合理配置索引映射、查询优化和集群调优,可显著提升系统性能。本文结合电商订单查询等实际案例,详解如何避免版本冲突、处理深度分页等工程实践问题,并分享生产环境中的性能监控与故障排查经验。

weixin_30681615的博客 465

从“看不懂Sansen”到亲手搭建:一个Class AB输出级+浮动电压源的保姆级设计复盘

本文详细记录了从理论困惑到实践突破的Class AB输出级与浮动电压源设计全过程。通过电流镜调试、恒定跨导优化及版图匹配等关键步骤,作者实现了高性能运放设计,并分享了从仿真到实测的宝贵经验,为模拟电路初学者提供实用指导。

weixin_33737774的博客 869

proteus仿真51单片机操作指南:串口通信仿真配置详解

深入讲解如何在proteus仿真51单片机中实现串口通信,涵盖虚拟串口设置、电路连接与调试技巧,帮助开发者高效完成通信仿真验证。

weixin_36197669的博客 573

从零搭建开发脚手架 Spring Boot集成CAT实现APM和链路监控、业务埋点

文章目录简介Cat 简介Cat 产品价值Cat 优势服务端部署准备阶段CAT安装环境安装CAT集群步骤概览具体实操1.初始化数据库2.创建目录和配置文件3.CATwar部署4.修改客户端路由配置5.修改服务器配置6.验证客户端集成1.maven依赖2.配置client.xml3.配置项目名称4.测试验证功能介绍核心功能TransactionEventProblemHeartbeatJVM相关指标系统指标Business实战集成SpringBoot 集成CatFilterLogback配置消息属性 简介 Ca

laker的博客 2765

ADRC自抗扰PD+ESO控制(博途SCL源代码)

文章浏览阅读119次。线性自抗扰控制(LADRC)系统算法框图-优快云博客文章浏览阅读335次。NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。ADRC自抗扰PD+ESO控制(CODESYS测试+完整ST代码)-优快云博客。

RXXW_Dor的博客 1318

Actuator监控信息泄露

springboot 监控 Actuator springboot 提供了对项目的监控功能。 1.首先添加依赖包 org.springframework.boot spring-boot-starter-actuator 2.1.3.RELEASE 2.浏览器访问 http://127.0.0.1:8080/actuator/health 访问项目监控需要加前缀 /actuator 因为actuator默认只支持端点 /health、/info 所以访问 /env 会出现

weixin_42090162的博客 2440

需求跟踪详解

需求跟踪是指在软件项目开发过程中,建立并维护需求与项目各阶段工作产物(如设计文档、代码模块、测试用例等)之间对应关系的过程。它不仅记录需求从提出到实现的完整路径,还能反映需求变更时对各阶段工作的影响范围,是连接用户期望与实际软件开发产出的桥梁。

跟佟格湾一起学习计算机知识吧~ 1424

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

spring boot 安全关闭服务,结合spring security

参考博客文档Spring Boot的应用启动与关闭Windows下使用CURL命令curl 命令使用spring boot 官方文档项目中已有spring security 配置的情况下,通过curl命令安全关闭spring boot服务。pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifact

sitaryo的博客 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

springboot2.x adminUI监控

1.server端 pom.xml &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version&gt;2.1.1.RELEASE&lt;...

这儿很凉的博客 3227

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

24.Spring-Boot-Actuator与Spring-Security整合应用

文章是指,在生产环境不是每一个用户都可以查看监控springboot应用的运行情况,通过整合spring security配置指定用户访问Actuator。 Spring Boot包含了一些额外的特性,可以帮助您在应用程序在上生产时监控和管理应用程序。您可以选择使用HTTP管理监视您的应用程序。端点,带有JMX,甚至是远程shell (SSH或Telnet)。审计、健康和度...

盲目的拾荒者的博客 6186
上一篇: 如何用九条命令在一分钟内检查 Linux 服务器性能?
下一篇: 五款主流 Linux 发行版性能对比,稳而不强?
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值