aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-05-14 11:54:26 +0200
committergjoranv <gv@verizonmedia.com>2019-05-14 13:37:10 +0200
commit30fd7394d417d0988ee60e7f6561e09af92552d7 (patch)
tree1721bb0d1763f16dcdb3a036e42a455581650db0 /node-admin/src
parent1e98247ac92f391bf8af18627354f2374255f32b (diff)
Push metrics to both old and new metrics proxy, temporarily.
Diffstat (limited to 'node-admin/src')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java26
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java7
2 files changed, 27 insertions, 6 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 96db16bf1c1..abbf96a515c 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -37,6 +37,7 @@ import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
+import java.util.logging.Level;
import java.util.logging.Logger;
import static com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentImpl.ContainerState.ABSENT;
@@ -592,14 +593,29 @@ public class NodeAgentImpl implements NodeAgent {
for (DimensionMetrics dimensionMetrics : metrics) {
params.append(dimensionMetrics.toSecretAgentReport());
}
- String wrappedMetrics = "s:" + params.toString();
+ } catch (JsonProcessingException e) {
+ // TODO: wrap everything into one try-block (to avoid 'return') when old metrics proxy is discontinued
+ context.log(logger, LogLevel.WARNING, "Failed to wrap metrics in secret agent report", e);
+ return;
+ }
+ String wrappedMetrics = "s:" + params.toString();
+
+ // Push metrics to the metrics proxy in each container
+ runPushMetricsCommand(context, wrappedMetrics, true);
+ runPushMetricsCommand(context, wrappedMetrics, false);
+ }
- // Push metrics to the metrics proxy in each container
- String[] command = {"vespa-rpc-invoke", "-t", "2", "tcp/localhost:19091", "setExtraMetrics", wrappedMetrics};
+ // TODO: Clean up and inline method when old metrics proxy has been discontinued.
+ private void runPushMetricsCommand(NodeAgentContext context, String wrappedMetrics, boolean newMetricsProxy) {
+ int port = newMetricsProxy ? 19094 : 19091;
+ String[] command = {"vespa-rpc-invoke", "-t", "2", "tcp/localhost:" + port, "setExtraMetrics", wrappedMetrics};
+ try {
dockerOperations.executeCommandInContainerAsRoot(context, 5L, command);
- } catch (DockerExecTimeoutException | JsonProcessingException e) {
- context.log(logger, LogLevel.WARNING, "Failed to push metrics to container", e);
+ } catch (DockerExecTimeoutException e) {
+ Level level = newMetricsProxy ? LogLevel.DEBUG : LogLevel.WARNING;
+ context.log(logger, level, "Failed to push metrics to container", e);
}
+
}
private Optional<Container> getContainer(NodeAgentContext context) {
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 620c59969d6..416c70fbf10 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -39,8 +39,10 @@ import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import static org.hamcrest.Matchers.lessThan;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
@@ -678,7 +680,7 @@ public class NodeAgentImplTest {
.replaceAll("\\s", "")
.replaceAll("\\n", "");
- String[] expectedCommand = {"vespa-rpc-invoke", "-t", "2", "tcp/localhost:19091", "setExtraMetrics", expectedMetrics};
+ String[] expectedCommand = {"vespa-rpc-invoke", "-t", "2", "tcp/localhost:19094", "setExtraMetrics", expectedMetrics};
doAnswer(invocation -> {
NodeAgentContext calledContainerName = (NodeAgentContext) invocation.getArguments()[0];
long calledTimeout = (long) invocation.getArguments()[1];
@@ -688,6 +690,9 @@ public class NodeAgentImplTest {
.replaceAll("\"timestamp\":\\d+", "\"timestamp\":0")
.replaceAll("([0-9]+\\.[0-9]{1,3})([0-9]*)", "$1"); // Only keep the first 3 decimals
+ // TODO: Remove when old metrics proxy is discontinued.
+ calledCommand[3] = calledCommand[3].replaceFirst("19091", "19094");
+
assertEquals(context, calledContainerName);
assertEquals(5L, calledTimeout);
assertArrayEquals(expectedCommand, calledCommand);