我希望在我的Spring Boot REST服务上构建一个健壮且详细的运行状况检查端点(/health
)。我刚刚读了关于这个问题的this excellent Baeldung article,但仍有一些问题。
理想情况下,我的/health
端点能够考虑所有子系统(其中10个)的个人健康状况,包括主机的健康状况(CPU,磁盘利用率,可用内存等)。
我不知道Spring Boot是否希望你建立一个只有一个HealthIndicator
impl。或者,如果想要为每个主要子系统构建一个HealthIndicator
impl(每个子系统可以分别独立地“向上”或“向下”。
另外,在Baeldung的例子中,顶级status
和myHealthCheck.status
之间有什么区别?它们各自来自哪里(在代码中)?
{
"status" : "DOWN",
"myHealthCheck" : {
"status" : "DOWN",
"Error Code" : 1,
"Description" : "You custom MyHealthCheck endpoint is down"
},
"diskSpace" : {
"status" : "UP",
"free" : 209047318528,
"threshold" : 10485760
}
}
diskSpace
来自哪里?!
1)您可以拥有尽可能多的健康指标。只需创建将扩展org.springframework.boot.actuate.health.HealthIndicator
的bean,它们将被执行者的healthcheck端点自动拾取。 bean的名称将是某个运行状况指示器的名称。在你的例子中,myHealthCheck
和diskSpace
是弹簧上下文中的bean,当你击中/health
时被调用。 diskSpace是来自org.springframework.boot.actuate.health.DiskSpaceHealthIndicator
的spring boot中预定义的健康指标之一。
2)最高级别状态是所有健康指标的累积状态。您可以配置它的工作方式,但默认情况下它会显示最低状态(您有一个健康指示器处于DOWN状态,因此累积状态显示为DOWN)