导言
Spring Boot Actuator 为应用带来了生产就绪的功能。有了 Actuator 后,监控应用程序、收集指标、了解流量或数据库状态就变得易如反掌。Actuator 主要公开应用的运行信息 - 健康状况、指标、信息、转储(dump)、环境等。它使用 HTTP 端点或 JMX Bean 与客户端进行交互。
HealthEndpointWebExtension

HealthEndpointWebExtension 是一个用于监控和管理应用程序健康状况的网络扩展。它提供了一个端点(/actuator/health),可以返回应用程序的健康状况信息,包括数据库、缓存、消息队列等组件的健康状态。
源码如下:
@EndpointWebExtension(endpoint = HealthEndpoint.class)
public class HealthEndpointWebExtension extends HealthEndpointSupport<HealthContributor, HealthComponent> {
private static final String[] NO_PATH = {
};
/**
* 使用委托端点创建一个新的HealthEndpointWebExtension实例。
*/
@Deprecated
public HealthEndpointWebExtension(HealthEndpoint delegate, HealthWebEndpointResponseMapper responseMapper) {
}
/**
*创建一个新的HealthEndpointWebExtension实例
*/
public HealthEndpointWebExtension(HealthContributorRegistry registry, HealthEndpointGroups groups) {
super(registry, groups);
}
@ReadOperation
public WebEndpointResponse<HealthComponent> health(ApiVersion apiVersion, SecurityContext securityContext) {
return health(apiVersion, securityContext, false, NO_PATH);
}
@ReadOperation
public WebEndpointResponse<HealthComponent> health(ApiVersion apiVersion, SecurityContext securityContext,
@Selector(match = Match.ALL_REMAINING) String... path) {
return health(apiVersion, securityContext, false, path);
}
public WebEndpointResponse<HealthComponent> health(ApiVersion apiVersion, SecurityContext securityContext,
boolean showAll, String... path) {
HealthResult<HealthComponent> result = getHealth(apiVersion, securityContext, showAll, path);
if (result == null) {
return (Arrays.equals(path, NO_PATH))
? new WebEndpointResponse<>(DEFAULT_HEALTH, WebEndpointResponse.STATUS_OK)
: new WebEndpointResponse<>(WebEndpointResponse.STATUS_NOT_FOUND);
}
HealthComponent health = result.getHealth();
HealthEndpointGroup group = result.getGroup();
int statusCode = group.getHttpCodeStatusMapper().getStatusCode(health

本文详细介绍了如何在SpringBoot应用中使用Actuator的HealthEndpoint进行自定义监控,包括HealthEndpointWebExtension的扩展、AbstractHealthIndicator的自定义健康指标创建,以及如何通过MonitorAutoConfiguration和自定义HealthCheck类集成到/health端点。

163

被折叠的 条评论
为什么被折叠?



