端点

执行器端点可以让你监控并与应用交互。 Spring Boot 内置了多个端点,并允许你添加自己的端点。 例如,健康端点提供基本的应用健康信息。spring-doc.cadn.net.cn

你可以控制对每个端点的访问,并通过HTTP或JMX对它们进行公开(使其可远程访问)。 当允许访问并暴露时,端点被视为可用。 内置端点只有在可用时才会自动配置。 大多数应用选择暴露而非HTTP,HTTP中端点ID和前缀为/驱动器映射到一个URL。 例如,默认情况下,健康端点映射为/执行器/健康.spring-doc.cadn.net.cn

想了解更多关于执行器端点及其请求和响应格式的信息,请参阅API文档

以下技术无关端点可供选择:spring-doc.cadn.net.cn

身份证 描述

审计活动spring-doc.cadn.net.cn

为当前应用暴露审计事件信息。 需要审计事件仓库豆。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

显示申请中所有春季豆的完整列表。spring-doc.cadn.net.cn

缓存spring-doc.cadn.net.cn

暴露可用的缓存。spring-doc.cadn.net.cn

条件spring-doc.cadn.net.cn

显示配置和自动配置类别评估的条件及其匹配原因。spring-doc.cadn.net.cn

配置道具spring-doc.cadn.net.cn

显示所有内容的汇总列表@ConfigurationProperties. 需进行消毒spring-doc.cadn.net.cn

环境spring-doc.cadn.net.cn

揭露斯普林的性质可配置环境. 需进行消毒spring-doc.cadn.net.cn

飞行路线spring-doc.cadn.net.cn

显示已应用的Flyway数据库迁移情况。 需要一个或多个飞行路线豆。spring-doc.cadn.net.cn

健康spring-doc.cadn.net.cn

显示应用健康信息。spring-doc.cadn.net.cn

http交换spring-doc.cadn.net.cn

显示HTTP交换信息(默认显示最近100次HTTP请求-响应交换)。 需要HttpExchangeRepository豆。spring-doc.cadn.net.cn

信息spring-doc.cadn.net.cn

显示任意的应用信息。spring-doc.cadn.net.cn

积分图spring-doc.cadn.net.cn

显示Spring集成图。 需要依赖于Spring-集成-核心.spring-doc.cadn.net.cn

Loggingspring-doc.cadn.net.cn

显示并修改应用程序中记录器的配置。spring-doc.cadn.net.cn

液基碱spring-doc.cadn.net.cn

显示已应用的Liquibase数据库迁移情况。 需要一个或多个液基碱豆。spring-doc.cadn.net.cn

指标spring-doc.cadn.net.cn

显示当前应用的“指标”信息,用于诊断应用记录的指标。spring-doc.cadn.net.cn

映射spring-doc.cadn.net.cn

显示所有内容的汇总列表@RequestMapping路径。spring-doc.cadn.net.cn

Quartzspring-doc.cadn.net.cn

显示关于Quartz调度器职位的信息。 需进行消毒spring-doc.cadn.net.cn

计划任务spring-doc.cadn.net.cn

显示你的应用程序中的计划任务。spring-doc.cadn.net.cn

会话spring-doc.cadn.net.cn

允许从春季会话支持的会话存储中检索和删除用户会话。 需要一个基于 servlet 的网页应用,使用 Spring Session。spring-doc.cadn.net.cn

关闭spring-doc.cadn.net.cn

让应用被优雅地关闭。 只有在使用罐装包装时才有效。 默认为禁用。spring-doc.cadn.net.cn

启动spring-doc.cadn.net.cn

显示由ApplicationStartup. 需要SpringApplication配置为缓冲应用启动.spring-doc.cadn.net.cn

线程转储spring-doc.cadn.net.cn

执行线程转储。spring-doc.cadn.net.cn

如果您的应用是Web应用(Spring MVC、Spring WebFlux或Jersey),您可以使用以下额外端点:spring-doc.cadn.net.cn

身份证 描述

堆卸spring-doc.cadn.net.cn

返回一个堆导出文件。 在热点JVM上,一个HPROF-格式文件返回。 在OpenJ9 JVM上,博士-格式文件返回。spring-doc.cadn.net.cn

日志文件spring-doc.cadn.net.cn

返回日志文件的内容(如果logging.file.name或者logging.file.path属性已设定)。 支持HTTP范围用于检索日志文件部分内容的头部。spring-doc.cadn.net.cn

普罗 米修斯spring-doc.cadn.net.cn

以Prometheus服务器可抓取的格式暴露指标。 需要依赖于微米-登记-普罗米修斯.spring-doc.cadn.net.cn

控制终端访问

默认情况下,除了关闭堆卸无限制。 要配置对某端点的允许访问,请使用管理.端点.<id>.access财产。 以下示例允许对关闭端点:spring-doc.cadn.net.cn

management.endpoint.shutdown.access=unrestricted
management:
  endpoint:
    shutdown:
      access: unrestricted

如果你更喜欢选择加入而非选择退出,请设置管理端点访问。默认属性到没有并使用单个端点访问选择重新加入的房源。 以下示例允许只读访问Logging端点并拒绝访问所有其他端点:spring-doc.cadn.net.cn

management.endpoints.access.default=none
management.endpoint.loggers.access=read-only
management:
  endpoints:
    access:
      default: none
  endpoint:
    loggers:
      access: read-only
不可访问的端点会完全从应用上下文中移除。 如果你只想更改终端所接触的技术,可以使用包括排除性能相反。

限制访问

应用范围的端点访问可以通过以下方式进行限制management.endpoints.access.max许可财产。 该属性优先于默认访问或单个端点的访问级别。 设置为没有让所有端点都无法访问。 设置为只读只允许对端点进行读取访问。spring-doc.cadn.net.cn

@Endpoint,@JmxEndpoint@WebEndpoint,读取访问等同于注释为的端点方法。@ReadOperation. 为@ControllerEndpoint@RestControllerEndpoint,读取访问等同于能够处理的请求映射获取请求。 为@ServletEndpoint,读取访问等于获取请求。spring-doc.cadn.net.cn

暴露端点

默认情况下,只有健康端点通过HTTP和JMX暴露。 由于端点可能包含敏感信息,您应谨慎考虑何时公开它们。spring-doc.cadn.net.cn

要更改暴露的端点,请使用以下技术专用工具包括排除性能:spring-doc.cadn.net.cn

属性 默认值

Management.endpoints.jmx.exposure.excludespring-doc.cadn.net.cn

管理.端点.jmx.exposure.includespring-doc.cadn.net.cn

健康spring-doc.cadn.net.cn

