summaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorOla Aunronning <olaa@yahooinc.com>2023-06-15 14:23:31 +0200
committerOla Aunronning <olaa@yahooinc.com>2023-06-15 14:27:35 +0200
commit3e22f3b64a889a8045a4008d3b98c542de4301b9 (patch)
tree560085af8e56961ca04ba5e64b56c3a87e413dd4 /metrics-proxy
parentb7fa88adf8cacacba2088d8532d79958182b1916 (diff)
Don't add status_code and status_msg to metric packets. Remove unused service health and coredump metric gatherers
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java8
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java14
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java36
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/prometheus/PrometheusHandlerTest.java11
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/yamas/YamasHandlerTest.java6
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java4
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java9
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java4
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java9
12 files changed, 10 insertions, 97 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
index eb635d8c641..ef23a5ad070 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasHandler.java
@@ -52,7 +52,7 @@ public class YamasHandler extends HttpHandlerBase {
NodeDimensions nodeDimensions) {
super(executor);
valuesFetcher = new ValuesFetcher(metricsManager, vespaServices, metricsConsumers);
- this.nodeMetricGatherer = new NodeMetricGatherer(metricsManager, vespaServices, applicationDimensions, nodeDimensions);
+ this.nodeMetricGatherer = new NodeMetricGatherer(metricsManager, applicationDimensions, nodeDimensions);
this.metricsConsumers = metricsConsumers;
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java
index 49f5036b3fd..6c94de49140 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/yamas/YamasResponse.java
@@ -29,7 +29,7 @@ public class YamasResponse extends HttpResponse {
@Override
public void render(OutputStream outputStream) throws IOException {
- YamasJsonUtil.toJson(metrics, outputStream, true);
+ YamasJsonUtil.toJson(metrics, outputStream, false);
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
index 13b2a8d859c..5086846293b 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java
@@ -107,7 +107,7 @@ public class YamasJsonUtil {
for (int i = 0; i < metrics.size() - 1; i++) {
toJson(metrics.get(i), generator, addStatus);
}
- toJson(metrics.get(metrics.size() - 1), generator, true);
+ toJson(metrics.get(metrics.size() - 1), generator, addStatus);
generator.writeEndArray();
generator.writeEndObject();
generator.close();
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java
index 5fe9af24c3d..c2d05a8636e 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java
@@ -57,14 +57,6 @@ public class PrometheusUtil {
sampleList.add(new Sample(metricName, labels, labelValues, metric.getValue().doubleValue(), packet.timestamp * 1000));
}
}
- // convert status message to 0,1 metric
- var firstPacket = packets.get(0);
- String statusMetricName = serviceName + "_status";
- // MetricsPacket status 0 means OK, but it's the opposite in Prometheus.
- double statusMetricValue = (firstPacket.statusCode == 0) ? 1.0 : 0.0;
- List<Sample> sampleList = singletonList(new Sample(statusMetricName, emptyList(), emptyList(),
- statusMetricValue, firstPacket.timestamp * 1000));
- metricFamilySamples.add(new MetricFamilySamples(statusMetricName, Collector.Type.UNTYPED, "status of service", sampleList));
}));
return new PrometheusModel(metricFamilySamples);
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java
index 02785674103..3da7aef0a12 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/NodeMetricGatherer.java
@@ -10,10 +10,8 @@ import ai.vespa.metricsproxy.metric.model.MetricId;
import ai.vespa.metricsproxy.metric.model.MetricsPacket;
import ai.vespa.metricsproxy.metric.model.ServiceId;
import ai.vespa.metricsproxy.service.SystemPollerProvider;
-import ai.vespa.metricsproxy.service.VespaServices;
import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.component.annotation.Inject;
-import com.yahoo.container.jdisc.state.CoredumpGatherer;
import com.yahoo.container.jdisc.state.FileWrapper;
import com.yahoo.container.jdisc.state.HostLifeGatherer;
@@ -21,9 +19,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
-
-import static ai.vespa.metricsproxy.node.ServiceHealthGatherer.gatherServiceHealthMetrics;
/**
* Fetches miscellaneous system metrics for node, including
@@ -35,15 +30,13 @@ import static ai.vespa.metricsproxy.node.ServiceHealthGatherer.gatherServiceHeal
*/
public class NodeMetricGatherer {
- private final VespaServices vespaServices;
private final ApplicationDimensions applicationDimensions;
private final NodeDimensions nodeDimensions;
private final MetricsManager metricsManager;
@Inject
- public NodeMetricGatherer(MetricsManager metricsManager, VespaServices vespaServices, ApplicationDimensions applicationDimensions, NodeDimensions nodeDimensions) {
+ public NodeMetricGatherer(MetricsManager metricsManager, ApplicationDimensions applicationDimensions, NodeDimensions nodeDimensions) {
this.metricsManager = metricsManager;
- this.vespaServices = vespaServices;
this.applicationDimensions = applicationDimensions;
this.nodeDimensions = nodeDimensions;
}
@@ -51,10 +44,7 @@ public class NodeMetricGatherer {
public List<MetricsPacket> gatherMetrics() {
FileWrapper fileWrapper = new FileWrapper();
List<MetricsPacket.Builder> metricPacketBuilders = new ArrayList<>();
- metricPacketBuilders.addAll(gatherServiceHealthMetrics(vespaServices));
- JsonNode coredumpPacket = CoredumpGatherer.gatherCoredumpMetrics(fileWrapper);
- addObjectToBuilders(metricPacketBuilders, coredumpPacket);
if (SystemPollerProvider.runningOnLinux()) {
JsonNode packet = HostLifeGatherer.getHostLifePacket(fileWrapper);
addObjectToBuilders(metricPacketBuilders, packet);
@@ -71,8 +61,6 @@ public class NodeMetricGatherer {
protected static void addObjectToBuilders(List<MetricsPacket.Builder> builders, JsonNode object) {
MetricsPacket.Builder builder = new MetricsPacket.Builder(ServiceId.toServiceId(object.get("application").textValue()));
builder.timestamp(object.get("timestamp").longValue());
- if (object.has("status_code")) builder.statusCode(object.get("status_code").intValue());
- if (object.has("status_msg")) builder.statusMessage(object.get("status_msg").textValue());
if (object.has("metrics")) {
JsonNode metrics = object.get("metrics");
Iterator<?> keys = metrics.fieldNames();
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java
deleted file mode 100644
index d09f2aff3e5..00000000000
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/node/ServiceHealthGatherer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.metricsproxy.node;
-
-import ai.vespa.metricsproxy.metric.HealthMetric;
-import ai.vespa.metricsproxy.metric.model.ConsumerId;
-import ai.vespa.metricsproxy.metric.model.DimensionId;
-import ai.vespa.metricsproxy.metric.model.MetricsPacket;
-import ai.vespa.metricsproxy.service.VespaServices;
-
-import java.time.Instant;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * @author olaa
- */
-public class ServiceHealthGatherer {
-
- protected static List<MetricsPacket.Builder> gatherServiceHealthMetrics(VespaServices vespaServices) {
- return vespaServices.getVespaServices()
- .stream()
- .map(service -> {
- HealthMetric healt = service.getHealth();
- return new MetricsPacket.Builder(service.getMonitoringName())
- .timestamp(Instant.now().getEpochSecond())
- .statusMessage(healt.getStatus().status)
- .statusCode(healt.getStatus().code)
- .putDimension(DimensionId.toDimensionId("instance"), service.getInstanceName())
- .putDimension(DimensionId.toDimensionId("metrictype"), "health")
- .addConsumers(Set.of(ConsumerId.toConsumerId("Vespa")));
- })
- .toList();
- }
-
-}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/prometheus/PrometheusHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/prometheus/PrometheusHandlerTest.java
index 2c216272022..90536ddcfdb 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/prometheus/PrometheusHandlerTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/prometheus/PrometheusHandlerTest.java
@@ -60,23 +60,12 @@ public class PrometheusHandlerTest extends HttpHandlerTestBase {
}
@Test
- public void response_contains_node_status() {
- assertTrue(valuesResponse.contains("vespa_node_status 1.0"));
- }
-
- @Test
public void response_contains_node_metrics() {
String cpu = getLine(valuesResponse, CPU_METRIC + "{");
assertTrue(cpu.contains("} 12.345")); // metric value
}
@Test
- public void response_contains_service_status() {
- assertTrue(valuesResponse.contains("vespa_dummy_status 1.0"));
- assertTrue(valuesResponse.contains("vespa_down_service_status 0.0"));
- }
-
- @Test
public void response_contains_service_metrics() {
String dummy0 = getLine(valuesResponse, DummyService.NAME + "0");
assertTrue(dummy0.contains("c_test")); // metric name
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/yamas/YamasHandlerTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/yamas/YamasHandlerTest.java
index a4e61d5965e..346fc6a462b 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/yamas/YamasHandlerTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/yamas/YamasHandlerTest.java
@@ -13,6 +13,7 @@ import java.util.List;
import java.util.concurrent.Executors;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class YamasHandlerTest extends HttpHandlerTestBase {
@@ -48,8 +49,9 @@ public class YamasHandlerTest extends HttpHandlerTestBase {
}
@Test
- public void value_response_contains_coredump_metric() {
- assertTrue(valuesResponse.contains("\"application\":\"system-coredumps-processing\",\"routing\":{\"yamas\":{\"namespaces\":[\"Vespa\"]}}"));
+ public void value_response_does_not_contain_status() {
+ assertFalse(valuesResponse.contains("status_code"));
+ assertFalse(valuesResponse.contains("status_msg"));
}
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
index a5bc7a0877a..3e85166430d 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModelTest.java
@@ -28,7 +28,7 @@ import static org.junit.Assert.assertTrue;
*/
public class YamasJsonModelTest {
- private static final String EXPECTED_JSON = "{\"metrics\":[{\"status_code\":0,\"timestamp\":1400047900,\"application\":\"vespa.searchnode\",\"metrics\":{\"cpu\":55.5555555555555,\"memory_virt\":22222222222,\"memory_rss\":5555555555},\"dimensions\":{\"applicationName\":\"app\",\"tenantName\":\"tenant\",\"metrictype\":\"system\",\"instance\":\"searchnode\",\"applicationInstance\":\"default\",\"clustername\":\"cluster\"},\"routing\":{\"yamas\":{\"namespaces\":[\"Vespa\"]}},\"status_msg\":\"Data collected successfully\"}]}";
+ private static final String EXPECTED_JSON = "{\"metrics\":[{\"timestamp\":1400047900,\"application\":\"vespa.searchnode\",\"metrics\":{\"cpu\":55.5555555555555,\"memory_virt\":22222222222,\"memory_rss\":5555555555},\"dimensions\":{\"applicationName\":\"app\",\"tenantName\":\"tenant\",\"metrictype\":\"system\",\"instance\":\"searchnode\",\"applicationInstance\":\"default\",\"clustername\":\"cluster\"},\"routing\":{\"yamas\":{\"namespaces\":[\"Vespa\"]}}}]}";
@Test
public void array_definition_creates_correct_json() throws IOException {
@@ -69,7 +69,7 @@ public class YamasJsonModelTest {
assertEquals(5.555555555E9, metricsPacket.metrics().get(toMetricId("memory_rss")).doubleValue(), 0.1d); //Not using custom double rendrer
// Serialize and verify
- String string = YamasJsonUtil.toJson(List.of(metricsPacket), true);
+ String string = YamasJsonUtil.toJson(List.of(metricsPacket), false);
assertEquals(EXPECTED_JSON, string);
}
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
index ebd80b38a42..133461e3658 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtilTest.java
@@ -31,15 +31,6 @@ public class YamasJsonUtilTest {
private static ArrayNode metrics(List<MetricsPacket> packets, boolean addStatus) throws IOException {
return (ArrayNode) jsonMapper.readTree(YamasJsonUtil.toJson(packets, addStatus)).get("metrics");
}
- @Test
- public void json_model_gets_null_status_by_default() throws IOException {
- ArrayNode json = metrics(List.of(new MetricsPacket.Builder(toServiceId("foo")).build(),
- new MetricsPacket.Builder(toServiceId("bar")).build()), false);
- assertFalse(json.get(0).has("status_code"));
- assertFalse(json.get(0).has("status_msg"));
- assertTrue(json.get(1).has("status_code"));
- assertTrue(json.get(1).has("status_msg"));
- }
@Test
public void status_is_included_in_json_model_when_explicitly_asked_for() throws IOException {
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java
index 0de3526b40d..635365f9462 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/node/NodeMetricGathererTest.java
@@ -30,8 +30,6 @@ public class NodeMetricGathererTest {
MetricsPacket packet = builders.remove(0).build();
assertEquals("host_life", packet.service.id);
- assertEquals(0, packet.statusCode);
- assertEquals("OK", packet.statusMessage);
assertEquals(123, packet.timestamp);
assertEquals(12l, packet.metrics().get(MetricId.toMetricId("uptime")));
assertEquals(1l, packet.metrics().get(MetricId.toMetricId("alive")));
@@ -41,8 +39,6 @@ public class NodeMetricGathererTest {
private JsonNode generateHostLifePacket() {
ObjectNode jsonObject = jsonMapper.createObjectNode();
- jsonObject.put("status_code", 0);
- jsonObject.put("status_msg", "OK");
jsonObject.put("timestamp", 123);
jsonObject.put("application", "host_life");
ObjectNode metrics = jsonMapper.createObjectNode();
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
index 1e7a398b3d0..142740356d7 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/rpc/RpcMetricsTest.java
@@ -167,7 +167,6 @@ public class RpcMetricsTest {
}
}
- verifyStatusMessage(metrics.get(metrics.size() - 1));
}
private void verfiyMetricsFromServiceObject(VespaService service) {
@@ -266,12 +265,4 @@ public class RpcMetricsTest {
return returnValue;
}
- private static void verifyStatusMessage(JsonNode jsonObject) {
- assertEquals(0, jsonObject.get("status_code").intValue());
- assertNotNull(jsonObject.get("status_msg"));
- assertNotNull(jsonObject.get("application"));
- assertNotNull(jsonObject.get("routing"));
- assertEquals(4, jsonObject.size());
- }
-
}