diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-02-03 00:00:23 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-02-03 00:00:23 +0100 |
commit | a7c6b1d113abb8d4aec28497369f3611c151e689 (patch) | |
tree | ba7c18ad0493c6f30c1d105a22ea40f39c09f49a /config-model/src/main/java/com/yahoo | |
parent | 63f47be04c9a7bf5ff85e1bb161c6af8302df979 (diff) |
Second attempt at overriding access log for hosted configserver/controller
Override addAccessLogs in ConfigServerContainerModelBuilder to override
access log configuration for hosted configserver/controller.
Previous attempt did not work as information in DeployState was not reliable.
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
3 files changed, 28 insertions, 19 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java index 936b9f1c851..a66d98ad52c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java @@ -46,19 +46,17 @@ public class AccessLogBuilder { private static class DomBuilder extends VespaDomBuilder.DomConfigProducerBuilder<AccessLogComponent> { private final AccessLogType accessLogType; private final boolean isHostedVespa; - private final boolean isConfigserver; - public DomBuilder(AccessLogType accessLogType, boolean isHostedVespa, boolean isConfigserver) { + public DomBuilder(AccessLogType accessLogType, boolean isHostedVespa) { this.accessLogType = accessLogType; this.isHostedVespa = isHostedVespa; - this.isConfigserver = isConfigserver; } @Override protected AccessLogComponent doBuild(DeployState deployState, AbstractConfigProducer<?> ancestor, Element spec) { return new AccessLogComponent( accessLogType, - compressionType(spec, deployState, isHostedVespa, isConfigserver), + compressionType(spec, deployState, isHostedVespa), fileNamePattern(spec), rotationInterval(spec), compressOnRotation(spec), @@ -83,14 +81,13 @@ public class AccessLogBuilder { return nullIfEmpty(spec.getAttribute("fileNamePattern")); } - private static CompressionType compressionType(Element spec, DeployState deployState, boolean isHostedVespa, boolean isConfigserver) { + private static CompressionType compressionType(Element spec, DeployState deployState, boolean isHostedVespa) { CompressionType fallback; - if (isHostedVespa && (isConfigserver || deployState.featureFlags().enableZstdCompressionAccessLog())) { + if (isHostedVespa && deployState.featureFlags().enableZstdCompressionAccessLog()) { fallback = CompressionType.ZSTD; } else { fallback = CompressionType.GZIP; } - if (isConfigserver && isHostedVespa) return CompressionType.ZSTD; return Optional.ofNullable(spec.getAttribute("compressionType")) .filter(value -> !value.isBlank()) .map(value -> { @@ -120,7 +117,7 @@ public class AccessLogBuilder { } } - public static Optional<AccessLogComponent> buildIfNotDisabled(DeployState deployState, ContainerCluster<?> cluster, Element accessLogSpec, boolean isConfigserver) { + public static Optional<AccessLogComponent> buildIfNotDisabled(DeployState deployState, ContainerCluster<?> cluster, Element accessLogSpec) { AccessLogTypeLiteral typeLiteral = getOptionalAttribute(accessLogSpec, "type"). map(AccessLogTypeLiteral::fromAttributeValue). @@ -130,9 +127,6 @@ public class AccessLogBuilder { return Optional.empty(); } boolean hosted = cluster.isHostedVespa(); - if (hosted && isConfigserver && logType != AccessLogType.jsonAccessLog) { - return Optional.empty(); // Only enable JSON access logging for hosted configserver/controller - } - return Optional.of(new DomBuilder(logType, hosted, isConfigserver).build(deployState, cluster, accessLogSpec)); + return Optional.of(new DomBuilder(logType, hosted).build(deployState, cluster, accessLogSpec)); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java index e7db4ab0564..8be57ff3bde 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java @@ -2,8 +2,12 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.config.model.ConfigModelContext; +import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; +import com.yahoo.vespa.model.container.component.AccessLogComponent; +import com.yahoo.vespa.model.container.component.ConnectionLogComponent; import com.yahoo.vespa.model.container.configserver.ConfigserverCluster; import com.yahoo.vespa.model.container.configserver.option.CloudConfigOptions; import org.w3c.dom.Element; @@ -22,8 +26,6 @@ public class ConfigServerContainerModelBuilder extends ContainerModelBuilder { this.options = options; } - @Override protected boolean isConfigserver() { return true; } - @Override public void doBuild(ContainerModel model, Element spec, ConfigModelContext modelContext) { ConfigserverCluster cluster = new ConfigserverCluster(modelContext.getParentProducer(), "configserver", @@ -36,7 +38,22 @@ public class ConfigServerContainerModelBuilder extends ContainerModelBuilder { // in ConfigModelContext.DeployState.properties are not set) @Override protected void addStatusHandlers(ApplicationContainerCluster cluster, boolean isHostedVespa) { - super.addStatusHandlers(cluster, options.hostedVespa().orElse(Boolean.FALSE)); + super.addStatusHandlers(cluster, isHosted()); + } + + // Override access log configuration for hosted configserver/controller + @Override + protected void addAccessLogs(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { + if (isHosted()){ + cluster.addComponent( + new AccessLogComponent( + AccessLogComponent.AccessLogType.jsonAccessLog, AccessLogComponent.CompressionType.ZSTD, + "logs/vespa/configserver/access-json.log.%Y%m%d%H%M%S", null, true, true, "access-json.log")); + cluster.addComponent(new ConnectionLogComponent(FileConnectionLog.class, cluster.getName())); + } else { + super.addAccessLogs(deployState, cluster, spec); + } } + private boolean isHosted() { return options.hostedVespa().orElse(Boolean.FALSE); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 07ccf3808fd..7477ccdd970 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -147,8 +147,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { this.httpServerEnabled = networking == Networking.enable; } - protected boolean isConfigserver() { return false; } - @Override public List<ConfigModelId> handlesElements() { return configModelIds; @@ -340,11 +338,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { addConfiguredComponents(deployState, cluster, spec, "server"); } - private void addAccessLogs(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { + protected void addAccessLogs(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { List<Element> accessLogElements = getAccessLogElements(spec); for (Element accessLog : accessLogElements) { - AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog, isConfigserver()).ifPresent(cluster::addComponent); + AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent); } if (accessLogElements.isEmpty() && deployState.getAccessLoggingEnabledByDefault()) |