管理端点.web.exposure.excludespring-doc.cadn.net.cn

管理端点.web.exposure.includespring-doc.cadn.net.cn

健康spring-doc.cadn.net.cn

包括属性列出了被暴露端点的ID。 这排除property 列出了不应暴露的端点 ID。 这排除属性优先于包括财产。 你可以配置这两个包括以及排除带有端点ID列表的属性。spring-doc.cadn.net.cn

例如,仅暴露健康信息对于 JMX 端点,可以使用以下性质:spring-doc.cadn.net.cn

management.endpoints.jmx.exposure.include=health,info
management:
  endpoints:
    jmx:
      exposure:
        include: "health,info"

*可以用来选择所有端点。 例如,要通过 HTTP 暴露除环境端点,使用以下属性:spring-doc.cadn.net.cn

management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: "env,beans"
*在 YAML 中有特殊含义,因此如果你想包含(或排除)所有端点,请务必加上引号。
如果您的应用被公开,我们强烈建议您也保护您的终端安全。
如果你想在端点暴露时实施自己的策略,可以注册一个端点Filter豆。

安全

出于安全考虑,只有/健康端点默认通过HTTP暴露。 你可以使用管理端点.web.exposure.include属性来配置暴露的端点。spring-doc.cadn.net.cn

在设置管理端点.web.exposure.include确保暴露的执行器不包含敏感信息,通过设置防火墙保护,或由类似Spring Security的软件保护。

如果 Spring Security 只在类路径上,没有其他安全滤网链Bean在,所有执行器都存在,除了/健康通过Spring Boot自动配置来保护。 如果你定义了一个自定义安全滤网链Spring Boot 的自动配置会退后,允许你完全控制执行器的访问规则。spring-doc.cadn.net.cn

如果你想为HTTP端点配置自定义安全性(例如,只允许特定角色的用户访问),Spring Boot提供了一些方便的服务请求匹配器这些对象可以与 Spring Security 结合使用。spring-doc.cadn.net.cn

一个典型的Spring Security配置可能如下示例:spring-doc.cadn.net.cn

import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

import static org.springframework.security.config.Customizer.withDefaults;

@Configuration(proxyBeanMethods = false)
public class MySecurityConfiguration {

	@Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) {
		http.securityMatcher(EndpointRequest.toAnyEndpoint());
		http.authorizeHttpRequests((requests) -> requests.anyRequest().hasRole("ENDPOINT_ADMIN"));
		http.httpBasic(withDefaults());
		return http.build();
	}

}
import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.Customizer.withDefaults
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.web.SecurityFilterChain

@Configuration(proxyBeanMethods = false)
class MySecurityConfiguration {

	@Bean
	fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
		http.securityMatcher(EndpointRequest.toAnyEndpoint()).authorizeHttpRequests { requests ->
			requests.anyRequest().hasRole("ENDPOINT_ADMIN")
		}
		http.httpBasic(withDefaults())
		return http.build()
	}

}

前面的例子使用EndpointRequest.toAnyEndpoint()将请求匹配到任意端点,并确保所有端点都拥有ENDPOINT_ADMIN角色。 还有其他几种匹配方法可用端点请求. 详情请参见 API 文档spring-doc.cadn.net.cn

如果你部署应用在防火墙后面,你可能更希望所有执行器端点都能被访问而无需认证。 你可以通过更改管理端点.web.exposure.include性质,具体如下:spring-doc.cadn.net.cn

management.endpoints.web.exposure.include=*
management:
  endpoints:
    web:
      exposure:
        include: "*"

此外,如果有 Spring Security,你需要添加自定义安全配置,允许对端点进行非认证访问,如下示例所示:spring-doc.cadn.net.cn

import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration(proxyBeanMethods = false)
public class MySecurityConfiguration {

	@Bean
	public SecurityFilterChain securityFilterChain(HttpSecurity http) {
		http.securityMatcher(EndpointRequest.toAnyEndpoint());
		http.authorizeHttpRequests((requests) -> requests.anyRequest().permitAll());
		return http.build();
	}

}
import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.web.SecurityFilterChain

@Configuration(proxyBeanMethods = false)
class MySecurityConfiguration {

	@Bean
	fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
		http.securityMatcher(EndpointRequest.toAnyEndpoint()).authorizeHttpRequests { requests ->
			requests.anyRequest().permitAll()
		}
		return http.build()
	}

}
在前面两个例子中,该配置仅适用于执行器端点。 因为 Spring Boot 的安全配置会在任何安全滤网链Bean,你需要再配置一个安全滤网链带有适用于其他应用的规则。

跨站请求伪造保护

由于 Spring Boot 依赖于 Spring Security 的默认设置,CSRF 保护默认开启。 这意味着执行器端点需要发布(关闭并记录端点),a,或删除当默认安全配置正在使用时,会收到403(禁止)错误。spring-doc.cadn.net.cn

我们建议仅在创建非浏览器客户端使用的服务时完全禁用CSRF保护。

您可以在春季安全参考指南中找到更多关于CSRF保护的信息。spring-doc.cadn.net.cn

端点配置

端点会自动缓存对不带参数的读取作的响应。 要配置端点缓存响应的时间,请使用cache.time-to-live(存活时间)财产。 以下示例设定了端点缓存为10秒:spring-doc.cadn.net.cn

management.endpoint.beans.cache.time-to-live=10s
management:
  endpoint:
    beans:
      cache:
        time-to-live: "10s"
management.endpoint.<name>前缀唯一标识正在配置的端点。

净化敏感值

/环境,/configprops/Quartz端点可以是敏感的,因此默认情况下,数总是完全净化(替换为)。******spring-doc.cadn.net.cn

只有在以下情况下,才能以未净化的形式查看数值:spring-doc.cadn.net.cn

展示价值属性可配置为可净化端点,以下值之一:spring-doc.cadn.net.cn

对于HTTP端点,如果用户已认证并通过该端点的角色属性配置了角色,则被视为已授权。 默认情况下,任何认证用户均为授权用户。spring-doc.cadn.net.cn

对于 JMX 端点,所有用户始终获得授权。spring-doc.cadn.net.cn

以下示例允许所有用户拥有管理用于查看/环境端点的原始形式。 未经授权的用户,或没有管理角色,只会看到被净化的价值观。spring-doc.cadn.net.cn

management.endpoint.env.show-values=when-authorized
management.endpoint.env.roles=admin
management:
  endpoint:
    env:
      show-values: when-authorized
      roles: "admin"
这个例子假设 不消毒功能豆子已经被定义了。

执行器网页端点的超媒体

会添加一个“发现页面”,并链接到所有端点。 “发现页面”可在/驱动器默认。spring-doc.cadn.net.cn

