From b078158829a362709acd2d9d738a3307037b582e Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Thu, 26 Oct 2017 23:42:02 +0200 Subject: Add service status metrics --- .../yahoo/vespa/service/monitor/ServiceModel.java | 20 ++++++++++++++------ .../yahoo/vespa/service/monitor/ServiceMonitor.java | 1 + .../vespa/service/monitor/ServiceMonitorImpl.java | 5 +++++ 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'service-monitor/src/main') 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 applications; + private final Map applications; - ServiceModel(Map applications) { + ServiceModel(Map applications) { this.applications = Collections.unmodifiableMap(applications); } - Map getAllApplicationInstances() { + Map getAllApplicationInstances() { return applications; } Optional getApplicationInstance(ApplicationInstanceReference reference) { return Optional.ofNullable(applications.get(reference)); } + + public Map> 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 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 getAllApplicationInstances() { return serviceModelCache.get().getAllApplicationInstances(); } + + @Override + public ServiceModel getServiceModelSnapshot() { + return serviceModelCache.get(); + } } -- cgit v1.2.3