diff options
author | Håkon Hallingstad <hakon@oath.com> | 2017-10-26 23:42:02 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2017-10-26 23:42:02 +0200 |
commit | b078158829a362709acd2d9d738a3307037b582e (patch) | |
tree | 4a467c12ae24331919e89c419d91d3333adde62d /service-monitor/src/main | |
parent | a37e4edd39a8807da12219d68874fcc67bd934f0 (diff) |
Add service status metrics
Diffstat (limited to 'service-monitor/src/main')
3 files changed, 20 insertions, 6 deletions
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java index 7fe2747200a..46102a366d2 100644 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java +++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java @@ -3,10 +3,14 @@ package com.yahoo.vespa.service.monitor; import com.yahoo.vespa.applicationmodel.ApplicationInstance; import com.yahoo.vespa.applicationmodel.ApplicationInstanceReference; +import com.yahoo.vespa.applicationmodel.HostName; +import com.yahoo.vespa.applicationmodel.ServiceInstance; import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; /** * The ServiceModel is almost a mirror of the SuperModel, except that it @@ -15,20 +19,24 @@ import java.util.Optional; */ // @Immutable public class ServiceModel { - private final Map<ApplicationInstanceReference, - ApplicationInstance> applications; + private final Map<ApplicationInstanceReference, ApplicationInstance> applications; - ServiceModel(Map<ApplicationInstanceReference, - ApplicationInstance> applications) { + ServiceModel(Map<ApplicationInstanceReference, ApplicationInstance> applications) { this.applications = Collections.unmodifiableMap(applications); } - Map<ApplicationInstanceReference, - ApplicationInstance> getAllApplicationInstances() { + Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() { return applications; } Optional<ApplicationInstance> getApplicationInstance(ApplicationInstanceReference reference) { return Optional.ofNullable(applications.get(reference)); } + + public Map<HostName, List<ServiceInstance>> getServiceInstancesByHostName() { + return applications.values().stream() + .flatMap(application -> application.serviceClusters().stream()) + .flatMap(cluster -> cluster.serviceInstances().stream()) + .collect(Collectors.groupingBy(service -> service.hostName(), Collectors.toList())); + } } diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java index 435bcd19032..ab32af39580 100644 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java +++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java @@ -20,4 +20,5 @@ public interface ServiceMonitor { */ Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances(); + ServiceModel getServiceModelSnapshot(); } diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitorImpl.java b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitorImpl.java index 798ccb4476c..5d2a9f296b4 100644 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitorImpl.java +++ b/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitorImpl.java @@ -61,4 +61,9 @@ public class ServiceMonitorImpl implements ServiceMonitor { public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() { return serviceModelCache.get().getAllApplicationInstances(); } + + @Override + public ServiceModel getServiceModelSnapshot() { + return serviceModelCache.get(); + } } |