要禁用“发现页面”,请在你的应用属性中添加以下属性:spring-doc.cadn.net.cn

management.endpoints.web.discovery.enabled=false
management:
  endpoints:
    web:
      discovery:
        enabled: false

当自定义管理上下文路径配置时,“发现页面”会自动从/驱动器回到管理背景的根源。 例如,如果管理上下文路径为/管理,发现页面可从以下网站获取/管理. 当管理上下文路径设置为 时,发现页面会被禁用,以防止与其他映射发生冲突。/spring-doc.cadn.net.cn

CORS支持系统

跨源资源共享(CORS)是W3C的一项规范,允许你灵活地指定授权的跨域请求类型。 如果你使用 Spring MVC 或 Spring WebFlux,可以配置 Actuator 的 Web 端点以支持此类场景。spring-doc.cadn.net.cn

默认情况下,CORS 支持是被禁用的,只有在你设置了管理端点.web.cors.allowed-origins财产。 以下配置允许获取发布来自example.com域:spring-doc.cadn.net.cn

management.endpoints.web.cors.allowed-origins=https://example.com
management.endpoints.web.cors.allowed-methods=GET,POST
management:
  endpoints:
    web:
      cors:
        allowed-origins: "https://example.com"
        allowed-methods: "GET,POST"
CorsEndpointProperties提供完整的选项列表。

JSON

在使用 JSON 时,Jackson 用于序列化和反序列化。 默认情况下,是孤立的JsonMapper被使用。 这种隔离意味着它与应用程序的配置不同JsonMapper且不受以下因素影响Spring。Jackson。*性能。 要禁用此行为并配置 Actuator 以使用应用程序的JsonMapper设置Management.endpoints.jackson.isolated-json-mapperfalse. 或者,你可以自己定义EndpointJsonMapper产生JsonMapper这符合你的需求。 执行器随后会用它来处理 JSON。spring-doc.cadn.net.cn

实现自定义端点

如果你加上一个@Bean注释为@Endpoint,任何注释为 的方法@ReadOperation,@WriteOperation@DeleteOperation在 JMX 上自动暴露,在 Web 应用中也可以通过 HTTP 暴露。 端点可以通过 HTTP 访问 Jersey、Spring MVC 或 Spring WebFlux 来暴露。 如果同时有Jersey和春季MVC,则使用春季MVC。spring-doc.cadn.net.cn

以下示例展示了返回自定义对象的读取作:spring-doc.cadn.net.cn

	@ReadOperation
	public CustomData getData() {
		return new CustomData("test", 5);
	}
	@ReadOperation
	fun getData(): CustomData {
		return CustomData("test", 5)
	}

你也可以通过以下方式编写技术专用端点@JmxEndpoint@WebEndpoint. 这些端点受限于各自的技术。 例如@WebEndpoint仅通过HTTP暴露,不通过JMX暴露。spring-doc.cadn.net.cn

你可以通过以下方式编写针对特定技术的扩展@EndpointWebExtension@EndpointJmxExtension. 这些注释允许你提供技术特定的作来增强现有端点。 端点最多可以有每种类型的一个扩展。spring-doc.cadn.net.cn

最后,如果你需要访问Web框架特有的功能,可以实现Servlet或Spring@Controller@RestController但代价是这些终端无法通过 JMX 或使用其他 Web 框架时可用。spring-doc.cadn.net.cn

接收输入

端点上的作通过其参数接收输入。 当这些参数在网络上公开时,取自URL的查询参数和JSON请求体。 在 JMX 上暴露时,参数映射到 MBean作的参数。 参数默认是必需的。 通过用 JSpecify 的注释,可以将其设置为可选@Nullable. 也支持 Kotlin 空安全。spring-doc.cadn.net.cn

你可以将 JSON 请求体中的每个根属性映射到端点的参数。 考虑以下 JSON 请求主体:spring-doc.cadn.net.cn

{
	"name": "test",
	"counter": 42
}

你可以用它调用一个写作,该作对字符串名称内线计数器参数,如下示例所示:spring-doc.cadn.net.cn

	@WriteOperation
	public void updateData(String name, int counter) {
		// injects "test" and 42
	}
	@WriteOperation
	fun updateData(name: String?, counter: Int) {
		// injects "test" and 42
	}
由于端点与技术无关,方法签名中只能指定简单类型。 特别地,声明一个参数,其中CustomData定义 一个名称计数器不支持属性。
为了让输入映射到作方法的参数,实现端点的 Java 代码应编译为-参数. 关于Kotlin代码,请参考Spring Framework参考文献的推荐。 如果你使用 Spring Boot 的 Gradle 插件,或者使用 Maven,这会自动发生Spring靴启动父.

输入类型转换

传递给端点作方法的参数,如有必要,会自动转换为所需的类型。 在调用作方法之前,通过 JMX 或 HTTP 接收到的输入会通过 的实例转换为所需的类型ApplicationConversionService以及任何转炉通用转换器Beans资格为@EndpointConverter.spring-doc.cadn.net.cn

自定义网页端点

@Endpoint,@WebEndpoint@EndpointWebExtension通过 Jersey、Spring MVC 或 Spring WebFlux 自动通过 HTTP 暴露。 如果同时有Jersey和春季MVC,则使用春季MVC。spring-doc.cadn.net.cn

Web端点请求谓词

在一个暴露于网络的端点上,每个作都会自动生成请求谓词。spring-doc.cadn.net.cn

路径

谓词的路径由端点的ID和暴露于网络端点的基路径决定。 默认的基础路径是/驱动器. 例如,一个 ID 为会话使用/执行器/会话作为谓词中的路径。spring-doc.cadn.net.cn

你还可以通过注释作方法的一个或多个参数来进一步自定义路径@Selector. 这样的参数作为路径变量添加到路径谓词中。 当调用端点作时,变量的值会传递到作方法中。 如果你想捕捉所有剩余的路径元素,可以添加@Selector(比赛=ALL_REMAINING)将该参数设为与 A 兼容的类型弦[].spring-doc.cadn.net.cn

消耗

对于一个@WriteOperation(HTTP发布)使用请求体,即消耗谓词的从句为application/vnd.spring-boot.actuator.v2+json, application/json. 对于所有其他作,以下消耗条款是空的。spring-doc.cadn.net.cn

生产

生产谓词的子句可以通过以下方式确定生产属性@DeleteOperation,@ReadOperation@WriteOperation附注。 该属性是可选的。 如果不使用,则生产条款是自动确定的。spring-doc.cadn.net.cn

