是否可以在 Springboot spring 执行器健康端点中停用 MongoHealthIndicator?
Is it possible to deactivate MongoHealthIndicator in the Springboot spring actuator health endpoint?
在我工作的 springboot 项目中,有一个对 spring-data-mongodb 的传递性 Maven 依赖。因此,尽管该项目实际上并未使用 mongodb,但 MongoHealthIndicator 似乎已自动激活。是否可以在不停用执行器健康端点的情况下专门停用此 HealthIndicator?我发现的解决方法是排除依赖项。但我想知道是否可以对 MongoHealthIndicator 进行这种特定的停用。
在您的 application.properties
中试试这个
management.health.mongo.enabled=false
发件人:
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
# HEALTH INDICATORS (previously health.*)
...
management.health.mongo.enabled=true
...
您应该可以将其设置为 false 以禁用运行状况指示器。来自 org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration.java
@Configuration
@ConditionalOnBean(MongoTemplate.class)
@ConditionalOnProperty(prefix = "management.health.mongo", name = "enabled", matchIfMissing = true)
public static class MongoHealthIndicatorConfiguration {
application.properties
management.health.mongo.enabled=false
endpoints.mongo.enabled=true
MongoDBHealthCheckEndPoint.java
@ConfigurationProperties(prefix = "endpoints.mongo", ignoreUnknownFields = true)
@Component
public class MongoDBHealthCheckEndPoint extends AbstractEndpoint<Map<String, String>>
{
@Inject
MongoTemplate mongoTemplate;
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final Map<String, String> UP = new HashMap<String, String>() {{
put("mongo.status", "UP");
}};
private static final Map<String, String> DOWN = new HashMap<String, String>() {{
put("mongo.status", "DOWN");
}};
public MongoDBHealthCheckEndPoint() {
super("mongo", false);
}
public MongoDBHealthCheckEndPoint(Map<String, ? extends Object> mongo) {
super("mongo", false);
}
public Map<String, String> invoke() {
try {
return (new MongoHealthIndicator(mongoTemplate).health().getStatus().equals(Status.UP)) ? UP : DOWN;
} catch (Exception e) {
log.error("mongo database is down", e);
return DOWN;
}
}
}
在我工作的 springboot 项目中,有一个对 spring-data-mongodb 的传递性 Maven 依赖。因此,尽管该项目实际上并未使用 mongodb,但 MongoHealthIndicator 似乎已自动激活。是否可以在不停用执行器健康端点的情况下专门停用此 HealthIndicator?我发现的解决方法是排除依赖项。但我想知道是否可以对 MongoHealthIndicator 进行这种特定的停用。
在您的 application.properties
中试试这个management.health.mongo.enabled=false
发件人:
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
# HEALTH INDICATORS (previously health.*)
...
management.health.mongo.enabled=true
...
您应该可以将其设置为 false 以禁用运行状况指示器。来自 org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration.java
@Configuration
@ConditionalOnBean(MongoTemplate.class)
@ConditionalOnProperty(prefix = "management.health.mongo", name = "enabled", matchIfMissing = true)
public static class MongoHealthIndicatorConfiguration {
application.properties
management.health.mongo.enabled=false
endpoints.mongo.enabled=true
MongoDBHealthCheckEndPoint.java
@ConfigurationProperties(prefix = "endpoints.mongo", ignoreUnknownFields = true)
@Component
public class MongoDBHealthCheckEndPoint extends AbstractEndpoint<Map<String, String>>
{
@Inject
MongoTemplate mongoTemplate;
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private static final Map<String, String> UP = new HashMap<String, String>() {{
put("mongo.status", "UP");
}};
private static final Map<String, String> DOWN = new HashMap<String, String>() {{
put("mongo.status", "DOWN");
}};
public MongoDBHealthCheckEndPoint() {
super("mongo", false);
}
public MongoDBHealthCheckEndPoint(Map<String, ? extends Object> mongo) {
super("mongo", false);
}
public Map<String, String> invoke() {
try {
return (new MongoHealthIndicator(mongoTemplate).health().getStatus().equals(Status.UP)) ? UP : DOWN;
} catch (Exception e) {
log.error("mongo database is down", e);
return DOWN;
}
}
}