diff options
author | Ola Aunronning <olaa@yahooinc.com> | 2023-06-15 14:23:31 +0200 |
---|---|---|
committer | Ola Aunronning <olaa@yahooinc.com> | 2023-06-15 14:27:35 +0200 |
commit | 3e22f3b64a889a8045a4008d3b98c542de4301b9 (patch) | |
tree | 560085af8e56961ca04ba5e64b56c3a87e413dd4 /metrics-proxy | |
parent | b7fa88adf8cacacba2088d8532d79958182b1916 (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')
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()); - } - } |