如果作方法返回无效无效生产条款是空的。 如果作方法返回资源生产从句为应用/八位元组流. 对于所有其他作,以下生产从句为application/vnd.spring-boot.actuator.v2+json, application/json.spring-doc.cadn.net.cn

Web端点响应状态

端点作的默认响应状态取决于作类型(读、写或删除)以及作返回的内容(如果有的话)。spring-doc.cadn.net.cn

如果@ReadOperation返回一个值,响应状态将是200(OK)。 如果没有返回某个值,响应状态将为404(未找到)。spring-doc.cadn.net.cn

如果@WriteOperation@DeleteOperation返回一个值,响应状态将是200(OK)。 如果没有返回值,回复状态将是204(无内容)。spring-doc.cadn.net.cn

如果调用作时没有指定所需参数或参数无法转换为所需类型,则作方法不会被调用,响应状态将为400(错误请求)。spring-doc.cadn.net.cn

Web端点范围请求

你可以用 HTTP 范围请求来请求 HTTP 资源的一部分。 使用Spring MVC或Spring Web Flux时,返回的作是资源自动支持射程请求。spring-doc.cadn.net.cn

使用Jersey时不支持射击场请求。

Web 端点安全

对网络端点或特定网络端点扩展的作可以接收当前的主要安全上下文作为方法参数。 前者通常与以下情况结合使用@Nullable为认证用户和未认证用户提供不同的行为。 后者通常用于通过其isUserInRole(String)方法。spring-doc.cadn.net.cn

健康信息

你可以使用健康信息检查你的申请状态。 监控软件常用它来提醒生产系统宕机。 由健康端点依赖于管理。端点。健康。显示-详情管理端点.健康.show-components属性,可以配置为以下之一的值:spring-doc.cadn.net.cn

名称 描述

从不spring-doc.cadn.net.cn

细节从未显示。spring-doc.cadn.net.cn

授权时间spring-doc.cadn.net.cn

详情仅显示给授权用户。 授权角色可以通过以下方式配置管理端点健康角色.spring-doc.cadn.net.cn

总是spring-doc.cadn.net.cn

详细信息会向所有用户展示。spring-doc.cadn.net.cn

默认值为从不. 当用户处于一个或多个端点的角色时,即被视为被授权。 如果端点没有配置角色(默认配置),所有已认证的用户都被视为已授权。 你可以通过使用管理端点健康角色财产。spring-doc.cadn.net.cn

如果您已获得申请并希望使用总是您的安全配置必须允许认证和未认证用户访问健康端点。

健康信息是从以下内容中收集的健康贡献者登记册(默认情况下,全部健康贡献者在你的应用上下文). Spring Boot 包含多种自动配置功能健康贡献者豆子,你也可以自己写。spring-doc.cadn.net.cn

一个健康贡献者可以是健康指标或者CompositeHealth贡献者. 一个健康指标提供实际健康信息,包括地位. 一个CompositeHealth贡献者提供其他的复合健康贡献者实例。 贡献者合在一起形成树状结构,以表示整体系统的健康状况。spring-doc.cadn.net.cn

默认情况下,最终系统健康值由状态聚合器,将状态从每个中排序健康指标基于有序的状态列表。 排序列表中的第一个状态用作整体健康状态。 如果没有健康指标返回已知的状态状态聚合器未知使用状态。spring-doc.cadn.net.cn

你可以使用健康贡献者登记册在运行时注册和取消注册健康指示器。

自动配置健康指示器

在适当情况下,Spring Boot 会自动配置健康指标Beans列于下表。 你也可以通过配置来启用或禁用选定的指示器management.health.key.enabled, 其中钥匙下表列出:spring-doc.cadn.net.cn

钥匙 名称 描述

Cassandraspring-doc.cadn.net.cn

Cassandra驾驶健康指标spring-doc.cadn.net.cn

检查Cassandra数据库是否已上线。spring-doc.cadn.net.cn

Couchbasespring-doc.cadn.net.cn

CouchbaseHealthIndicatorspring-doc.cadn.net.cn

检查Couchbase集群是否已启动。spring-doc.cadn.net.cn

分贝spring-doc.cadn.net.cn

数据源健康指标spring-doc.cadn.net.cn

检查连接数据来源可以获得。spring-doc.cadn.net.cn

磁盘空间spring-doc.cadn.net.cn

磁盘空间健康指示器spring-doc.cadn.net.cn

检查磁盘空间是否不足。spring-doc.cadn.net.cn

弹性搜索spring-doc.cadn.net.cn

ElasticsearchRestClientHealthIndicatorspring-doc.cadn.net.cn

检查Elasticsearch集群是否已启动。spring-doc.cadn.net.cn

Hazelcastspring-doc.cadn.net.cn

Hazelcast健康指示器spring-doc.cadn.net.cn

检查Hazelcast服务器是否已运行。spring-doc.cadn.net.cn

JMSspring-doc.cadn.net.cn

Jms健康指标spring-doc.cadn.net.cn

检查JMS经纪人是否在线。spring-doc.cadn.net.cn

LDAPspring-doc.cadn.net.cn

LdapHealthIndicatorspring-doc.cadn.net.cn

检查LDAP服务器是否已运行。spring-doc.cadn.net.cn

邮件spring-doc.cadn.net.cn

MailHealthIndicatorspring-doc.cadn.net.cn

检查邮件服务器是否已运行。spring-doc.cadn.net.cn

蒙哥spring-doc.cadn.net.cn

MongoHealthIndicatorspring-doc.cadn.net.cn

检查Mongo数据库是否已上线。spring-doc.cadn.net.cn

neo4jspring-doc.cadn.net.cn

Neo4j健康指标spring-doc.cadn.net.cn

检查Neo4j数据库是否已上线。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

PingHealthIndicatorspring-doc.cadn.net.cn

总是这样回应向上.spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

兔子健康指示器spring-doc.cadn.net.cn

检查兔子服务器是否已运行。spring-doc.cadn.net.cn

Redisspring-doc.cadn.net.cn

RedisHealthIndicatorspring-doc.cadn.net.cn

检查Redis服务器是否已运行。spring-doc.cadn.net.cn

SSL(高级SSL)spring-doc.cadn.net.cn

SslHealthIndicatorspring-doc.cadn.net.cn

检查SSL证书是否正常。spring-doc.cadn.net.cn

你可以通过设置management.health.defaults.enabled财产。
SSL(高级SSL) 健康指标具有一个名为管理.健康.ssl.证书-validity-warning-threshold. 你可以利用这个门槛给自己足够的时间来轮换即将到期的证书。 如果SSL证书在该阈值定义的期限内失效,健康指标将在其回复的详细信息部分报告此事,具体内容如下详情.有效链.证书。[*].有效性.status将具有价值WILL_EXPIRE_SOON.

