Spring Boot之Actuator介绍

Spring Boot Actuator 是一个用于监控和管理你 Spring Boot 应用的框架。它提供了许多内置的端点(Endpoints),允许你访问应用程序的运行时信息,如健康检查、环境属性、日志、指标、线程转储等。此外,它还支持外部化配置,使得你可以轻松地定制和扩展这些端点。本文将详细介绍 Spring Boot Actuator 的各个方面,包括其配置、安全、以及如何使用它来监控和管理你的应用,并提供相应的代码示例。

目录

[1. Spring Boot Actuator 简介](#1. Spring Boot Actuator 简介)

[2. 启用 Actuator](#2. 启用 Actuator)

[Maven 依赖](#Maven 依赖)

[Gradle 依赖](#Gradle 依赖)

[3. Actuator 端点](#3. Actuator 端点)

[4. 配置 Actuator](#4. 配置 Actuator)

[5. 安全配置](#5. 安全配置)

[添加 Spring Security 依赖](#添加 Spring Security 依赖)

[配置 Security](#配置 Security)

[6. 自定义端点](#6. 自定义端点)

[7. Actuator 与监控系统集成](#7. Actuator 与监控系统集成)

[8. 示例应用](#8. 示例应用)

application.properties

启动类

总结


1. Spring Boot Actuator 简介

Spring Boot Actuator 是 Spring Boot 生态系统中的一个关键部分,旨在通过暴露一系列 HTTP 端点来简化应用程序的监控和管理。这些端点提供了对应用程序内部状态的访问,而无需修改应用程序代码。你可以使用这些端点来检查应用程序的健康状况、查看度量指标、更改日志级别等。

2. 启用 Actuator

要在 Spring Boot 项目中启用 Actuator,你只需在 pom.xml 文件中添加 Spring Boot Actuator 的依赖(如果你使用的是 Maven)。对于 Gradle,则在 build.gradle 文件中添加相应的依赖。

Maven 依赖

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

Gradle 依赖

Groovy 复制代码
implementation 'org.springframework.boot:spring-boot-starter-actuator'

3. Actuator 端点

Actuator 提供了多种内置端点,以下是一些常用的端点及其描述:

  • /actuator/health:显示应用的健康状态信息。
  • /actuator/info:显示应用配置的自定义信息。
  • /actuator/metrics:显示当前应用程序的度量指标信息。
  • /actuator/env:显示当前的环境属性。
  • /actuator/loggers:显示和修改日志级别。
  • /actuator/mappings:显示所有 @RequestMapping 路径的映射信息。
  • /actuator/beans:显示 Spring 应用程序中所有 Bean 的完整列表。
  • /actuator/shutdown(禁用时默认不暴露):允许你优雅地关闭 Spring Boot 应用程序。

4. 配置 Actuator

你可以通过 application.propertiesapplication.yml 文件来配置 Actuator。以下是一些常见的配置选项:

Groovy 复制代码
# 启用或禁用特定的端点
management.endpoint.shutdown.enabled=true

# 设置端点的暴露级别
# 有三个选项:'web', 'jmx', 'off'
# 默认值为 'web,jmx'
management.endpoints.web.exposure.include=*
# 或者只暴露特定的端点
# management.endpoints.web.exposure.include=health,info

# 设置端点的上下文路径
management.endpoints.web.base-path=/actuator

# 更改健康端点的显示详细信息
management.endpoint.health.show-details=always

5. 安全配置

默认情况下,Actuator 的端点可能会被暴露给外部用户,这可能会带来安全风险。因此,建议使用 Spring Security 来保护这些端点。

添加 Spring Security 依赖

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

配置 Security

你可以通过编写一个配置类来配置 Spring Security,以限制对 Actuator 端点的访问。

java 复制代码
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("ACTUATOR")
.anyRequest().authenticated()
.and()
.httpBasic();
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("ACTUATOR");
}
}

6. 自定义端点

虽然 Actuator 提供了许多内置端点,但你还可以根据需要创建自定义端点。自定义端点可以通过实现 WebMvcEndpoint 接口或使用 @Endpoint@WebEndpoint 注解来创建。

使用 @Endpoint@WebEndpoint

java 复制代码
@Endpoint(id = "custom")
public class CustomEndpoint {

@ReadOperation
public String getCustomInfo() {
return "This is custom info from my custom endpoint";
}
}

@Configuration
public class CustomEndpointConfig {

@Bean
public CustomEndpoint customEndpoint() {
return new CustomEndpoint();
}

@Bean
@WebEndpoint(id = "custom")
public WebEndpointResponseSupport<String> customWebEndpoint() {
return new WebEndpointResponseSupport<String>() {
@Override
protected ResponseEntity<String> get(ServerWebExchange exchange) {
return ResponseEntity.ok(customEndpoint().getCustomInfo());
}
};
}
}

7. Actuator 与监控系统集成

Spring Boot Actuator 还可以与各种监控系统集成,如 Prometheus、Grafana、Micrometer 等。这些集成使得你可以收集和可视化应用程序的度量指标,从而更容易地进行问题诊断和系统优化。

8. 示例应用

假设你有一个简单的 Spring Boot 应用,并已经添加了 Actuator 依赖。以下是一个简单的示例,展示如何配置 Actuator 并使用它来检查应用的健康状态。

application.properties

java 复制代码
management.endpoints.web.exposure.include=* 
management.endpoint.health.show-details=always

启动类

java 复制代码
@SpringBootApplication 
public class MyApplication { 


public static void main(String[] args) { 
SpringApplication.run(MyApplication.class, args); 
} 
}

现在,你可以通过访问 http://localhost:8080/actuator/health 来检查应用的健康状态。

总结

Spring Boot Actuator 是一个强大的工具,用于监控和管理 Spring Boot 应用。通过提供一系列内置的端点,它使得你可以轻松地获取应用程序的运行时信息,并进行必要的调整。此外,你还可以根据需要自定义端点,并将其与各种监控系统集成。希望这篇文章能够帮助你更好地理解和使用 Spring Boot Actuator。

相关推荐
爱上语文12 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
荆州克莱14 分钟前
springcloud整合nacos、sentinal、springcloud-gateway,springboot security、oauth2总结
spring boot·spring·spring cloud·css3·技术
serve the people15 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
qmx_071 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战1 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
技术无疆3 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
罗政6 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师7 小时前
spring获取当前request
java·后端·spring
aPurpleBerry7 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j