news 2026/6/12 0:00:14

Spring Boot Actuator

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot Actuator

Spring Boot Actuator 源码分析

Spring Boot Actuator 是 Spring Boot 提供的一组生产环境监控功能,它为 Spring Boot 应用提供了许多关键指标、健康检查、应用状态等信息,帮助开发者更好地运维和监控应用。Spring Boot Actuator 提供了许多内置的端点,如健康检查、应用信息、度量指标等,这些端点可以用于查看应用的运行状态以及性能数据。


1. Spring Boot Actuator 概述

Spring Boot Actuator 提供了一系列预定义的端点,可以通过 HTTP、JMX 或其他协议访问这些端点。常见的端点包括:

  • /actuator/health:健康检查
  • /actuator/metrics:度量指标
  • /actuator/info:应用信息
  • /actuator/env:应用环境变量

Spring Boot Actuator 的核心实现是通过对@Endpoint注解的类的扫描和注册实现的,同时它还依赖于 Spring Boot 的自动配置机制来加载和配置各个端点。


2. Actuator 端点的实现

2.1 端点的基本结构

Spring Boot Actuator 的每个端点实现都继承自AbstractEndpoint,这个类为所有端点提供了基础功能,例如:初始化、响应请求等。

  • AbstractEndpoint类定义了端点的基本信息,包括端点的 ID 和方法invoke(),后者用于处理请求并返回响应。
