标签导航:

spring boot 健康检查失败如何通过aop全面拦截并记录?

Spring Boot 健康检查失败:AOP 全面拦截与日志记录

为避免 Kubernetes 因健康检查失败而重启服务,建议拦截所有 HealthIndicator 调用并记录失败组件。直接使用 @Pointcut 拦截 health() 方法可能遗漏继承自 AbstractHealthIndicator 并实现 doHealthCheck() 方法的子类。

更有效的解决方案是使用如下增强点表达式:

@Pointcut(value = "execution(* org.springframework.boot.actuate.health..HealthIndicator+.*(..))")
public void healthPointCut() {}

该表达式匹配所有 HealthIndicator 类及其子类的所有方法调用,包括 health() 方法和其他公有方法,确保所有 HealthIndicator 的调用都被拦截并记录其失败情况。