Spring Boot 中的监视器是什么?有什么作用?

前言:

监听器相信熟悉 Spring、Spring Boot 的都知道,但是监视器又是什么?估计很多人一脸懵的状态,本篇分享一下 Spring Boot 的监视器。

Spring Boot 系列文章传送门

Spring Boot 启动流程源码分析(2)

Spring Boot 启动流程源码分析(2)

Spring Boot 自动配置实现原理(源码分析)

Spring Boot 自定义 starter 启动器

Spring Boot 事件监听机制工作原理

Spring Boot 事件监听机制实战【自定义 Spring Boot 事件监听】

Spring Boot 的监视器是什么?

Spring Boot 的监视器一种特殊的应用程序或组件,用于监控和管理整个应用程序的运行状态和性能,它提供了一种可视化的方式,可以实时跟踪和监视应用程序的各种指标,例如响应时间、CPU使用率、内存使用情况等,Spring Boot 提供了一些内置的监视器功能,可以集成到应用程序中,Spring Boot 监视器功能由各种监视器监视器 Bean 实现,比如 Spring Boot Actuator。

什么是 Spring Boot Actuator?

Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的模块,它提供了许多端点,可以通过 HTTP 请求来访问这些端点,来获取应用程序的各种信息,如健康状况、度量指标、配置信息等,Actuator还可以通过配置开启或关闭特定的端点,并提供自定义的端点。

Spring Boot Actuator 可以做什么?

  1. 指标监控:实时跟踪应用程序的各种指标,例如响应时间、CPU使用率、内存使用情况等,以便进行性能优化和故障排查。
  2. 健康检查:检查应用程序的健康状况,包括是否正常运行(非常实用)。
  3. 日志管理:记录应用程序的日志信息,包括错误日志、警告日志、调试日志等,以便进行性能优化和故障排查。。
  4. 端点监控:监控应用程序中的各种端点(HTTP接口),包括请求数量、请求时间、响应时间等。

Spring Boot Actuator 使用演示

在 pom.xml 中引入 management.endpoints.web.exposure.include=*

组件,如下:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在程序的配置文件中启用 Actuator

yaml 复制代码
#暴露所有的端点
management.endpoints.web.exposure.include=*
  • 号的配置是允许所有的 Actuator 端点通过 HTTP 请求访问,生产环境不建议这样配置。

启动应用程序获取程序的健康情况:http://localhost:port/actuator/health

结果如下:

符合预期,我们的程序是健康的。

自定义 Endpoint

注解说明

  • @Endpoint:可通过JMX和web应用程序访问。
  • @JmxEndpoint:只能通过 JMX 访问。
  • @WebEndpoint:只能通过 WEB 应用访问。
  • @ReadOperation:相当于 GET 请求。
  • @WriteOperation:相当于 POST 请求。
  • @DeleteOperation:相当于 DELETE 请求。

有时候我们需要自定义自己的端点,我们可以通过 @Endpoint注解 + @ReadOperation、@WriteOperation、@DeleteOperation 注解来实现自定义端点,代码如下:

java 复制代码
@Component
@Endpoint(id = "myActuatorEndpoint")
public class MyActuatorController {

    @ReadOperation
    public Map<String, Object> get() {
        Map<String, Object> map = new HashMap<>();
        map.put("httpMethod", HttpMethod.GET.toString());
        return map;
    }

    @WriteOperation
    public Map<String, Object> post() {
        Map<String, Object> map = new HashMap<>();
        map.put("httpMethod", HttpMethod.POST.toString());
        return map;
    }

    @DeleteOperation
    public Map<String, Object> delete() {
        Map<String, Object> map = new HashMap<>();
        map.put("httpMethod", HttpMethod.DELETE.toString());
        return map;
    }
}

GET 方式测试结果:

结果符合预期,另外两种方式这里不做测试了,有兴趣的可以自己去测试一下。

自定义端口

我们还可以自定义监控的端口

yaml 复制代码
#自定义端口
management.server.port=8082

如有不正确的地方请各位指出纠正。

相关推荐
陈随易8 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
AI你一生一世9 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影9 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯10 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
考虑考虑11 小时前
Posrgresql恢复.backup文件
数据库·后端·postgresql
无奈何杨11 小时前
风控决策系统决策流,策略模式,权重、顺序、投票、最坏
后端
AI开源软件11 小时前
SpringBoot3+Vue3 财务管理系统如何设计:从业务单据到总账的模块划分
spring boot·vue3·领域建模·会计凭证·ruoyi office·业财协同·财务系统设计
Patrick_Wilson12 小时前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言
苏三说技术12 小时前
DeepSeek Harness入驻B站,评论区被干成了大型插件集市!
后端
橙序员小站13 小时前
我一句话让 AI 把公众号工作台搭完了:部署实测记录
后端