从另一个 Spring Boot webapp 对 Spring Boot webapp 进行健康检查
Health check on Spring Boot webapp from another Spring Boot webapp
我目前有一个 Spring 启动应用程序,我可以在其中通过执行器访问运行状况检查。
此应用依赖于另一个 Spring 启动应用 available/up 所以我的问题是:
通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方法可以对第二个应用程序进行健康检查?
本质上,我只想使用一个调用并获取两个应用程序的运行状况检查信息。
谢谢
如果App A中有controller,那么可以在controller中引入GET方法请求,指向App B的健康检查API端点。这样,您将在 App A 中拥有一个可用的 API 端点来检查 App B 的健康状况。
您可以通过实施 HealthIndicator
来开发自己的健康指标来检查后端应用程序的健康状况。所以本质上这不会太困难,因为你可以使用开箱即用的 RestTemplate,例如
public class DownstreamHealthIndicator implements HealthIndicator {
private RestTemplate restTemplate;
private String downStreamUrl;
@Autowired
public DownstreamHealthIndicator(RestTemplate restTemplate, String downStreamUrl) {
this.restTemplate = restTemplate;
this.downStreamUrl = downStreamUrl;
}
@Override
public Health health() {
try {
JsonNode resp = restTemplate.getForObject(downStreamUrl + "/health", JsonNode.class);
if (resp.get("status").asText().equalsIgnoreCase("UP")) {
return Health.up().build();
}
} catch (Exception ex) {
return Health.down(ex).build();
}
return Health.down().build();
}
}
我目前有一个 Spring 启动应用程序,我可以在其中通过执行器访问运行状况检查。
此应用依赖于另一个 Spring 启动应用 available/up 所以我的问题是:
通过覆盖第一个应用程序中的健康检查,是否有一种优雅的方法可以对第二个应用程序进行健康检查?
本质上,我只想使用一个调用并获取两个应用程序的运行状况检查信息。
谢谢
如果App A中有controller,那么可以在controller中引入GET方法请求,指向App B的健康检查API端点。这样,您将在 App A 中拥有一个可用的 API 端点来检查 App B 的健康状况。
您可以通过实施 HealthIndicator
来开发自己的健康指标来检查后端应用程序的健康状况。所以本质上这不会太困难,因为你可以使用开箱即用的 RestTemplate,例如
public class DownstreamHealthIndicator implements HealthIndicator {
private RestTemplate restTemplate;
private String downStreamUrl;
@Autowired
public DownstreamHealthIndicator(RestTemplate restTemplate, String downStreamUrl) {
this.restTemplate = restTemplate;
this.downStreamUrl = downStreamUrl;
}
@Override
public Health health() {
try {
JsonNode resp = restTemplate.getForObject(downStreamUrl + "/health", JsonNode.class);
if (resp.get("status").asText().equalsIgnoreCase("UP")) {
return Health.up().build();
}
} catch (Exception ex) {
return Health.down(ex).build();
}
return Health.down().build();
}
}