当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Boot执行器创建多个健康检查endpoint

司寇安宜
2023-03-14

我想做的事

  • 使用Spring Boot执行器创建两个(不同)endpoint

我的环境

    null

要实现健康检查特性,我想使用Spring Boot执行器是最快的方法(默认情况下,/health映射到健康检查endpoint)。我还理解我们可以通过扩展AbstractHealthIndicator来配置这个endpoint(这样它将包括DB健康检查)。

但就我所见,我无法找到一种方法来创建多个endpoint来进行不同的健康检查。你有什么想法吗?

提前道谢。

共有1个答案

暨成双
2023-03-14

谢谢你的回答。实际上,我通过实现一个新的endpoint(/httpcheck)来简单地检查其HTTP堆栈是否工作良好来处理这个问题。

HttpCheckEndpoint.java

@Component
@ConfigurationProperties(prefix = "endpoints.httpcheck") // Specifies the prefix on application.yml
public class HttpCheckEndpoint extends AbstractMvcEndpoint {

    public HttpCheckEndpoint() {
        super("/httpcheck", false);
    }

    /**
     * Check if simply the app can connect to their own HTTP stack and return 200 OK.
     * <ul>
     * <li>Method: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS</li>
     * <li>Endpoint: "/httpcheck"</li>
     * </ul>
     */
    @RequestMapping
    @ResponseBody
    public ResponseEntity<String> checkHttpConnecton() {
        if (!isEnabled()) {
            return new ResponseEntity<String>("", HttpStatus.NOT_FOUND);
        } else {
            return new ResponseEntity<String>("{\"status\": \"UP\"}", HttpStatus.OK);
        }
    }

}

application.yml

endpoints:
  enabled: false # Default enabled/disabled on endpoints on Spring Boot Actuator
  health: # Health check (already prepared in Spring Boot Actuator)
    enabled: true
  httpcheck: # Simple HTTP connection check (newly created by myself)
    enabled: true
 类似资料:
  • 我需要改变频率来检查springboot执行器中的DB运行状况。默认DB运行状况检查查询每毫秒执行一次。我想让这个查询每1分钟后执行一次,而不是毫秒。有什么方法可以自定义它吗?

  • 我使用Spring执行器和Spring靴来检查我的服务的健康。我使用OpenJDK11。并使用: Spring-boot依赖关系: 执行器依赖性:

  • 因此,我将Spring引导执行器添加到我的应用程序中,并在应用程序中指定。属性管理。endpoint。健康隐藏物生存时间=120秒,以缓存健康检查结果。因此,当我调用执行器/健康时,结果被缓存,效果很好。 当我调用执行器/健康/就绪或自定义创建的组时,问题开始出现。该请求结果不会被缓存。我查阅了Spring文档,只找到了主要健康终点的信息,没有找到特定人群的信息。 所以我的问题是:我错过了什么吗?

  • 但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo

  • 对于我一直在开发的一个微服务,我创建了一个自定义健康检查类,扩展了AbstractHealthIndicator,并能够在中获得输出 但当我向领事注册服务时,健康检查状态为失败。 尝试将执行器url配置为领事健康检查为spring。云领事发现健康检查url=http://localhost:8080/actuator/health。但它仍然失败,出现错误http://localhost:8566/

  • 在设置ELB健康检查的对话框中,它会声明: 如果实例未通过健康检查,它将自动从负载均衡器中删除。自定义健康检查以满足您的特定需要。 当健康检查失败时,将从ELB后面删除实例。我的问题是围绕“健康门槛”设置。当你悬停在帮助上时,它会说: 在声明EC2实例健康之前连续运行状况检查成功的次数。 如果实例声明为健康的,它是否被拉回负载平衡组?