解析Spring Boot中的Actuator端点

简介: 解析Spring Boot中的Actuator端点

解析Spring Boot中的Actuator端点

今天我们来解析一下Spring Boot中的Actuator端点。Spring Boot Actuator提供了一系列内建的端点,帮助开发者监控和管理Spring Boot应用程序。通过这些端点,可以获取应用的各种运行时信息,极大地方便了开发、运维和故障排查工作。

1. 引入Spring Boot Actuator

首先,我们需要在Spring Boot项目中引入Actuator依赖。在pom.xml文件中添加以下内容:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 配置Actuator

application.properties文件中进行一些基本配置。可以启用或禁用特定的端点,以及设置端点的访问权限。例如:

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

上述配置表示暴露所有端点,并且在/actuator/health端点中显示详细信息。

3. 常用Actuator端点解析

3.1 /actuator

/actuator端点提供了所有可用端点的列表。通过访问http://localhost:8080/actuator可以查看所有启用的Actuator端点。

3.2 /actuator/health

/actuator/health端点显示应用程序的健康状况。默认情况下,返回的状态是UPDOWN,可以根据需要自定义健康检查。

package cn.juwatech.health;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class CustomHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        // 自定义健康检查逻辑
        int errorCode = check(); 
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }
    private int check() {
        // 模拟健康检查
        return 0;
    }
}

3.3 /actuator/info

/actuator/info端点显示应用程序的定制信息。可以在application.properties中添加信息,或者在application.yml中配置。

info.app.name=MyApp
info.app.version=1.0.0
info.company.name=Juwatech

访问http://localhost:8080/actuator/info时,会显示上述配置信息。

3.4 /actuator/metrics

/actuator/metrics端点提供了应用程序的各项指标,如JVM内存使用情况、GC活动、线程信息等。通过访问http://localhost:8080/actuator/metrics可以查看所有可用的指标。

package cn.juwatech.metrics;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class CustomMetrics {
    @Autowired
    private MeterRegistry meterRegistry;
    @PostConstruct
    public void init() {
        meterRegistry.gauge("custom.metric", Math.random() * 100);
    }
}

3.5 /actuator/loggers

/actuator/loggers端点显示并可以动态修改日志记录级别。通过访问http://localhost:8080/actuator/loggers可以查看所有的日志记录器及其级别。

package cn.juwatech.logging;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoggerController {
    @PostMapping("/change-log-level")
    public void changeLogLevel(@RequestParam String loggerName, @RequestParam String level) {
        org.apache.logging.log4j.core.config.Configurator.setLevel(loggerName, org.apache.logging.log4j.Level.valueOf(level));
    }
}

4. 自定义Actuator端点

除了内置的端点,Spring Boot还允许我们创建自定义的Actuator端点。

4.1 创建自定义端点

package cn.juwatech.endpoint;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
import org.springframework.stereotype.Component;
@Endpoint(id = "custom")
@Component
public class CustomEndpoint {
    @ReadOperation
    public String customRead() {
        return "Custom read operation";
    }
    @WriteOperation
    public void customWrite(String data) {
        // 自定义写操作逻辑
        System.out.println("Custom write operation with data: " + data);
    }
}

4.2 暴露自定义端点

application.properties中配置暴露自定义端点:

management.endpoints.web.exposure.include=custom

访问http://localhost:8080/actuator/custom可以查看自定义的读操作结果。

5. 安全性配置

为了确保Actuator端点的安全,可以配置Spring Security来保护这些端点。

5.1 引入Spring Security依赖

pom.xml中添加Spring Security依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

5.2 配置安全规则

package cn.juwatech.config;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.stereotype.Component;
@Component
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/actuator/**").authenticated()
            .and()
            .httpBasic();
        return http.build();
    }
}

这样配置后,所有的Actuator端点都需要进行身份验证才能访问。

6. 总结

Spring Boot Actuator通过提供一系列内建的监控和管理端点,使开发者能够方便地获取应用的运行时信息,并进行管理和调试。通过自定义端点和安全配置,可以进一步增强Actuator的功能和安全性。

相关文章
|
10月前
|
缓存 安全 Java
Spring Security通用权限管理模型解析
Spring Security作为Spring生态的核心安全框架,结合RBAC与ACL权限模型,基于IoC与AOP构建灵活、可扩展的企业级权限控制体系,涵盖认证、授权流程及数据库设计、性能优化等实现策略。
694 0
|
10月前
|
缓存 安全 Java
Spring Security权限管理解析
Spring Security是Spring生态中的核心安全框架,采用认证与授权分离架构,提供高度可定制的权限管理方案。其基于过滤器链实现认证流程,通过SecurityContextHolder管理用户状态,并结合RBAC模型与动态权限决策,支持细粒度访问控制。通过扩展点如自定义投票器、注解式校验与前端标签,可灵活适配多租户、API网关等复杂场景。结合缓存优化与无状态设计,适用于高并发与前后端分离架构。
688 0
|
10月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2971 0
|
9月前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
9月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
9月前
|
XML JSON Java
【SpringBoot(三)】从请求到响应再到视图解析与模板引擎,本文带你领悟SpringBoot请求接收全流程!
Springboot专栏第三章,从请求的接收到视图解析,再到thymeleaf模板引擎的使用! 本文带你领悟SpringBoot请求接收到渲染的使用全流程!
617 3
|
10月前
|
Java 数据库 数据安全/隐私保护
Spring Boot四层架构深度解析
本文详解Spring Boot四层架构(Controller-Service-DAO-Database)的核心思想与实战应用,涵盖职责划分、代码结构、依赖注入、事务管理及常见问题解决方案,助力构建高内聚、低耦合的企业级应用。
1780 1
|
10月前
|
Kubernetes Java 微服务
Spring Cloud 微服务架构技术解析与实践指南
本文档全面介绍 Spring Cloud 微服务架构的核心组件、设计理念和实现方案。作为构建分布式系统的综合工具箱,Spring Cloud 为微服务架构提供了服务发现、配置管理、负载均衡、熔断器等关键功能的标准化实现。本文将深入探讨其核心组件的工作原理、集成方式以及在实际项目中的最佳实践,帮助开发者构建高可用、可扩展的分布式系统。
822 0
|
10月前
|
安全 Java 数据安全/隐私保护
Spring Security 核心技术解析与实践指南
本文档深入探讨 Spring Security 框架的核心架构、关键组件和实际应用。作为 Spring 生态系统中负责安全认证与授权的关键组件,Spring Security 为 Java 应用程序提供了全面的安全服务。本文将系统介绍其认证机制、授权模型、过滤器链原理、OAuth2 集成以及最佳实践,帮助开发者构建安全可靠的企业级应用。
549 0
|
12月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1423 0

推荐镜像

更多
  • DNS