aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java
diff options
context:
space:
mode:
authorArne Juul <arnej@vespa.ai>2024-04-08 09:37:50 +0000
committerArne Juul <arnej@vespa.ai>2024-04-12 14:14:16 +0000
commit7b133db4b012fe1f142a76a35dfd513399a2430c (patch)
tree55aec810fb19c6c6d46cffafadd386703ad36d76 /config-model/src/main/java
parentfa03f7fc1e965cedcde1c6775373aef4c1facef6 (diff)
add vespa-otelcol-start
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryCollector.java28
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/otel/OpenTelemetryConfigGenerator.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java2
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);
}