SpringBoot监控功能

发布时间:2026/10/14 1:45:40

SpringBoot监控功能 Spring Boot监控1、Spring Boot actuator它是Spring Boot 中提供了一个用于监控和管理自身应用信息的模块帮助我们及时发现应用程序故障1.初体验通过集成 actuator 可以将 Spring Boot 应用本身的一些信息通过 HTTP 或 JMX 的方式暴露出去可以让第三方的监控工具拉取这些信息进行信息的管理查看监控和告警。pom.xml添加starter依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactIdversion2.3.12.RELEASE/version/dependencyyaml添加配置management:endpoints:# 默认开启端点enabled-by-default:trueweb:exposure:# 暴露所有端点include:*访问http://ip:port/项目路径/actuator内置端点概述iddescSensitiveauditevents显示当前应用程序的审计事件信息Yesbeans显示应用Spring Beans的完整列表Yescaches显示可用缓存信息Yesconditions显示自动装配类的状态及及应用信息Yesconfigprops显示所有 ConfigurationProperties 列表Yesenv显示 ConfigurableEnvironment 中的属性Yesflyway显示 Flyway 数据库迁移信息Yeshealth显示应用的健康信息未认证只显示status认证显示全部信息详情Noinfo显示任意的应用信息在资源文件写info.xxx即可Noliquibase展示Liquibase 数据库迁移Yesmetrics展示当前应用的 metrics 信息Yesmappings显示所有 RequestMapping 路径集列表Yesscheduledtasks显示应用程序中的计划任务Yessessions允许从Spring会话支持的会话存储中检索和删除用户会话。Yesshutdown允许应用以优雅的方式关闭默认情况下不启用Yesthreaddump执行一个线程dumpYeshttptrace显示HTTP跟踪信息默认显示最后100个HTTP请求 - 响应交换Yes2.端点的配置从Spring Boot 2.x开始我们需要手动的去启用和暴露端点。默认情况下除了/shutdown之外的所有端点都是可用的同时只有/health和/info端点是对外暴露的。暴露和排除端点management:endpoints:# 默认开启端点enabled-by-default:trueweb:exposure:# 暴露端点*表示所有已经开启的端点 也可以通过逗号分隔多个要暴露的端点include:*# 排除端点虽然开启端点但没有暴露无法访问exclude:beans开启指定端点management:endpoints:# 默认不开启端点只有/health和/info端点enabled-by-default:falseweb:exposure:# 暴露端点*表示所有已经开启的端点 也可以通过逗号分隔多个要暴露的端点include:*# 排除端点虽然开启端点但没有暴露无法访问exclude:beansendpoint:health:# 开启health端点 ,注意开启后还需要暴露端点enabled:truebeans:# beans虽然开启了但是被排除了没有暴露也无法访问enabled:true注1.Actuator中/shutdown端点比较敏感该端点默认是不可用的需要我们手动开启。2./shutdown端点仅接收POST请求3 自定义端点除了使用Actuator默认给予的端点外还可以自定义端点来满足自定义监控的要求。在 Actuator中加入端点只需要加入注解Endpoint 即可这个注解会同时提供JMX 监控和Web 监控。如果只想提供JMX监控可以使用注解JmxEndpoint; 如果只想提供 Web 监控可以使用注解WebEndpoint。编码Component//id 自定义端点的唯一标识Endpoint(iddbcheck)publicclassDatabaseConnectionEndpoint{Value(${spring.datasource.driver-class-name})privateStringdriverClassName;Value(${spring.datasource.url})privateStringurl;Value(${spring.datasource.username})privateStringusername;Value(${spring.datasource.password})privateStringpassword;//一个端点只能存在一个ReadOperation标准的方法// 它表示HTTP的get请求ReadOperationpublicMapString,ObjecttestConnectDatabase(){System.out.println(DatabaseConnectionEndpoint.testConnectDatabase);MapString,ObjectmapnewHashMap();Connectionconnnull;try{Class.forName(driverClassName);connDriverManager.getConnection(url,username,password);map.put(success,true);map.put(message,测试数据库连接成功);}catch(Exceptione){map.put(success,false);map.put(message,e.getMessage());}finally{if(conn!null){try{conn.close();}catch(SQLExceptionthrowables){throwables.printStackTrace();}}}returnmap;}}配置相关参数spring:datasource:driver-class-Name:com.mysql.jdbc.Driverurl:jdbc:mysql://localhost:3306?useUnicodetruecharacterEncodingutf-8useSSLfalseusername:rootpassword:root注1.一个Endpint中只能定义一个ReadOperation注解2.除了ReadOperation外还可以定义WriteOperation对应POST请求和DeleteOperation对应DELETE请求4 自定义HealthIndicatorhealth端点用来显示程序的健康信息。health端点在默认情况下 仅显示status: UP。 如需显示详细信息 可以做如下配置management:endpoint:health:enabled:true# 显示health端点的详细信息show-details:always再次访问/health端点可以看到如下结果可以看到健康指示器下面多出来的两个健康指标分别为diskSpace磁盘空间和ping检查。{status:UP,components:{diskSpace:{status:UP,details:{total:329034756096,free:45609562112,threshold:10485760,exists:true}},ping:{status:UP}}}如果内置的健康指标项无法满足需要我们可以自定义健康指标项。例如我们现在需要监测服务器是否可以访问万维网 (World wide Webwww)就可以自定义健康指标。ComponentpublicclassWwwHealthIndicatorextendsAbstractHealthIndicator{privatefinalstaticStringBAIDU_HOSTwww.baidu.com;privatefinalstaticintTIME_OUT3000;OverrideprotectedvoiddoHealthCheck(Health.Builderbuilder)throwsException{if(ping()){builder.withDetail(message,当前服务可以访问万维网).up();}else{builder.withDetail(message,当前服务不可以访问万维网).outOfService();}}privatebooleanping(){try{returnInetAddress.getByName(BAIDU_HOST).isReachable(TIME_OUT);}catch(IOExceptione){returnfalse;}}}2、Spring Boot Admin目前所有的端点信息不直观可以通过 Spring Boot Admin 来对 actuator 信息进行管理。Spring Boot Admin 用于管理和监控 Spring Boot 应用程序的运行状态。在 Spring Boot 项目中可以通过集成 Spring Boot Admin Client 向 Spring Boot Admin Server 进行注册这样我们就可以在Spring Boot Admin Server 统一管理 Spring Boot 应用。Spring Boot Admin 主要功能点显示应用程序的监控状态应用程序上下线监控查看 JVM 和线程信息可视化的查看日志及下载日志文件动态切换日志级别HTTP 请求信息跟踪等实用功能将 actuator 提供的数据进行可视化开发Admin服务端新建一个项目pom.xml引入spring-boot-admin-starter-server依赖dependencygroupIdde.codecentric/groupIdartifactIdspring-boot-admin-starter-server/artifactId!-- 注意版本要和springboot的版本兼容--version2.3.1/version/dependency启动类上添加EnableAdminServer注解SpringBootApplicationEnableAdminServerpublicclassAdminApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminApplication.class,args);}}为避免和其它项目冲突服务端口配置为8081server:port:8081访问http://localhost:8081配置Admin客户端Spring Boot actuator项目项目中增加spring-boot-admin-starter-client依赖dependencygroupIdde.codecentric/groupIdartifactIdspring-boot-admin-starter-client/artifactIdversion2.3.1/version/dependencyyaml中配置admin服务端的地址spring:boot:admin:client:url:http://localhost:8081instance:#使用ip注册prefer-ip:true访问http://localhost:8081
延伸阅读