附加健康指标豆子默认启用:spring-doc.cadn.net.cn

钥匙 名称 描述

活态spring-doc.cadn.net.cn

活体状态健康指标spring-doc.cadn.net.cn

暴露“活体性”应用可用性状态。spring-doc.cadn.net.cn

准备状态spring-doc.cadn.net.cn

准备状态健康指标spring-doc.cadn.net.cn

暴露“准备”应用可用性状态。spring-doc.cadn.net.cn

这些可以通过使用管理端点.健康探测器.enabled配置属性。spring-doc.cadn.net.cn

编写自定义健康指标

为了提供自定义健康信息,你可以注册实现健康指标接口。 你需要提供健康()方法并返回健康响应。 这健康回复应包含状态,并可选择添加更多细节以展示。 以下代码展示了一个示例健康指标实现:spring-doc.cadn.net.cn

import org.springframework.boot.health.contributor.Health;
import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class MyHealthIndicator 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() {
		// perform some specific health check
		return ...
	}

}
import org.springframework.boot.health.contributor.Health
import org.springframework.boot.health.contributor.HealthIndicator
import org.springframework.stereotype.Component

@Component
class MyHealthIndicator : HealthIndicator {

	override fun health(): Health {
		val errorCode = check()
		if (errorCode != 0) {
			return Health.down().withDetail("Error Code", errorCode).build()
		}
		return Health.up().build()
	}

	private fun check(): Int {
		// perform some specific health check
		return  ...
	}

}
给定标识符健康指标是没有健康指标如果有后缀,如果存在的话。 在前面的例子中,健康信息出现在一个名为.
健康指示通常通过HTTP调用,需要在任何连接超时前做出响应。 Spring Boot 会记录任何健康指示器响应超过 10 秒的警告信息。 如果你想配置这个阈值,可以用管理.端点.健康.日志.慢-指示-阈值财产。

除了Spring Boot预定义的外地位类型健康可以返回自定义地位代表一个新的系统状态。 在这种情况下,你还需要提供定制的状态聚合器或者你必须通过使用管理端点健康状态命令配置属性。spring-doc.cadn.net.cn

例如,假设地位其代码为致命正在使用你的某个健康指标实现。 要配置严重度顺序,请在应用属性中添加以下属性:spring-doc.cadn.net.cn

management.endpoint.health.status.order=fatal,down,out-of-service,unknown,up
management:
  endpoint:
    health:
      status:
        order: "fatal,down,out-of-service,unknown,up"

响应中的HTTP状态码反映了整体健康状态。 默认情况下,OUT_OF_SERVICE503号地图。 任何未绘制的健康状态,包括向上映射到200。 如果你通过HTTP访问健康端点,也可以注册自定义状态映射。 配置自定义映射会禁用 的默认映射OUT_OF_SERVICE. 如果你想保留默认映射,必须明确配置它们,同时也要自定义映射。 例如,以下性质映射致命到503(服务不可用),并保留了默认映射OUT_OF_SERVICE:spring-doc.cadn.net.cn

management.endpoint.health.status.http-mapping.down=503
management.endpoint.health.status.http-mapping.fatal=503
management.endpoint.health.status.http-mapping.out-of-service=503
management:
  endpoint:
    health:
      status:
        http-mapping:
          down: 503
          fatal: 503
          out-of-service: 503
如果你需要更多控制权,可以自己定义HttpCodeStatusMapper豆。

下表展示了内置状态的默认状态映射:spring-doc.cadn.net.cn

地位 映射

spring-doc.cadn.net.cn

SERVICE_UNAVAILABLE (503)spring-doc.cadn.net.cn

OUT_OF_SERVICEspring-doc.cadn.net.cn

SERVICE_UNAVAILABLE (503)spring-doc.cadn.net.cn

向上spring-doc.cadn.net.cn

默认情况下没有映射,所以 HTTP 状态是200spring-doc.cadn.net.cn

未知spring-doc.cadn.net.cn

默认情况下没有映射,所以 HTTP 状态是200spring-doc.cadn.net.cn

反应性健康指标

对于响应式应用,比如使用 Spring WebFlux 的应用,ReactiveHealth贡献者提供一个非阻塞的契约,用于获取应用程序健康状态。 类似于传统健康贡献者,健康信息是从以下内容中收集的ReactiveHealth贡献者注册(默认情况下,全部健康贡献者ReactiveHealth贡献者在你的应用上下文). 定期健康贡献者未与响应式API进行检查的实例则在弹性调度器上执行。spring-doc.cadn.net.cn

在响应式应用中,你应该使用ReactiveHealth贡献者注册在运行时注册和取消注册健康指示器。 如果你需要注册一个常客健康贡献者你应该用ReactiveHealth贡献者#adapt.

要从响应式API提供自定义健康信息,你可以注册实现反应健康指示器接口。 以下代码展示了一个示例反应健康指示器实现:spring-doc.cadn.net.cn

import reactor.core.publisher.Mono;

import org.springframework.boot.health.contributor.Health;
import org.springframework.boot.health.contributor.ReactiveHealthIndicator;
import org.springframework.stereotype.Component;

@Component
public class MyReactiveHealthIndicator implements ReactiveHealthIndicator {

	@Override
	public Mono<Health> health() {
		return doHealthCheck().onErrorResume((exception) ->
			Mono.just(new Health.Builder().down(exception).build()));
	}

	private Mono<Health> doHealthCheck() {
		// perform some specific health check
		return ...
	}

}
import org.springframework.boot.health.contributor.Health
import org.springframework.boot.health.contributor.ReactiveHealthIndicator
import org.springframework.stereotype.Component
import reactor.core.publisher.Mono

@Component
class MyReactiveHealthIndicator : ReactiveHealthIndicator {

	override fun health(): Mono<Health> {
		return doHealthCheck().onErrorResume { exception: Throwable ->
			Mono.just(Health.Builder().down(exception).build())
		}
	}

	private fun doHealthCheck(): Mono<Health> {
		// perform some specific health check
		return  ...
	}

}
为了自动处理错误,考虑从 扩展到摘要:ReactiveHealthIndicator.

自动配置的反应健康指标

在适当情况下,Spring Boot 会自动配置以下内容反应健康指示器豆:spring-doc.cadn.net.cn

钥匙 名称 描述

Cassandraspring-doc.cadn.net.cn

CassandraDriverReactiveHealthIndicatorspring-doc.cadn.net.cn

检查Cassandra数据库是否已上线。spring-doc.cadn.net.cn

Couchbasespring-doc.cadn.net.cn

CouchbaseReactiveHealthIndicatorspring-doc.cadn.net.cn

