From 116e17f5f215406bed6569b387ed72747d4a5014 Mon Sep 17 00:00:00 2001 From: Pavel Orlov Date: Mon, 10 Aug 2020 19:22:12 +0300 Subject: [PATCH] HH-114285 add consul tag if service implement LogLevelOverrideExtension --- .../java/ru/hh/nab/starter/ConsulService.java | 19 ++++++++++++++----- .../java/ru/hh/nab/starter/NabProdConfig.java | 7 +++++-- .../ru/hh/nab/starter/NabAppTestConfig.java | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/nab-starter/src/main/java/ru/hh/nab/starter/ConsulService.java b/nab-starter/src/main/java/ru/hh/nab/starter/ConsulService.java index 266fac1ca..0b285d1d8 100644 --- a/nab-starter/src/main/java/ru/hh/nab/starter/ConsulService.java +++ b/nab-starter/src/main/java/ru/hh/nab/starter/ConsulService.java @@ -2,6 +2,8 @@ import com.ecwid.consul.v1.ConsulClient; import com.ecwid.consul.v1.agent.model.NewService; +import java.util.ArrayList; +import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.hh.nab.common.properties.FileSettings; @@ -11,22 +13,29 @@ import java.util.Collections; import java.util.Objects; import java.util.Optional; +import ru.hh.nab.starter.logging.LogLevelOverrideExtension; public class ConsulService { - private static final Logger logger = LoggerFactory.getLogger(ConsulService.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ConsulService.class); + + private static final String LOG_LEVEL_OVERRIDE_EXTENSION_TAG = "log_level_override_extension_enabled"; private final ConsulClient client; private final NewService service; private final String id; private final boolean enabled; - public ConsulService(FileSettings fileSettings, String datacenter, String address, AppMetadata appMetadata) { + public ConsulService(FileSettings fileSettings, String datacenter, String address, AppMetadata appMetadata, + @Nullable LogLevelOverrideExtension logLevelOverrideExtension) { var applicationPort = fileSettings.getInteger("jetty.port"); var applicationHost = Optional.ofNullable(fileSettings.getString("consul.check.host")) .orElse("127.0.0.1"); var id = fileSettings.getString("serviceName") + "-" + datacenter + "-" + address + "-" + applicationPort; - var tags = fileSettings.getStringList("consul.tags"); + var tags = new ArrayList<>(fileSettings.getStringList("consul.tags")); + if (logLevelOverrideExtension != null) { + tags.add(LOG_LEVEL_OVERRIDE_EXTENSION_TAG); + } NewService.Check check = new NewService.Check(); check.setHttp("http://" + applicationHost + ":" + applicationPort + "/status"); @@ -61,7 +70,7 @@ public void register() { if (enabled) { try { client.agentServiceRegister(service); - logger.info("Registered consul service: {}", service); + LOGGER.info("Registered consul service: {}", service); } catch (RuntimeException ex) { throw new ConsulServiceException("Can't register service in consul", ex); } @@ -72,7 +81,7 @@ public void register() { void deregister() { if (enabled) { client.agentServiceDeregister(id); - logger.info("De-registered id: {} from consul", id); + LOGGER.info("De-registered id: {} from consul", id); } } diff --git a/nab-starter/src/main/java/ru/hh/nab/starter/NabProdConfig.java b/nab-starter/src/main/java/ru/hh/nab/starter/NabProdConfig.java index e987a149a..cfabeac3c 100644 --- a/nab-starter/src/main/java/ru/hh/nab/starter/NabProdConfig.java +++ b/nab-starter/src/main/java/ru/hh/nab/starter/NabProdConfig.java @@ -4,6 +4,7 @@ import com.timgroup.statsd.NonBlockingStatsDClient; import com.timgroup.statsd.StatsDClient; +import java.util.Optional; import static java.util.Optional.ofNullable; import java.io.IOException; @@ -21,6 +22,7 @@ import static ru.hh.nab.common.properties.PropertiesUtils.fromFilesInSettingsDir; import ru.hh.nab.starter.events.JettyEventListener; +import ru.hh.nab.starter.logging.LogLevelOverrideExtension; import static ru.hh.nab.starter.server.cache.HttpCacheFilterFactory.createCacheFilterHolder; @Configuration @@ -57,9 +59,10 @@ ConsulClient consulClient(FileSettings fileSettings) { @Bean @Lazy(value = false) - ConsulService consulService(FileSettings fileSettings, String datacenter, AppMetadata appMetadata) throws UnknownHostException { + ConsulService consulService(FileSettings fileSettings, String datacenter, AppMetadata appMetadata, + Optional logLevelOverrideExtensionOptional) throws UnknownHostException { var address = InetAddress.getLocalHost().getHostAddress(); - return new ConsulService(fileSettings, datacenter, address, appMetadata); + return new ConsulService(fileSettings, datacenter, address, appMetadata, logLevelOverrideExtensionOptional.orElse(null)); } @Bean diff --git a/nab-tests/src/test/java/ru/hh/nab/starter/NabAppTestConfig.java b/nab-tests/src/test/java/ru/hh/nab/starter/NabAppTestConfig.java index 001e668e3..8380170a2 100644 --- a/nab-tests/src/test/java/ru/hh/nab/starter/NabAppTestConfig.java +++ b/nab-tests/src/test/java/ru/hh/nab/starter/NabAppTestConfig.java @@ -13,7 +13,7 @@ public class NabAppTestConfig { @Bean ConsulService consulService(FileSettings fileSettings, AppMetadata appMetadata) { - return spy(new ConsulService(fileSettings, null, null, appMetadata)); + return spy(new ConsulService(fileSettings, null, null, appMetadata, null)); } @Bean