将 Spring 引导执行器健康状态从 UP/DOWN 转换为 TRUE/FALSE
Convert Spring Boot Actuator health status from UP/DOWN to TRUE/FALSE
有没有办法将状态字段值从 UP/DOWN
{"status":"UP"}
到 TRUE/FALSE 如下所示:
{"status":true}
我想使用 spring 执行器正在使用的相同检查逻辑,不需要自定义检查逻辑,只想更新状态值。
假设您的公司建立了新的 API 标准,因为应用程序范围涉及大量不同的框架,我们不是在谈论 Spring 仅启动应用程序(因为否则' d 有点烦人):
只需在 /actuator/customstatus
下实施您自己的 @Endpoint
并汇总其下的所有 HealthIndicator
状态。您可能希望从 Spring Boots HealthEndpoint
和 CompositeHealthIndicator
类 中获得灵感,了解如何做到这一点。 (主题HealthAggregator
)
以下代码将注册一个新的执行器端点 /healthy
,它使用与默认 /health
端点相同的机制。
package com.example;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;
@Component
@Endpoint(id = "healthy") // Change this to expose the endpoint under a different name
public class BooleanHealthEndpoint {
HealthEndpoint healthEndpoint;
public BooleanHealthEndpoint(HealthEndpoint healthEndpoint) {
this.healthEndpoint = healthEndpoint;
}
@ReadOperation
public Health getHealth() {
Boolean healthy = healthEndpoint.health().getStatus().equals(Status.UP);
return new Health(healthy);
}
public static class Health {
private Boolean status;
public Health(Boolean status) {
this.status = status;
}
public Boolean getStatus() {
return status;
}
}
}
如果您不想添加自定义 /healthy
端点并继续使用默认 /health
端点,您可以在属性文件中添加以下设置,然后它将映射到默认端点:
management.endpoints.web.path-mapping.health=internal/health
management.endpoints.web.path-mapping.healthy=/health
有没有办法将状态字段值从 UP/DOWN
{"status":"UP"}
到 TRUE/FALSE 如下所示:
{"status":true}
我想使用 spring 执行器正在使用的相同检查逻辑,不需要自定义检查逻辑,只想更新状态值。
假设您的公司建立了新的 API 标准,因为应用程序范围涉及大量不同的框架,我们不是在谈论 Spring 仅启动应用程序(因为否则' d 有点烦人):
只需在 /actuator/customstatus
下实施您自己的 @Endpoint
并汇总其下的所有 HealthIndicator
状态。您可能希望从 Spring Boots HealthEndpoint
和 CompositeHealthIndicator
类 中获得灵感,了解如何做到这一点。 (主题HealthAggregator
)
以下代码将注册一个新的执行器端点 /healthy
,它使用与默认 /health
端点相同的机制。
package com.example;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;
@Component
@Endpoint(id = "healthy") // Change this to expose the endpoint under a different name
public class BooleanHealthEndpoint {
HealthEndpoint healthEndpoint;
public BooleanHealthEndpoint(HealthEndpoint healthEndpoint) {
this.healthEndpoint = healthEndpoint;
}
@ReadOperation
public Health getHealth() {
Boolean healthy = healthEndpoint.health().getStatus().equals(Status.UP);
return new Health(healthy);
}
public static class Health {
private Boolean status;
public Health(Boolean status) {
this.status = status;
}
public Boolean getStatus() {
return status;
}
}
}
如果您不想添加自定义 /healthy
端点并继续使用默认 /health
端点,您可以在属性文件中添加以下设置,然后它将映射到默认端点:
management.endpoints.web.path-mapping.health=internal/health
management.endpoints.web.path-mapping.healthy=/health