检查Couchbase集群是否已启动。spring-doc.cadn.net.cn

弹性搜索spring-doc.cadn.net.cn

弹性搜索反应健康指标spring-doc.cadn.net.cn

检查Elasticsearch集群是否已启动。spring-doc.cadn.net.cn

蒙哥spring-doc.cadn.net.cn

MongoReactiveHealthIndicatorspring-doc.cadn.net.cn

检查Mongo数据库是否已上线。spring-doc.cadn.net.cn

neo4jspring-doc.cadn.net.cn

Neo4jReactiveHealthIndicatorspring-doc.cadn.net.cn

检查Neo4j数据库是否已上线。spring-doc.cadn.net.cn

Redisspring-doc.cadn.net.cn

RedisReactiveHealthIndicatorspring-doc.cadn.net.cn

检查Redis服务器是否已运行。spring-doc.cadn.net.cn

如有必要,应动指示器替代常规指示器。 另外,任何健康指标未被显式处理的部分会自动包裹。

健康团体

有时将健康指标分组,用于不同用途是有用的。spring-doc.cadn.net.cn

要创建健康指示组,你可以使用管理.端点.健康.group.<name>属性,并指定健康指示器ID列表为包括排除. 例如,要创建一个仅包含数据库指标的组,可以定义以下内容:spring-doc.cadn.net.cn

management.endpoint.health.group.custom.include=db
management:
  endpoint:
    health:
      group:
        custom:
          include: "db"

然后你可以通过点击来查看结果localhost:8080/actuator/health/custom.spring-doc.cadn.net.cn

同样,要创建一个排除数据库指标但包含所有其他指标的组,可以定义以下内容:spring-doc.cadn.net.cn

management.endpoint.health.group.custom.exclude=db
management:
  endpoint:
    health:
      group:
        custom:
          exclude: "db"

默认情况下,如果健康组包含或排除不存在的健康指标,启动将失败。 要禁用该行为集管理.端点.健康.验证-组-成员false.spring-doc.cadn.net.cn

默认情况下,组继承的是相同的状态聚合器HttpCodeStatusMapper设置为系统健康状态。 不过,你也可以按组定义这些。 你也可以覆盖节目详情角色如有需要:spring-doc.cadn.net.cn

management.endpoint.health.group.custom.show-details=when-authorized
management.endpoint.health.group.custom.roles=admin
management.endpoint.health.group.custom.status.order=fatal,up
management.endpoint.health.group.custom.status.http-mapping.fatal=500
management.endpoint.health.group.custom.status.http-mapping.out-of-service=500
management:
  endpoint:
    health:
      group:
        custom:
          show-details: "when-authorized"
          roles: "admin"
          status:
            order: "fatal,up"
            http-mapping:
              fatal: 500
              out-of-service: 500
你可以使用@Qualifier(“组名”)如果你需要注册自定义状态聚合器HttpCodeStatusMapper豆子,供团队使用。

健康团体也可以包含或排除CompositeHealth贡献者. 你也可以只包含或排除某一部分CompositeHealth贡献者. 这可以通过组件的完全限定名称实现,具体如下:spring-doc.cadn.net.cn

management.endpoint.health.group.custom.include="test/primary"
management.endpoint.health.group.custom.exclude="test/primary/b"

在上述示例中,该习惯该组将包括健康贡献者与名称一起主要它是复合材料的一个组成部分测试. 这里主要它本身是一个复合体,且健康贡献者与名称一起b将被排除在习惯群。spring-doc.cadn.net.cn

健康小组可以在主端口或管理端口的额外路径上提供。 这在云环境中非常有用,比如 Kubernetes,因为执行器端点通常会为执行器端点使用独立的管理端口以保障安全。 拥有独立端口可能导致健康检查不可靠,因为即使健康检查成功,主应用也可能无法正常工作。 健康组可以通过以下方式配置额外路径:spring-doc.cadn.net.cn

management.endpoint.health.group.live.additional-path="server:/healthz"

这将使健康组可在主服务器端口提供,地址为/healthz. 前缀是强制性的,必须是以下之一服务器:(代表主服务器端口)或管理:(表示管理端口,如果配置的话。) 路径必须是单一路径段。spring-doc.cadn.net.cn

数据源健康

数据来源健康指标显示标准数据源和路由数据源豆的健康状况。 路由数据源的健康状况包括其每个目标数据源的健康状况。 在健康端点的响应中,每个路由数据源的目标都通过其路由密钥命名。 如果你不愿意在指示器输出中包含路由数据源,设management.health.db.ignore-routing-data-sourcestrue.spring-doc.cadn.net.cn

Kubernetes 探测器

部署在Kubernetes上的应用程序可以通过容器探测提供其内部状态的信息。 根据你的Kubernetes配置,kubelet会调用这些探针并对结果做出反应。spring-doc.cadn.net.cn

默认情况下,Spring Boot 会管理你的应用可用性状态。 如果部署在 Kubernetes 环境中,执行器会从应用可用性接口并用于专门的健康指标活体状态健康指标准备状态健康指标. 这些指标显示在全球健康端点(“/执行器/健康”). 它们也通过使用健康组作为独立的HTTP探针被暴露:“/执行器/健康/活力”“/执行器/健康/准备”.spring-doc.cadn.net.cn

然后你可以用以下端点信息配置你的Kubernetes基础设施:spring-doc.cadn.net.cn

livenessProbe:
  httpGet:
    path: "/actuator/health/liveness"
    port: <actuator-port>
  failureThreshold: ...
  periodSeconds: ...

readinessProbe:
  httpGet:
    path: "/actuator/health/readiness"
    port: <actuator-port>
  failureThreshold: ...
  periodSeconds: ...
<执行器端口>应该设置为执行器端点可用的端口。 可能是主服务器端口,或者是另一个管理端口,如果“管理.服务器.port”属性已设定。

这些健康组会自动启用。 你可以通过使用管理端点.健康探测器.enabled配置属性。spring-doc.cadn.net.cn

如果应用启动时间超过配置的活跃期,Kubernetes 会提到“启动探针”作为一种可能的解决方案。 一般来说,“启动探针”这里不一定需要,因为“准备探测器”在所有启动任务完成前都会失败。 这意味着你的应用在准备好之前不会收到流量。 不过,如果你的申请启动时间很长,可以考虑使用“启动探针”确保Kubernetes不会在应用启动过程中扼杀它。 请参见描述探针在应用生命周期中行为的部分。

