summaryrefslogtreecommitdiffstats
path: root/service-monitor
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2017-10-26 23:42:02 +0200
committerHåkon Hallingstad <hakon@oath.com>2017-10-26 23:42:02 +0200
commitb078158829a362709acd2d9d738a3307037b582e (patch)
tree4a467c12ae24331919e89c419d91d3333adde62d /service-monitor
parenta37e4edd39a8807da12219d68874fcc67bd934f0 (diff)
Add service status metrics
Diffstat (limited to 'service-monitor')
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceModel.java20
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitor.java1
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/monitor/ServiceMonitorImpl.java5
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();
+ }
}