更多相关文章

2026/10/14 1:45:40

初级程序员成长中避不开的坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:45:40

vue学习第一篇 vue 引入Cesium时会报错

文章目录 前言总结 前言 在使用超图开发中遇到了一个问题&#xff0c;引入Cesium后总是会报Cesium没有引入的错误&#xff0c;查看代码后发现是没有问题的&#xff0c;最后查找发现引入Cesium.js的时候多了一个. 报错截图 修改前代码 <script type"text/javascript&…

2026/10/14 1:45:40

SpringBoot微框架

一、引言 1.什么是Springboot&#xff1f; 定义&#xff1a;快速开发的微框架&#xff08;配置少&#xff09; 作用&#xff1a;简化Spring应用的初始创建和开发过程 原则&#xff1a;遵从约定大于配置&#xff0c;用特定的方式进行配置&#xff0c;不需要原先样板式配置(sprin…

2026/10/14 7:16:21

Agent编排层崛起:从模型选型到生产系统落地关键

10月7日那天&#xff0c;我像往常一样在休息时刷技术动态&#xff0c;结果一口气刷到五条看似互不相干的帖子&#xff1a;一个开源编排框架发布了新版本、某个技术团队复盘了他们在生产环境里跑Agent的架构、一个向量存储产品更新了检索能力、一个可观测性工具团队展示了Agent调…

