diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-11-16 12:48:43 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-11-16 12:48:43 +0100 |
commit | 70ca76a2fabe46a809d620d3192d57f95f114290 (patch) | |
tree | 7566ad1cc9f2bb9d5dfb0167651f0ba976ccdfea /container-core/src/main/java/com/yahoo/container | |
parent | 1375c8aded9eb18aa8496518948730e28a01224b (diff) |
Add in_rotation metric to containers
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/handler/VipStatus.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java index 876d05b7be9..bbedf723bfa 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java +++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java @@ -5,7 +5,9 @@ import com.google.inject.Inject; import com.yahoo.container.QrSearchersConfig; import com.yahoo.container.core.VipStatusConfig; import com.yahoo.container.jdisc.state.StateMonitor; +import com.yahoo.jdisc.Metric; +import java.util.Map; import java.util.stream.Collectors; /** @@ -19,6 +21,8 @@ import java.util.stream.Collectors; */ public class VipStatus { + private final Metric metric; + private final ClustersStatus clustersStatus; private final StateMonitor healthState; @@ -57,15 +61,25 @@ public class VipStatus { public VipStatus(QrSearchersConfig dispatchers, VipStatusConfig vipStatusConfig, ClustersStatus clustersStatus, - StateMonitor healthState) { + StateMonitor healthState, + Metric metric) { this.clustersStatus = clustersStatus; this.healthState = healthState; + this.metric = metric; initiallyInRotation = vipStatusConfig.initiallyInRotation(); clustersStatus.setClusters(dispatchers.searchcluster().stream().map(c -> c.name()).collect(Collectors.toSet())); updateCurrentlyInRotation(); } @Deprecated // TODO: Remove on Vespa 8 + public VipStatus(QrSearchersConfig dispatchers, + VipStatusConfig vipStatusConfig, + ClustersStatus clustersStatus, + StateMonitor healthState) { + this(dispatchers, vipStatusConfig, clustersStatus, healthState, new NullMetric()); + } + + @Deprecated // TODO: Remove on Vespa 8 public VipStatus(QrSearchersConfig dispatchers, ClustersStatus clustersStatus, StateMonitor healthState) { this(dispatchers, new VipStatusConfig.Builder().build(), clustersStatus, healthState); } @@ -134,6 +148,8 @@ public class VipStatus { healthState.status(StateMonitor.Status.up); else if (healthState.status() == StateMonitor.Status.up) healthState.status(StateMonitor.Status.down); + + metric.set("in_rotation", currentlyInRotation ? 1 : 0, metric.createContext(Map.of())); } } @@ -144,4 +160,22 @@ public class VipStatus { } } + private static class NullMetric implements Metric { + + @Override + public void set(String key, Number val, Context ctx) { } + + @Override + public void add(String key, Number val, Context ctx) { } + + @Override + public Context createContext(Map<String, ?> properties) { + return new NullContext(); + } + + private static class NullContext implements Context { + } + + } + } |