diff options
author | Leandro Alves <leandroalves@yahoo-inc.com> | 2017-09-21 14:48:20 +0200 |
---|---|---|
committer | Leandro Alves <leandroalves@yahoo-inc.com> | 2017-09-21 14:48:20 +0200 |
commit | d98eca3239d8d531dcb93504daeee2c01190ee2f (patch) | |
tree | 6a521b24a8f1c8bc5740f213546ac2afbaba3a6d /controller-api/src | |
parent | ba8fcd381e64a10533f2d3ff9f9528e1262938e3 (diff) |
adds cluster cost metrics class
Diffstat (limited to 'controller-api/src')
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java | 80 |
1 files changed, 70 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java index 2068bc7e92d..5547f94c8cf 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MetricsService.java @@ -4,25 +4,29 @@ package com.yahoo.vespa.hosted.controller.api.integration; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Zone; +import java.util.List; + /** * A service which returns metric values on request - * + * * @author bratseth */ public interface MetricsService { - + ApplicationMetrics getApplicationMetrics(ApplicationId application); DeploymentMetrics getDeploymentMetrics(ApplicationId application, Zone zone); + List<ClusterCostMetrics> getClusterCostMetrics(ApplicationId application, Zone zone); + class DeploymentMetrics { - + private final double queriesPerSecond; private final double writesPerSecond; private final long documentCount; private final double queryLatencyMillis; private final double writeLatencyMillis; - + public DeploymentMetrics(double queriesPerSecond, double writesPerSecond, long documentCount, double queryLatencyMillis, double writeLatencyMillis) { @@ -32,9 +36,9 @@ public interface MetricsService { this.queryLatencyMillis = queryLatencyMillis; this.writeLatencyMillis = writeLatencyMillis; } - + public double queriesPerSecond() { return queriesPerSecond; } - + public double writesPerSecond() { return writesPerSecond; } public long documentCount() { return documentCount; } @@ -44,17 +48,17 @@ public interface MetricsService { public double writeLatencyMillis() { return writeLatencyMillis; } } - + class ApplicationMetrics { private final double queryServiceQuality; private final double writeServiceQuality; - + public ApplicationMetrics(double queryServiceQuality, double writeServiceQuality) { this.queryServiceQuality = queryServiceQuality; this.writeServiceQuality = writeServiceQuality; } - + /** Returns the quality of service for queries as a number between 1 (perfect) and 0 (none) */ public double queryServiceQuality() { return queryServiceQuality; } @@ -62,5 +66,61 @@ public interface MetricsService { public double writeServiceQuality() { return writeServiceQuality; } } - + + class CostMetrics { + + private final double cpuUtil; + private final double memUtil; + private final double diskUtil; + + public CostMetrics(double cpuUtil, double memUtil, double diskUtil) { + this.cpuUtil = cpuUtil; + this.memUtil = memUtil; + this.diskUtil = diskUtil; + } + + public double cpuUtil() { return cpuUtil; } + + public double memUtil() { return memUtil; } + + public double diskUtil() { return diskUtil; } + + public static class Builder { + private double cpuUtil; + private double memUtil; + private double diskUtil; + + public void setCpuUtil(double cpuUtil) { + this.cpuUtil = cpuUtil; + } + + public void setMemUtil(double memUtil) { + this.memUtil = memUtil; + } + + public void setDiskUtil(double diskUtil) { + this.diskUtil = diskUtil; + } + + public CostMetrics build() { return new CostMetrics(cpuUtil, memUtil, diskUtil); } + } + + } + + class ClusterCostMetrics { + + private final String clusterId; + private final CostMetrics costMetrics; + + public ClusterCostMetrics(String clusterId, CostMetrics costMetrics) { + this.clusterId = clusterId; + this.costMetrics = costMetrics; + } + + public String clusterId() { return clusterId; } + + public CostMetrics costMetrics() { return costMetrics; } + + } + } |