我想做的事
我的环境
要实现健康检查特性,我想使用Spring Boot执行器是最快的方法(默认情况下,/health映射到健康检查endpoint)。我还理解我们可以通过扩展AbstractHealthIndicator来配置这个endpoint(这样它将包括DB健康检查)。
但就我所见,我无法找到一种方法来创建多个endpoint来进行不同的健康检查。你有什么想法吗?
提前道谢。
谢谢你的回答。实际上,我通过实现一个新的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实例健康之前连续运行状况检查成功的次数。 如果实例声明为健康的,它是否被拉回负载平衡组?