如何使用 Spring Boot Actuator 创建多个健康检查端点

How to create more than one health check endpoints with Spring Boot Actuator

我想做什么

我的环境

详情

我正在使用 Spring Boot 创建 Web 应用程序,需要创建两个独立的端点:一个仅用于检查应用程序的运行状况,包括应用程序的数据库连接等(这将默认实现“/health”)的行为,另一个只是检查应用程序是否准备好接受 HTTP 请求(比如“/httpcheck”)。

要实现健康检查功能,我想这是使用 Spring Boot Actuator 的最快方法(默认情况下,/health 映射到健康检查端点)。 我也明白我们可以通过扩展 AbstractHealthIndicator 来配置这个端点(这样它将包括数据库健康检查)。

但据我所知,我找不到一种方法来创建多个端点来执行不同的健康检查。 你有什么想法吗?

提前致谢。

解决方案

  1. 您可以在 Spring-boot 应用程序中使用 Jolokia 端点,并将其与执行器插件一起注册到 o.s.b.a.e.jmx.EndpointMBeanExporter。
  2. <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId> <version>1.2.2</version> </dependency>
  3. application.properties

    中的 Jolokia 配置
         jolokia.config.debug=true
         endpoints.jolokia.enabled=true
    

感谢您的回答。 实际上,我通过实现一个新端点 (/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

我已经确认它运行良好,但不确定它是否是最佳解决方案...