如果你的 Actuator 端点部署在独立的管理环境中,端点不会使用与主应用相同的网络基础设施(端口、连接池、框架组件)。 在这种情况下,即使主要应用程序无法正常工作(例如无法接受新连接),探测检查也可能成功。 因此,制作活性准备主服务器端口上有健康组。 这可以通过设置以下属性来实现:spring-doc.cadn.net.cn

management.endpoint.health.probes.add-additional-paths=true

这将使活性该组可访问/livez以及准备该组可访问/readyz在主服务器端口上。 路径可以通过以下方式进行自定义附加路径关于每个组的财产,详情请参见健康组spring-doc.cadn.net.cn

使用Kubernetes探测器检查外部状态

执行器将“活跃度”和“准备度”探针配置为健康组。 这意味着所有健康组的功能都为他们开放。 例如,你可以配置额外的健康指标:spring-doc.cadn.net.cn

management.endpoint.health.group.readiness.include=readinessState,customCheck
management:
  endpoint:
    health:
      group:
        readiness:
          include: "readinessState,customCheck"

默认情况下,Spring Boot 不会在这些组中添加其他健康指标。spring-doc.cadn.net.cn

“活体”探针不应依赖于外部系统的健康检查。 如果应用的活体状态被破坏,Kubernetes 会尝试通过重启应用实例来解决这个问题。 这意味着如果外部系统(如数据库、Web API或外部缓存)发生故障,Kubernetes可能会重启所有应用实例,并引发串联故障。spring-doc.cadn.net.cn

至于“准备度”探针,应用开发者必须谨慎选择检查外部系统。 因此,Spring Boot 在准备度探测中没有包含任何额外的健康检查。 如果应用实例的准备状态尚未准备好,Kubernetes 不会将流量路由到该实例。 某些外部系统可能不被应用实例共享,在这种情况下,它们可以包含在准备探测中。 其他外部系统可能对应用不一定(应用可能有断路器和备份),在这种情况下,这些系统绝对不应被包含在内。 不幸的是,所有应用实例共享的外部系统很常见,你必须做出判断:将其纳入准备探测,预期当外部服务宕机时应用会被停用,还是放弃它,处理栈更上一层的故障,比如调用端的断路器。spring-doc.cadn.net.cn

如果所有应用实例都未准备好,则有一个 Kubernetes 服务type=ClusterIP节点端口不接受任何输入连接。 没有HTTP错误响应(如503等),因为没有连接。 一项服务类型=负载均衡器是否接受连接,取决于提供商。 拥有显式入口的服务也会以某种方式响应,取决于实现——入口服务本身必须决定如何处理下游的“拒绝连接”。 HTTP 503 很可能在负载均衡器和入口的情况下都适用。

此外,如果应用使用 Kubernetes 自动扩展,应用从负载均衡器中移除应用的反应可能不同,具体取决于其自动扩展器的配置。spring-doc.cadn.net.cn

应用生命周期与探针状态

Kubernetes Probes 支持的一个重要方面是其与应用生命周期的一致性。 两者之间存在显著差异可用性状态(即应用程序的内存内部状态) 以及实际探针(暴露该状态)。 根据应用生命周期的阶段,探针可能无法使用。spring-doc.cadn.net.cn

Spring Boot 会在启动和关闭期间发布应用程序事件, 探测器可以监听此类事件并揭示可用性状态信息。spring-doc.cadn.net.cn

下表展示了可用性状态以及不同阶段HTTP连接器的状态。spring-doc.cadn.net.cn

当 Spring Boot 应用程序启动时:spring-doc.cadn.net.cn

创业阶段 活态 准备状态 HTTP 服务器 笔记

开始spring-doc.cadn.net.cn

破碎spring-doc.cadn.net.cn

REFUSING_TRAFFICspring-doc.cadn.net.cn

还没开始spring-doc.cadn.net.cn

Kubernetes 会检查“活体”探测器,如果时间太长会重启应用。spring-doc.cadn.net.cn

开始spring-doc.cadn.net.cn

正确spring-doc.cadn.net.cn

REFUSING_TRAFFICspring-doc.cadn.net.cn

拒绝请求spring-doc.cadn.net.cn

应用上下文被刷新。该应用执行启动任务,尚未接收流量。spring-doc.cadn.net.cn

准备spring-doc.cadn.net.cn

正确spring-doc.cadn.net.cn

ACCEPTING_TRAFFICspring-doc.cadn.net.cn

接受请求spring-doc.cadn.net.cn

启动任务已完成。应用程序正在接收流量。spring-doc.cadn.net.cn

当 Spring Boot 应用程序关闭时:spring-doc.cadn.net.cn

停机阶段 活态 准备状态 HTTP 服务器 笔记

运行spring-doc.cadn.net.cn

正确spring-doc.cadn.net.cn

ACCEPTING_TRAFFICspring-doc.cadn.net.cn

接受请求spring-doc.cadn.net.cn

已请求关闭。spring-doc.cadn.net.cn

优雅地关闭spring-doc.cadn.net.cn

正确spring-doc.cadn.net.cn

REFUSING_TRAFFICspring-doc.cadn.net.cn

新的请求被拒绝spring-doc.cadn.net.cn

启用后,优雅关机处理飞行中请求spring-doc.cadn.net.cn

关闭完成spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

服务器关闭spring-doc.cadn.net.cn

应用上下文关闭,应用程序关闭。spring-doc.cadn.net.cn

有关Kubernetes部署的更多信息,请参见Kubernetes容器生命周期

应用信息

应用信息揭示了从所有领域收集的各种信息信息贡献者豆子定义在你的应用上下文. Spring Boot 包含多种自动配置功能信息贡献者豆子,你也可以自己写。spring-doc.cadn.net.cn

自动配置的信息贡献者

在适当情况下,Spring 会自动配置以下内容信息贡献者豆:spring-doc.cadn.net.cn

身份证 名称 描述 前提条件

构建spring-doc.cadn.net.cn

BuildInfo贡献者spring-doc.cadn.net.cn

暴露构建信息。spring-doc.cadn.net.cn

一个META-INF/build-info.properties资源。spring-doc.cadn.net.cn

环境spring-doc.cadn.net.cn

环境信息贡献者spring-doc.cadn.net.cn

暴露出来自环境其名称以信息。.spring-doc.cadn.net.cn

没有。spring-doc.cadn.net.cn

gitspring-doc.cadn.net.cn

GitInfo贡献者spring-doc.cadn.net.cn

暴露git信息。spring-doc.cadn.net.cn

一个git.properties资源。spring-doc.cadn.net.cn

Javaspring-doc.cadn.net.cn

JavaInfo贡献者spring-doc.cadn.net.cn

暴露 Java 运行时信息。spring-doc.cadn.net.cn

没有。spring-doc.cadn.net.cn

