【问题标题】:Spring Boot's health actuator - WHEN is it UP?Spring Boot 健康执行器 - 何时启动?
【发布时间】:2018-03-08 09:28:34
【问题描述】:

我找不到任何关于 Springs Health Actuator 何时返回 UP 状态的文档。你能依赖所有 @Components 被初始化吗? @Controller 会准备好处理请求吗?

【问题讨论】:

  • 自动配置的健康指标检查数据库、jmx等docs.spring.io/spring-boot/docs/current/reference/html/…
  • 所以你不知道应用上下文什么时候已经完全初始化了?
  • 主要用于端点和数据库。如果要检查应用程序上下文初始化,可以编写侦听器进行检查。
  • 好的,谢谢!不过,顶层有一个“状态”属性。这必须是应用程序范围内的 - 我想知道它告诉我们什么? {“状态”:“UP”,.....

标签: java spring actuator


【解决方案1】:

为了测试是否加载了应用上下文,可以执行这个自定义实现。

@EventListener - 使用EventListener注解的方法在上下文初始化时触发。

在下面的代码中,我在成功初始化时增加了计数器。当您点击执行器健康端点时,您将获得状态为 UP。

上下文初始化健康检查的示例实现:-

@Component
public class ApplicationContextHealthIndicator implements HealthIndicator {

    private final Logger LOG = Logger.getLogger(getClass().getName());

    public static int counter;

    @EventListener
    public void onApplicationEvent(ContextRefreshedEvent event) {
        LOG.info("Increment counter :" + counter);
        counter++;
    }

    @Override
    public Health health() {
        if (counter == 0) {
            return Health.down().withDetail("Error Code", 500).build();
        }
        return Health.up().build();
    }
}

端点 Spring 启动版本 5:-

http://localhost:8080/actuator/health

Spring actuator 可以检查数据库、Web 服务端点、电子邮件服务器等。它可以提供所有这些资源的状态,这些资源是应用程序的一部分。

Some default health indicators available

【讨论】:

  • 谢谢!请允许询问顶级“状态:UP”是什么?它可能是所有资源的聚合状态吗?我找不到任何关于此的文档。好吧,我将实际测试是否是这种情况。
  • 是的,就是聚合结果。
  • 谢谢 - 非常有帮助!仍然不确定 Spring 执行器如何在 Spring 应用程序上下文运行之前报告事情。应用程序上下文不应该被视为资源本身。我打算在我的 RestController 中添加一个健康指示器,但由于它只是一个 Spring bean,所以只要 Spring 应用程序正在运行,它就只能是 UP。毕竟应该为 Spring bean 添加健康检查吗?
  • 是的,我想过。在这种情况下,执行器应单独运行。您可以使用这些属性来配置服务器。 management.server.port:8080 management.server.address:本地主机
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 2015-08-24
  • 2018-03-03
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
相关资源
最近更新 更多