Spring Boot Actuator 保姆级教程

1. 引言

Spring Boot Actuator 是一个功能强大的监控工具,能够帮助开发者监控和管理应用的运行状态。通过 Actuator,我们可以轻松获取应用的健康状况、配置信息、性能指标等。本文将一步步引导你如何配置和使用 Actuator,以及如何通过它来监控你的 Spring Boot 应用。

2. 安装和配置 Actuator

2.1 添加依赖

首先,我们需要在项目的 pom.xml 文件中添加 Actuator 的依赖:

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

2.2 启用 Actuator 端点

默认情况下,Actuator 的一些敏感端点是禁用的。我们需要在配置文件中启用它们。在 application.propertiesapplication.yml 中添加以下配置:

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*"

这样,所有的 Actuator 端点都会被启用。你也可以选择性地启用部分端点,例如:

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: health, info, metrics

2.3 访问 Actuator 端点

配置完成后,启动你的 Spring Boot 应用。默认情况下,Actuator 端点的访问路径是 /actuator。你可以通过浏览器或工具(如 Postman)访问以下路径:

  • http://localhost:8080/actuator:列出所有可用的端点。
  • http://localhost:8080/actuator/health:检查应用的健康状态。
  • http://localhost:8080/actuator/info:查看应用的配置信息。

3. 探索常用 Actuator 端点

3.1 Health 端点

/actuator/health 端点用于检查应用的健康状态。默认情况下,它返回一个简单的状态,例如:

json 复制代码
{
    "status": "UP"
}

为了查看更详细的健康信息,可以在配置文件中添加:

yaml 复制代码
management:
  endpoint:
    health:
      show-details: always

重启应用后,再次访问 /actuator/health,你将看到更详细的健康指标,包括磁盘空间、数据库连接等。

3.2 Info 端点

/actuator/info 端点显示应用的配置信息。你可以在 application.yml 中添加自定义的信息:

yaml 复制代码
info:
  app:
    name: MySpringBootApplication
    version: 1.0.0

访问 /actuator/info 将返回这些配置信息:

json 复制代码
{
    "app": {
        "name": "MySpringBootApplication",
        "version": "1.0.0"
    }
}

3.3 Beans 端点

/actuator/beans 端点展示了应用中所有 Spring Bean 的信息,包括它们的类型、作用域和依赖关系。这对于调试和理解应用的依赖关系非常有帮助。

3.4 Metrics 端点

/actuator/metrics 端点提供了应用的性能指标,包括 JVM 内存使用情况、线程信息、HTTP 请求统计等。你可以通过这个端点监控应用的实时性能。

3.5 Threaddump 端点

/actuator/threaddump 端点生成当前线程的快照,帮助你分析线程的状态和堆栈信息。这对于排查线程相关的问题非常有用。

3.6 Shutdown 端点

/actuator/shutdown 端点允许你通过发送一个 POST 请求来优雅地关闭应用。在配置文件中启用它:

yaml 复制代码
management:
  endpoint:
    shutdown:
      enabled: true

然后,使用工具发送 POST 请求到 http://localhost:8080/actuator/shutdown 即可关闭应用。

4. 自定义 Actuator 端点

4.1 创建自定义 Endpoint

有时候,你可能需要监控一些特定的业务逻辑。这时,可以创建自定义的 Actuator 端点。例如,创建一个名为 myEndpoint 的端点:

java 复制代码
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;

@Component
@Endpoint(id = "myEndpoint")
public class MyEndpoint {

    @ReadOperation
    public String getInfo() {
        return "Custom endpoint information";
    }
}

4.2 注册 Endpoint

确保你的自定义 Endpoint 被 Spring 容器注册。通常,使用 @Component 注解即可。

4.3 访问自定义端点

启动应用后,访问 http://localhost:8080/actuator/myEndpoint,你将看到自定义的信息。

5. 保护 Actuator 端点

5.1 使用 Filter 保护端点

为了防止未经授权的访问,可以为 Actuator 端点添加过滤器。例如,创建一个过滤器类:

java 复制代码
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter(urlPatterns = "/actuator/*")
@Component
public class ActuatorFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        // 检查用户是否认证
        if (!isAuthenticated(httpRequest)) {
            httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            httpResponse.getWriter().write("Unauthorized access");
            return;
        }

        chain.doFilter(request, response);
    }

    private boolean isAuthenticated(HttpServletRequest request) {
        // 实现认证逻辑,例如检查是否有有效的令牌
        return request.getHeader("Authorization") != null;
    }
}

5.2 配置过滤器

确保过滤器类被 Spring 容器扫描到。通常,将其放在 src/main/java 目录下的适当包中即可。

6. 使用 Spring Boot Monitor 可视化监控

6.1 引入依赖

pom.xml 中添加 Spring Boot Monitor 的依赖:

xml 复制代码
<dependency>
    <groupId>cn.pomit</groupId>
    <artifactId>spring-boot-monitor</artifactId>
    <version>0.0.1</version>
</dependency>

6.2 访问监控页面

启动应用后,访问 http://localhost:8080/monitor,你将看到一个类似 Spring Boot Admin 的监控界面,展示应用的各项指标和健康状态。

7. 总结

通过本文的教程,你已经掌握了如何配置和使用 Spring Boot Actuator 来监控和管理你的应用。从启用默认端点到创建自定义端点,再到保护端点的安全性,Actuator 提供了丰富的功能来满足不同的监控需求。希望这篇教程能帮助你更好地理解和应用 Actuator,提升应用的监控和管理能力。

相关推荐
小蒜学长35 分钟前
springboot多功能智能手机阅读APP设计与实现(代码+数据库+LW)
java·spring boot·后端·智能手机
长路归期无望2 小时前
C语言小白实现多功能计算器的艰难历程
c语言·开发语言·数据结构·笔记·学习·算法
追逐时光者2 小时前
精选 4 款开源免费、美观实用的 MAUI UI 组件库,助力轻松构建美观且功能丰富的应用程序!
后端·.net
是大强2 小时前
stm32摇杆adc数据分析
开发语言
你的人类朋友2 小时前
【Docker】说说卷挂载与绑定挂载
后端·docker·容器
蓝莓味的口香糖3 小时前
【JS】什么是单例模式
开发语言·javascript·单例模式
间彧3 小时前
在高并发场景下,如何平衡QPS和TPS的监控资源消耗?
后端
间彧3 小时前
QPS和TPS的区别,在实际项目中,如何准确测量和监控QPS和TPS?
后端
zizisuo3 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
间彧3 小时前
消息队列(RocketMQ、RabbitMQ、Kafka、ActiveMQ)对比与选型指南
后端·消息队列