This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 58322e72b45fe3270810315881b2bf38ed3b7861 Author: LanKhuat <[email protected]> AuthorDate: Tue Mar 17 10:34:44 2020 +0700 JAMES-3117 Add logs for HealthChecks for unhealthy/degraded status --- .../java/org/apache/james/backends/es/ElasticSearchHealthCheck.java | 1 + .../java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java | 2 +- .../org/apache/james/mailbox/events/EventDeadLettersHealthCheck.java | 3 ++- .../src/main/java/org/apache/james/GuiceLifecycleHealthCheck.java | 4 ++++ .../jmap/api/projections/MessageFastViewProjectionHealthCheck.java | 4 ++++ .../main/java/org/apache/james/jpa/healthcheck/JPAHealthCheck.java | 4 +++- 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchHealthCheck.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchHealthCheck.java index 58cd813..6182f01 100644 --- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchHealthCheck.java +++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchHealthCheck.java @@ -81,6 +81,7 @@ public class ElasticSearchHealthCheck implements HealthCheck { case YELLOW: return Result.healthy(COMPONENT_NAME); case RED: + LOGGER.error("ElasticSearchCluster return RED status"); return Result.unhealthy(COMPONENT_NAME, response.getClusterName() + " status is RED"); default: throw new NotImplementedException("Un-handled ElasticSearch cluster status"); diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java index 7946173..c50f99e 100644 --- a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java +++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/RabbitMQHealthCheck.java @@ -52,7 +52,7 @@ public class RabbitMQHealthCheck implements HealthCheck { return Result.healthy(COMPONENT_NAME); } else { String message = "The created connection was not opened"; - LOGGER.error(message); + LOGGER.error("Unhealthy RabbitMQ instances: {}", message); return Result.unhealthy(COMPONENT_NAME, message); } } catch (Exception e) { diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLettersHealthCheck.java b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLettersHealthCheck.java index 2d20af9..50a0a8b 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLettersHealthCheck.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventDeadLettersHealthCheck.java @@ -49,12 +49,13 @@ public class EventDeadLettersHealthCheck implements HealthCheck { boolean containEvents = eventDeadLetters.containEvents().block(); if (containEvents) { + LOGGER.warn("EventDeadLetters is not empty"); return Result.degraded(COMPONENT_NAME, "EventDeadLetters contain events. This might indicate transient failure on mailbox event processing."); } return Result.healthy(COMPONENT_NAME); } catch (Exception e) { - LOGGER.error("Error checking EventDeadLettersHealthCheck", e); + LOGGER.error("EventDeadLettersHealthCheck threw an exception", e); return Result.unhealthy(COMPONENT_NAME, e.getMessage()); } } diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceLifecycleHealthCheck.java b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceLifecycleHealthCheck.java index b7a6fe4..2ee8e9e 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceLifecycleHealthCheck.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceLifecycleHealthCheck.java @@ -24,8 +24,11 @@ import javax.inject.Inject; import org.apache.james.core.healthcheck.ComponentName; import org.apache.james.core.healthcheck.HealthCheck; import org.apache.james.core.healthcheck.Result; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class GuiceLifecycleHealthCheck implements HealthCheck { + private static final Logger LOGGER = LoggerFactory.getLogger(GuiceLifecycleHealthCheck.class); private final IsStartedProbe probe; @Inject @@ -43,6 +46,7 @@ public class GuiceLifecycleHealthCheck implements HealthCheck { if (probe.isStarted()) { return Result.healthy(componentName()); } else { + LOGGER.error("James server is not started"); return Result.unhealthy(componentName(), "James server is not started."); } } diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewProjectionHealthCheck.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewProjectionHealthCheck.java index de18851..b2877ad 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewProjectionHealthCheck.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewProjectionHealthCheck.java @@ -29,9 +29,12 @@ import org.apache.james.core.healthcheck.HealthCheck; import org.apache.james.core.healthcheck.Result; import org.apache.james.metrics.api.Metric; import org.apache.james.metrics.api.MetricFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MessageFastViewProjectionHealthCheck implements HealthCheck { + private static final Logger LOGGER = LoggerFactory.getLogger(MessageFastViewProjectionHealthCheck.class); private static final ComponentName COMPONENT_NAME = new ComponentName("MessageFastViewProjection"); private static final double MAXIMUM_MISS_PERCENTAGE_ACCEPTED = 10; @@ -64,6 +67,7 @@ public class MessageFastViewProjectionHealthCheck implements HealthCheck { long totalCount = hitCount + missCount; double missCountPercentage = missCount * 100.0d / totalCount; if (missCountPercentage > MAXIMUM_MISS_PERCENTAGE_ACCEPTED) { + LOGGER.warn("MessageFastViewProjection missCountPercentage exceeded the threshold"); return Result.degraded(COMPONENT_NAME, String.format("retrieveMissCount percentage %s%% (%d/%d) is higher than the threshold %s%%", missCountPercentage, missCount, totalCount, MAXIMUM_MISS_PERCENTAGE_ACCEPTED)); diff --git a/server/data/data-jpa/src/main/java/org/apache/james/jpa/healthcheck/JPAHealthCheck.java b/server/data/data-jpa/src/main/java/org/apache/james/jpa/healthcheck/JPAHealthCheck.java index 2447427..81bc728 100644 --- a/server/data/data-jpa/src/main/java/org/apache/james/jpa/healthcheck/JPAHealthCheck.java +++ b/server/data/data-jpa/src/main/java/org/apache/james/jpa/healthcheck/JPAHealthCheck.java @@ -55,9 +55,11 @@ public class JPAHealthCheck implements HealthCheck { return healthy(componentName()); } } catch (IllegalStateException stateException) { - LOGGER.debug("EntityManagerFactory or EntityManager thrown an IllegalStateException, the connection is unhealthy"); + LOGGER.debug("EntityManagerFactory or EntityManager threw an IllegalStateException, the connection is unhealthy"); return unhealthy(componentName(), stateException.getMessage()); } + + LOGGER.error("EntityManager is not open, the connection is unhealthy"); return unhealthy(componentName(), "entityManager is not open"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
