gpt4 book ai didi

spring-boot - 使用 Spring Actuator 时无法排除/info 和/health/{*path}

转载 作者:行者123 更新时间:2023-12-04 01:32:46 27 4
gpt4 key购买 nike

我正在使用 Spring Actuator(版本 2.2.4.RELEASE)在 /localhost:8080/my-app/actuator/health 生成健康检查端点,它工作正常。

这会生成 3 个端点,在访问 /actuator 时显示并在 Swagger(版本 2)中显示:

  1. /actuator/health
  2. /actuator/health/{*path}(在我的 swagger 页面中,它显示为 /actuator/health/**)
  3. /actuator/info

由于 AWS 的原因,我遇到了 health/** 的问题,我想删除它(我也想删除 /info不需要它)。

我已尝试将以下内容添加到我的 application.properties 文件中:

management.endpoints.web.exposure.exclude=health,info

management.endpoints.jmx.exposure.exclude=health,info

但这没有任何区别(它们仍然会生成)。我已经尝试使用 * 来查看是否会强制所有端点消失,但它也不会改变任何东西。

知道如何解决这个问题吗?

编辑 1

我发现一个属性文件正在被另一个文件覆盖。因此,使用以下命令:

management.endpoints.enabled-by-default=false
management.endpoint.health.enabled=true

摆脱 /actuator/info 端点。但是,我仍然需要摆脱 /actuator/health/{*path} 并保留 /actuator/health 端点。

最佳答案

Exposing Endpoints 中所述actuator 手册部分,web 默认公开两个端点:healthinfo

正如您正确注意到的那样,可以使用以下方式修改:

  • management.endpoints.web.exposure.exclude
  • management.endpoints.web.exposure.include

属性(排除具有更高的优先级)。

因此,您可以轻松摆脱 info 端点。

现在,health 端点提供了 2 个 URL:

  • /actuator/health
  • /actuator/health/{*path}

我不清楚您离开前者并禁用后者的动机是什么,但我检查过您至少有 2 个选择:

选项 1 - 用您自己的实现替换 health

你只需要:

  • 排除 HealthEndpointAutoConfiguration 以移除默认健康端点
  • 提供你自己的custom actuator endpoint映射到 health

选项 2:保留 /actuator/health 但删除 /actuator/health/{*path}

这两个操作都定义在org.springframework.boot.actuate.health.HealthEndpoint

@Endpoint(id = "health")
public class HealthEndpoint extends HealthEndpointSupport<HealthContributor, HealthComponent> {

// ...

@ReadOperation
public HealthComponent health() {
HealthComponent health = health(ApiVersion.V3, EMPTY_PATH);
return (health != null) ? health : DEFAULT_HEALTH;
}

@ReadOperation
public HealthComponent healthForPath(@Selector(match = Match.ALL_REMAINING) String... path) {
return health(ApiVersion.V3, path);
}
}

在第二种方法中去掉 @ReadOperation 的最简单方法是:

  • HealthEndpoint 复制到您的项目中(注意:包必须匹配)
  • 删除 healthForPath 上的 @ReadOperation 注释
  • 复制HealthEndpointSupport以防止不同类加载器导致的IllegalAccessError

关于spring-boot - 使用 Spring Actuator 时无法排除/info 和/health/{*path},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60566487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com