diff options
author | gjoranv <gv@verizonmedia.com> | 2019-05-14 11:54:26 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-05-14 13:37:10 +0200 |
commit | 30fd7394d417d0988ee60e7f6561e09af92552d7 (patch) | |
tree | 1721bb0d1763f16dcdb3a036e42a455581650db0 /node-admin/src | |
parent | 1e98247ac92f391bf8af18627354f2374255f32b (diff) |
Push metrics to both old and new metrics proxy, temporarily.
Diffstat (limited to 'node-admin/src')
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); |