2026/10/14 7:16:21

AnyPS5 跨平台串流实战:架构、调优与部署指南

1. 项目缘起与核心定位AnyPS5 这个名字第一次出现在我视野里的时候&#xff0c;我正蹲在一堆旧主机配件里翻找能用的散热风扇。当时脑子里冒出来的第一个念头是&#xff1a;这玩意儿到底是想让 PS5 跑在任意设备上&#xff0c;还是想让任意设备都能模拟 PS5 的体验&#xff1f;…

2026/10/14 7:16:21

Docker+DeepSeek Harness:局域网内搭建私有化AI Agent平台实战

1. 为什么要用 Docker 在局域网里跑一个 AI Agent 平台先说个我自己的场景。有段时间我需要在公司内网做一套内部的知识问答与自动化辅助工具&#xff0c;数据完全不能出网&#xff0c;但团队又希望用上大模型的能力。直接调用线上 API 肯定不行&#xff0c;于是我在本地服务器…

2026/10/14 7:16:21

Android MQTT消息推送通知实现:从连接到通知栏显示全链路

简介&#xff1a;本资源是一份面向Android应用开发者与物联网初学者的MQTT消息推送实战示例&#xff0c;聚焦在移动终端实现轻量级远程通信的核心能力——连接MQTT服务器、订阅主题、接收消息并实时展示于系统通知栏。项目基于Eclipse Paho Android客户端库构建&#xff0c;已集…

2026/10/14 7:11:20

PS5串流全指南:突破客厅限制,在任意屏幕畅玩游戏

PS5 玩家应该都有过这种经历&#xff1a;客厅电视被家里人占着&#xff0c;游戏放了大半年一直吃灰&#xff1b;出差住酒店&#xff0c;看着行李箱里准备好的掌机发呆&#xff0c;可主机留在家里完全摸不到&#xff1b;或者卧室明明摆着一台不错的显示器&#xff0c;却因为要把…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”&#xff0c;而是它给出一段看起来合理的说明&#xff0c;程序却从中猜错优先级。通俗做法是&#xff1a;要求模型只交 JSON&#xff08;JavaScript Object Notation&#xff0c;轻量数据格式&#xff09;&#xff0c;再让代码验证它。Gem…

2026/10/13 17:09:18

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里&#xff0c;有A同学跑来问我&#xff1a;选什么毕设题目最稳妥&#xff0c;既能让评审老师觉得工作量够&#xff0c;又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友&#xff0c;在看完一堆“Hello World”和基础组件之后&#xff0c;大概率都会撞上同一堵墙&#xff1a;StatefulWidget 里那堆 initState、build、dispose 方法&#xff0c;到底什么时候被调用&#xff1f;为什么顺序是那样&#xff1f;在里面到…

2026/10/14 0:00:33

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景&#xff0c;也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间&#xff0c;确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中&#xff0c;这类问题直接关系到飞行安全和机…

2026/10/14 0:00:33

macOS/iOS高精度计时:mach_absolute_time原理与实战

1. 项目概述&#xff1a;为什么mach_absolute_time是 macOS/iOS 时间测量的“黄金标准”在 macOS 和 iOS 开发中&#xff0c;我见过太多人用CFAbsoluteTimeGetCurrent()或NSDate.timeIntervalSinceReferenceDate做性能打点&#xff0c;结果在高精度场景下被系统时钟跳变、NTP 同…

2026/10/14 0:00:33

SCORM课件演示与测试全解析:从API通信到自动化验证

简介&#xff1a;这是一套遵循SCORM标准的交互式课件演示与测试资源&#xff0c;面向E-Learning课程开发者、LMS平台测试人员及在线教学从业者&#xff0c;用于验证课件在不同学习管理系统中的识别、传递与跟踪能力。压缩包共28个文件&#xff0c;约12.07MB&#xff0c;以swf动…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