弹簧启动执行器 - 自定义健康端点

时间:2016-08-15 18:25:16

标签: java spring spring-boot spring-boot-actuator

我正在使用SpringBoot Actuator来恢复应用程序的运行状况。

public class HealthMonitor implements HealthIndicator {

    @Override
    public Health health() {
        int errorCode = check();
        if (errorCode != 0) {
            return Health.down().withDetail("Error Code", errorCode).build();
        }
        return Health.up().build();
    }

    public int check() {
        return 0;
    }

}

我看到以下回复

{
  "status": "UP",
  "diskSpace": {
    "status": "UP",
    "free": 55020113920,
    "threshold": 10485760
  },
  "db": {
    "status": "UP",
    "database": "Oracle",
    "hello": "Hello"
  }
}

我想返回类似下面的回复

{status: "Healthy"}

有办法吗?

3 个答案:

答案 0 :(得分:0)

我认为你不能说服提供的Spring Boot健康端点以一种截然不同的格式显示。

大多数Spring源代码都非常清晰,这也不例外。查看org.springframework.boot.actuate.endpoint.HealthEndpoint的来源,您会看到它有一个返回invoke()的{​​{1}}方法。你看到的JSON是杰克逊对该物体的编组。

然而,您可以创建自己的端点,以与Health完全相同的方式扩展AbstractEndpoint,返回您喜欢的任何类别。

您甚至可以将其委托给HealthEndpoint bean:

HealthEndpoint

答案 1 :(得分:0)

要自定义您的状态消息,有一种名为:withDetail() 的方法。因此,当您编写 return Health.up().build(); 时,只需将其替换为

return Health.up().withDetail("My Application Status","Healthy")

所以这会给

{My Application Status: "Healthy"}

答案 2 :(得分:-2)

Spring Boot及其健康指标有很多灵活性。

首先,根据您服务的复杂程度,您可能不需要上面描述的HealthIndicator。开箱即用,Spring Boot将根据您的弹簧配置返回状态。这包括数据库(SQL和一些noSQL),Mail,JMS等。这在section 47.6.1

中的最新Spring Boot文档中有所描述

使用或不使用HealthIndicator类返回所需内容的最简单方法是在application.properties中设置属性:

endpoints.health.sensitive =真

这可能只适用于Spring Boot的更高版本(1.4?之后)。