diff options
author | Arne Juul <arnej@vespa.ai> | 2024-04-08 09:37:50 +0000 |
---|---|---|
committer | Arne Juul <arnej@vespa.ai> | 2024-04-12 14:14:16 +0000 |
commit | 7b133db4b012fe1f142a76a35dfd513399a2430c (patch) | |
tree | 55aec810fb19c6c6d46cffafadd386703ad36d76 /config-model/src/main/java | |
parent | fa03f7fc1e965cedcde1c6775373aef4c1facef6 (diff) |
add vespa-otelcol-start
Diffstat (limited to 'config-model/src/main/java')
5 files changed, 50 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java index 629ce54d9dd..654c81f0519 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java @@ -5,8 +5,6 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.search.config.QrStartConfig; -import com.yahoo.vespa.model.admin.otel.OpenTelemetryCollector; -import com.yahoo.vespa.model.admin.otel.OpenTelemetryConfigGenerator; import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.PlatformBundles; import com.yahoo.vespa.model.container.component.Handler; @@ -31,7 +29,6 @@ public class LogserverContainerCluster extends ContainerCluster<LogserverContain setJvmGCOptions(deployState.getProperties().jvmGCOptions(Optional.of(ClusterSpec.Type.admin))); if (isHostedVespa()) addAccessLog(getName()); - } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java index 71e2a670034..73275a36804 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java @@ -2,21 +2,22 @@ package com.yahoo.vespa.model.admin.otel; import com.yahoo.cloud.config.OpenTelemetryConfig; +import com.yahoo.config.model.ApplicationConfigProducerRoot; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.PortAllocBridge; -import java.util.Optional; +import com.yahoo.cloud.config.ModelConfig; +import com.yahoo.config.model.producer.AnyConfigProducer; -public class OpenTelemetryCollector extends AbstractService implements OpenTelemetryConfig.Producer { +import java.util.Optional; - private final String config; +public class OpenTelemetryCollector extends AbstractService implements OpenTelemetryConfig.Producer { - public OpenTelemetryCollector(TreeConfigProducer<?> parent, String config) { + public OpenTelemetryCollector(TreeConfigProducer<?> parent) { super(parent, "otelcol"); setProp("clustertype", "admin"); setProp("clustername", "admin"); - this.config = config; } /** @@ -24,10 +25,9 @@ public class OpenTelemetryCollector extends AbstractService implements OpenTelem */ @Override public Optional<String> getStartupCommand() { - return Optional.of("exec $ROOT/bin/vespa-otelcol-start"); + return Optional.of("exec $ROOT/bin/vespa-otelcol-start -c " + getConfigId()); } - @Override public void allocatePorts(int start, PortAllocBridge from) {} @@ -38,6 +38,18 @@ public class OpenTelemetryCollector extends AbstractService implements OpenTelem @Override public void getConfig(OpenTelemetryConfig.Builder builder) { - builder.config(config); + var generator = new OpenTelemetryConfigGenerator(); + AnyConfigProducer pp = this; + AnyConfigProducer p = pp.getParent(); + while (p != null && p != pp) { + if (pp instanceof ApplicationConfigProducerRoot root) { + generator.addStatePorts(root.getStatePorts()); + break; + } + pp = p; + p = pp.getParent(); + } + builder.yaml(generator.generate()); + builder.refPaths(generator.referencedPaths()); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java index 7d18cf36f58..8e36d86911c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java @@ -1,6 +1,9 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.admin.otel; +import com.yahoo.config.model.ApplicationConfigProducerRoot.StatePortInfo; +import java.util.List; + /** * @author olaa */ @@ -13,7 +16,7 @@ public class OpenTelemetryConfigGenerator { 2. Processing with mapping/filtering from metric sets 3. Exporter to correct endpoint (alternatively amended) */ - public static String generate() { + public String generate() { return """ receivers: @@ -24,7 +27,7 @@ public class OpenTelemetryConfigGenerator { params: format: 'prometheus' tls: - ca_file: '/opt/vespa/var/vespa//trust-store.pem' + ca_file: '/opt/vespa/var/vespa/trust-store.pem' cert_file: '/var/lib/sia/certs/vespa.external.cd.tenant.cert.pem' insecure_skip_verify: true key_file: '/var/lib/sia/keys/vespa.external.cd.tenant.key.pem' @@ -43,4 +46,13 @@ public class OpenTelemetryConfigGenerator { exporters: [ file ] """; } + + void addStatePorts(List<StatePortInfo> portList) { + // XXX not used yet + } + + List<String> referencedPaths() { + return List.of("/var/lib/sia/certs/vespa.external.cd.tenant.cert.pem", + "/var/lib/sia/keys/vespa.external.cd.tenant.key.pem"); + } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java index 7f02ecacc18..692de1769d3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java @@ -7,6 +7,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.text.XML; +import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.SimpleConfigProducer; import com.yahoo.vespa.model.admin.Admin; import com.yahoo.vespa.model.admin.Configserver; @@ -15,6 +16,8 @@ import com.yahoo.vespa.model.admin.Slobrok; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerCluster; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainerCluster; +import com.yahoo.vespa.model.admin.otel.OpenTelemetryCollector; +import com.yahoo.vespa.model.admin.otel.OpenTelemetryConfigGenerator; import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder.DomConfigProducerBuilderBase; import com.yahoo.vespa.model.container.Container; import org.w3c.dom.Element; @@ -38,10 +41,21 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { super(applicationType, multitenant, configServerSpecs); } + private void addOtelcol(TreeConfigProducer<?> parent, DeployState deployState, HostResource hostResource) { + var otelcol = new OpenTelemetryCollector(parent); + otelcol.setHostResource(hostResource); + otelcol.initService(deployState); + } + @Override protected void doBuildAdmin(DeployState deployState, Admin admin, Element adminE) { List<Configserver> configservers = parseConfigservers(deployState, admin, adminE); - admin.setLogserver(parseLogserver(deployState, admin, adminE)); + var logserver = parseLogserver(deployState, admin, adminE); + admin.setLogserver(logserver); + if (deployState.featureFlags().logserverOtelCol()) { + // for manual testing + addOtelcol(admin, deployState, logserver.getHostResource()); + } admin.addConfigservers(configservers); admin.addSlobroks(getSlobroks(deployState, admin, XML.getChild(adminE, "slobroks"))); if ( ! admin.multitenant()) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java index 79866980170..23a46b3e065 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java @@ -123,7 +123,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { private void addOtelcol(TreeConfigProducer<?> parent, DeployState deployState, HostResource hostResource) { - var otelcol = new OpenTelemetryCollector(parent, OpenTelemetryConfigGenerator.generate()); + var otelcol = new OpenTelemetryCollector(parent); otelcol.setHostResource(hostResource); otelcol.initService(deployState); } |