如何从spring boot健康端点获取某些字段

时间:2017-10-30 18:20:28

标签: spring rest spring-boot

我已经成功创建了一个返回所有基本端点的springboot应用程序。现在我想在我的请求中从该端点返回几个字段。例如,从/ health页面返回到我的休息呼叫状态。如何过滤此信息或使我的休息呼叫更具体?

实际要求是来自/ env的两个返回少数字段,/一次调用中不同应用程序的运行状况。通过返回env和health的所有字段,我能够做到这一点。我只需要从它们返回特定字段。我也可以在内存json对象中使用,如果是这样,我应该怎么做?

3 个答案:

答案 0 :(得分:1)

最后我想出了如何创建它。因此传入的json对象由LinkedHashMap类型中的字段组成。所以我使用键

消耗了它的字段值
LinkedHashMap response = (LinkedHashMap)restTemplate.getForObject("http://localhost:8080/env",Object.class);
EnvProperties variables = new EnvProperties (response);

所有字段的包装POJO

public EnvProperties (LinkedHashMap body) {
   this.sysProperties = new SysEnvProperties((LinkedHashMap) body.get("systemProperties"));
 }

此字段的POJO,

 public SysEnvProperties(LinkedHashMap body) {
   this.javaVersion = body.get("java.version").toString();
}

稍后创建一个新的json字符串

 @Override
 public String toString() {
  String s = null;
    try {
        s = mapper.writeValueAsString(this);
      } catch (JsonProcessingException e) {
          e.printStackTrace();
        }
      return s;
   }

我对感兴趣的领域重复了同样的事情,为每个领域创建了一个POJO。最后使用类似的包装类调用这些字段,其toString方法仅返回所需字段的预期json对象。

答案 1 :(得分:0)

您也可以创建自定义健康端点或自定义健康检查器。

例如

@Component
public class CustomHealthCheck extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder bldr) throws Exception {
        // TODO implement some check
        boolean running = true;
        if (running) {
          bldr.up();
        } else {
          bldr.down();
        }
    }
}

进一步阅读:

  1. http://www.christianmenz.ch/programmieren/spring-boot-health-checks/
  2. http://briansjavablog.blogspot.be/2017/09/health-checks-metric-s-more-with-spring.html
  3. http://www.baeldung.com/spring-boot-actuators

答案 2 :(得分:0)

您可以找到tutorial here。但是,您要实现的接口是:

org.springframework.boot.actuate.endpoint.Endpoint

与创建Controller类似。这是您的/custom-health端点。

org.springframework.boot.actuate.metrics.CounterService

您可以计算/metrics上可用的整数值指标。

org.springframework.boot.actuate.metrics.GaugeService

或者,您可以衡量/metrics上可用的双值指标。

org.springframework.boot.actuate.health.HealthIndicator

将指标添加到/health端点。