2.2 健康检查端点(/actuator/health

健康检查是 Actuator 中一个非常重要的端点,它用来检查应用的健康状况。例如:数据库连接是否正常,缓存是否可用等。

  • HealthEndpoint是用于实现健康检查的核心类。它通过实现Endpoint<Health>接口并继承AbstractEndpoint来实现健康检查端点。
  • 上面的代码中,HealthEndpoint类实现了AbstractEndpoint<Health>,并通过构造函数注入HealthIndicatorRegistry,后者负责管理和获取应用的健康指标。
  • invoke()方法返回应用的健康状态。
  • Health是一个包含多个子状态的对象,例如“UP”、“DOWN”、“UNKNOWN”状态。每个状态对应一个健康指示器。
2.3 度量指标端点(/actuator/metrics

度量指标端点用来暴露应用的性能指标,例如请求处理时间、数据库连接池的大小等。

  • MetricsEndpoint是实现该功能的关键类,它继承自AbstractEndpoint<MetricGroup>
  • 在上面的代码中,MetricsEndpoint通过注入MeterRegistry(Spring Boot 的度量库)来收集各种指标。
  • invoke()方法通过meterRegistry.getMeters()获取所有的度量指标。
  • MetricGroup类将这些度量指标组织在一起,方便用户进行查看和分析。

3. Actuator 的自动配置与端点注册

3.1 自动配置的核心类

EndpointAutoConfiguration是 Spring Boot Actuator 自动配置的核心类。它负责将所有@Endpoint注解标注的类自动注册到 Spring 容器中。

  • @Import(EndpointConfiguration.class)会导入EndpointConfiguration类,该类负责具体的端点实例化和注册。
  • @ConditionalOnClass注解表示只有当Endpoint类存在时,才会启用此配置。
3.2 端点注册

Spring Boot 会自动扫描类路径中带有@Endpoint注解的类,并将其作为 Bean 注册到 Spring 容器中。Spring Boot 使用EndpointHandlerMapping来处理端点请求并将它们映射到对应的 Handler。

  • EndpointHandlerMapping负责将请求映射到具体的端点实例,并处理请求。

4. Actuator 端点的自定义与扩展

Spring Boot Actuator 不仅支持内置的端点,还允许开发者自定义端点。开发者只需通过@Endpoint注解创建一个新的端点类,然后将其注册为 Spring Bean 即可。

4.1 自定义端点

java复制

@Component @Endpoint(id = "custom") public class CustomEndpoint extends AbstractEndpoint<String> { public CustomEndpoint() { super("custom"); } @Override public String invoke() { return "This is a custom endpoint!"; } }
  • CustomEndpoint类通过@Endpoint注解将其注册为一个端点,用户可以访问/actuator/custom来查看该端点返回的结果。
4.2 自定义健康指示器

开发者还可以创建自定义的健康检查指示器。自定义健康检查指示器需要实现HealthIndicator接口,并返回一个健康状态。

java复制

@Component public class CustomHealthIndicator implements HealthIndicator { @Override public Health health() { return Health.up().withDetail("customStatus", "Healthy").build(); } }
  • CustomHealthIndicator类实现了HealthIndicator接口,并返回一个Health对象,表示自定义的健康检查状态。

5. Spring Boot Actuator 的配置与使用

Spring Boot Actuator 端点可以通过配置文件application.propertiesapplication.yml来进行配置和启用。

启用和禁用端点

通过以下配置可以启用或禁用 Actuator 的端点。

properties复制

management.endpoints.enabled-by-default=true management.endpoint.health.enabled=true management.endpoint.metrics.enabled=false
  • 这段配置启用了健康检查端点,并禁用了度量指标端点。
设置端点的访问路径

properties复制

management.endpoints.web.base-path=/actuator management.endpoints.web.path-mapping.health=healthcheck
  • 通过这段配置,用户可以访问/actuator/healthcheck来查看健康状态,而不是默认的/actuator/health

总结

Spring Boot Actuator 提供了一套强大的生产环境监控功能,通过内置的端点(如健康检查、度量指标、应用信息等)帮助开发者更好地运维和监控应用。Actuator 的实现基于@Endpoint注解和 Spring Boot 的自动配置机制,能够自动识别并注册端点。开发者可以通过配置文件灵活地启用或禁用端点,并自定义端点和健康指示器以满足特定需求。通过这些机制,Spring Boot Actuator 为应用的监控和管理提供了极大的便利。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 3:51:25

杰理之时钟波形质量检查【篇】

◦ 用示波器观察时钟信号的上升沿 / 下降沿是否陡峭&#xff08;过冲 < 10%&#xff0c;毛刺 < 50mV&#xff09;&#xff0c;避免因线路阻抗不匹配导致的波形畸变&#xff08;畸变会导致从设备采样错误&#xff09;。 ◦ 检查 MCLK 是否稳定&#xff08;无突然中断或频率…

作者头像 李华
网站建设 2026/6/8 9:22:26

MiniMax Agent 代理开发框架

一段时间前&#xff0c;我注意到我自己的AI项目中有些奇怪的事情。 我的代理变得越"高级"&#xff0c;它们感觉越脆弱。 更多的提示。 更多的工具。 更多的条件。 更多的粘合代码。 而且不知何故&#xff0c;清晰度更差。 这就是我开始探索来自MiniMax的MiniMax …

作者头像 李华
网站建设 2026/5/23 15:18:20

滑动窗口-----找到所有字母异位词

&#x1f525;个人主页&#xff1a;Milestone-里程碑 ❄️个人专栏: <<力扣hot100>> <<C>><<Linux>> <<Git>><<MySQL>> &#x1f31f;心向往之行必能至 题目解读 给定两个字符串 s 和 p&#xff0c;我们需要在…

作者头像 李华
网站建设 2026/5/29 10:24:46

失物招领平台信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着城市化进程的加快和人口流动性的增强&#xff0c;物品遗失现象日益频繁&#xff0c;传统失物招领方式效率低下且信息传播范围有限。为解决这一问题&#xff0c;开发一套高效、便捷的失物招领平台信息管理系统具有重要意义。该系统通过整合线上线下资源&#xff0c;为…

作者头像 李华
网站建设 2026/5/31 13:44:49

前后端分离华府便利店信息管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着信息技术的快速发展&#xff0c;传统便利店管理模式逐渐暴露出效率低下、数据冗余等问题。华府便利店作为一家中小型连锁企业&#xff0c;亟需一套高效、便捷的信息管理系统来优化商品管理、库存监控和销售分析等业务流程。信息化管理不仅能提升运营效率&#xff0c;…

作者头像 李华
网站建设 2026/6/10 14:38:21

如何选择西安优质小程序开发服务与本凡码农合作?

在选择西安优质小程序开发服务时&#xff0c;首先要清晰了解自己的需求。这个过程包括明确小程序的功能、设计风格及目标受众。其次&#xff0c;调查潜在开发公司的背景和案例&#xff0c;将其与市场中其他公司进行比较&#xff0c;确保其具备良好的口碑和丰富的项目经验。此外…

作者头像 李华