操作系统spring-doc.cadn.net.cn

OsInfo贡献者spring-doc.cadn.net.cn

暴露作系统信息。spring-doc.cadn.net.cn

没有。spring-doc.cadn.net.cn

过程spring-doc.cadn.net.cn

ProcessInfo贡献者spring-doc.cadn.net.cn

揭示流程信息。spring-doc.cadn.net.cn

没有。spring-doc.cadn.net.cn

SSL(高级SSL)spring-doc.cadn.net.cn

SslInfo贡献者spring-doc.cadn.net.cn

暴露SSL证书信息。spring-doc.cadn.net.cn

已配置SSL捆绑包。spring-doc.cadn.net.cn

是否允许单个贡献者由其控制management.info.<id>.enabled财产。 不同贡献者对该属性有不同的默认设置,取决于他们的前提条件和所披露信息的性质。spring-doc.cadn.net.cn

如果没有任何前提条件说明必须启用它们,环境,Java,操作系统过程贡献者默认被禁用。这SSL(高级SSL)贡献者必须配置SSL捆绑包,但默认是禁用的。 每个都可以通过设置其management.info.<id>.enabled属性到true.spring-doc.cadn.net.cn

构建git信息贡献者默认已启用。 每个都可以通过设置其management.info.<id>.enabled属性到false. 或者,要禁用通常默认启用的所有贡献者,请设置management.info.defaults.enabled属性到false.spring-doc.cadn.net.cn

自定义应用信息

环境已启用贡献者,你可以自定义通过信息按设置的终点信息。*春季房产。 都环境信息密钥会自动曝光。 例如,你可以在你的application.properties文件:spring-doc.cadn.net.cn

info.app.encoding=UTF-8
info.app.java.source=17
info.app.java.target=17
info:
  app:
    encoding: "UTF-8"
    java:
      source: "17"
      target: "17"

与其硬编码这些值,你也可以在构建时扩展信息属性spring-doc.cadn.net.cn

假设你用Maven,你可以把前面的例子重写如下:spring-doc.cadn.net.cn

info:
  app:
    encoding: "@project.build.sourceEncoding@"
    java:
      source: "@java.version@"
      target: "@java.version@"

Git 提交信息

另一个有用的特性信息端点是它发布关于你状态信息的能力git项目构建时的源代码仓库。 如果GitProperties豆子有供应,你可以使用信息端点以暴露这些属性。spring-doc.cadn.net.cn

一个GitProperties如果git.properties文件可在类路径的根节点上提供。 详情请参见生成 Git 信息

默认情况下,端点会暴露git.branch,git.commit.idgit.commit.time如果存在,则具有性质。 如果你不希望这些属性出现在端点响应中,就需要将它们排除在git.properties文件。 如果你想显示完整的 git 信息(也就是git.properties),使用管理信息.git.mode性质,具体如下:spring-doc.cadn.net.cn

management.info.git.mode=full
management:
  info:
    git:
      mode: "full"

要禁用git提交信息信息端点完全,设management.info.git.enabled属性到false如下:spring-doc.cadn.net.cn

management.info.git.enabled=false
management:
  info:
    git:
      enabled: false

建造信息

如果BuildProperties豆子可用,信息Endpoint 也可以发布关于你构建的信息。 如果META-INF/build-info.properties文件可在类路径中获得。spring-doc.cadn.net.cn

Maven 和 Gradle 插件都能生成该文件。 详情请参见生成构建信息

Java 信息

信息端点发布关于您的 Java 运行环境的信息,参见JavaInfo更多细节请阅读。spring-doc.cadn.net.cn

作系统信息

信息端点发布关于作系统的信息,参见OsInfo更多细节请阅读。spring-doc.cadn.net.cn

工艺信息

信息Endpoint 发布了关于你流程的信息,参见流程信息更多细节请阅读。spring-doc.cadn.net.cn

SSL 信息

信息端点发布关于你的 SSL 证书的信息(通过 SSL Bundles 配置),详见SslInfo更多细节请阅读。spring-doc.cadn.net.cn

撰写定制信息贡献者

为了提供自定义应用信息,你可以注册实现信息贡献者接口。spring-doc.cadn.net.cn

以下示例贡献了示例单一值的条目:spring-doc.cadn.net.cn

import java.util.Collections;

import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;

@Component
public class MyInfoContributor implements InfoContributor {

	@Override
	public void contribute(Info.Builder builder) {
		builder.withDetail("example", Collections.singletonMap("key", "value"));
	}

}
import org.springframework.boot.actuate.info.Info
import org.springframework.boot.actuate.info.InfoContributor
import org.springframework.stereotype.Component
import java.util.Collections

@Component
class MyInfoContributor : InfoContributor {

	override fun contribute(builder: Info.Builder) {
		builder.withDetail("example", Collections.singletonMap("key", "value"))
	}

}

如果你到达信息端点,你应该会看到包含以下额外条目的响应:spring-doc.cadn.net.cn

{
	"example": {
		"key" : "value"
	}
}

软件材料清单(SBOM)

SBOM端点暴露了软件物料清单。 CycloneDX SBOMs可以被自动检测,但其他格式也可以手动配置。spring-doc.cadn.net.cn

SBOM执行器端点会暴露一个名为“application”的SBOM,描述你应用的内容。spring-doc.cadn.net.cn

要在项目构建时自动生成 CycloneDX SBOM,请参见“生成 CycloneDX SBOM”部分。

其他SBOM格式

如果你想以不同格式发布SBOM,有一些配置属性可以使用。spring-doc.cadn.net.cn

配置性质管理端点.sbom.application.location为应用程序SBOM设置位置。 例如,将此设置为classpath:sbom.json将使用以下内容/sbom.json类路径上的资源。spring-doc.cadn.net.cn

CycloneDX、SPDX和Syft格式SBOM的媒体类型会自动检测。 要覆盖自动检测的媒体类型,请使用配置属性管理端点.sbom.application.media-type.spring-doc.cadn.net.cn

其他SBOMs(小企业管理)

执行器端点可以处理多个SBOM。 要添加SBOM,请使用配置属性管理.端点.sbom.additional,如本例所示:spring-doc.cadn.net.cn

management.endpoint.sbom.additional.system.location=optional:file:/system.spdx.json
management.endpoint.sbom.additional.system.media-type=application/spdx+json
management:
  endpoint:
    sbom:
      additional:
        system:
          location: "optional:file:/system.spdx.json"
          media-type: "application/spdx+json"

这将添加一个名为“system”的SBOM,存储在/system.spdx.json. 这自选:前缀可以用来防止文件不存在时启动失败。spring-doc.cadn.net.cn