diff options
author | gjoranv <gjoranv@gmail.com> | 2022-10-21 00:33:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-21 00:33:59 +0200 |
commit | dc5769508b3ad653edcb4431b9d0c25271c36778 (patch) | |
tree | bac52dd4d18b780949ca97cc6bd277dd1e7ec730 | |
parent | df755a72c9251e1725cf4e0d0fea05ce0dfef838 (diff) | |
parent | c8761688fdb26538484b5a9bcd5ce53608a6ce8a (diff) |
Merge pull request #24521 from vespa-engine/olaa/add-app-cluster-dimension
Add deploymentCluster dimension
3 files changed, 13 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java index 03bdf4eb12a..12bce7a72a4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java @@ -14,8 +14,10 @@ import ai.vespa.metricsproxy.service.VespaServicesConfig; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.container.ContainerServiceType; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterMembership; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.Zone; import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.PortAllocBridge; @@ -47,6 +49,8 @@ public class MetricsProxyContainer extends Container implements final boolean isHostedVespa; private final Optional<ClusterMembership> clusterMembership; private final MetricsProxyContainerCluster cluster; + private final ApplicationId applicationId; + private final Zone zone; private final String jvmGCOptions; public MetricsProxyContainer(MetricsProxyContainerCluster cluster, HostResource host, int index, DeployState deployState) { @@ -54,6 +58,8 @@ public class MetricsProxyContainer extends Container implements this.isHostedVespa = deployState.isHosted(); this.clusterMembership = host.spec().membership(); this.cluster = cluster; + this.applicationId = deployState.getApplicationPackage().getApplicationId(); + this.zone = deployState.zone(); this.jvmGCOptions = deployState.getProperties().jvmGCOptions(clusterMembership.map(membership -> membership.cluster().type())); setProp("clustertype", "admin"); setProp("index", String.valueOf(index)); @@ -139,6 +145,7 @@ public class MetricsProxyContainer extends Container implements Map<String, String> dimensions = new LinkedHashMap<>(); if (isHostedVespa) { getHostResource().spec().membership().map(ClusterMembership::cluster).ifPresent(cluster -> { + dimensions.put(PublicDimensions.DEPLOYMENT_CLUSTER, getDeploymentCluster(cluster)); dimensions.put(PublicDimensions.INTERNAL_CLUSTER_TYPE, cluster.type().name()); dimensions.put(PublicDimensions.INTERNAL_CLUSTER_ID, cluster.id().value()); cluster.group().ifPresent(group -> dimensions.put(PublicDimensions.GROUP_ID, group.toString())); @@ -180,6 +187,10 @@ public class MetricsProxyContainer extends Container implements addSimpleComponent(componentClass.getName(), null, METRICS_PROXY_BUNDLE_NAME); } + private String getDeploymentCluster(ClusterSpec cluster) { + return String.join(".", applicationId.toFullString(), zone.environment().value(), zone.region().value(), cluster.id().value()); + } + @Override protected String defaultPreload() { return ""; diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java index 5394b807861..32771832f86 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java @@ -119,6 +119,7 @@ public class MetricsProxyContainerTest { assertEquals("content", config.dimensions(PublicDimensions.INTERNAL_CLUSTER_TYPE)); assertEquals("my-content", config.dimensions(PublicDimensions.INTERNAL_CLUSTER_ID)); + assertEquals("default.mock-application.default.prod.default.my-content", config.dimensions(PublicDimensions.DEPLOYMENT_CLUSTER)); } @Test diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java index ec59a102ab4..d05b251207d 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/dimensions/PublicDimensions.java @@ -24,6 +24,7 @@ public final class PublicDimensions { public static final String INTERNAL_CLUSTER_TYPE = "clustertype"; public static final String INTERNAL_CLUSTER_ID = "clusterid"; public static final String CLUSTER_ID = "clusterId"; + public static final String DEPLOYMENT_CLUSTER = "deploymentCluster"; // This dimension is not currently (March 2021) added to the 'commonDimensions' allow-list below, due to the // limit of 10 total dimensions in public http apis. See e.g. MetricsV2Handler#MAX_DIMENSIONS. |