diff options
author | freva <valerijf@yahoo-inc.com> | 2017-02-14 14:38:49 +0100 |
---|---|---|
committer | freva <valerijf@yahoo-inc.com> | 2017-02-14 14:38:49 +0100 |
commit | 0d0646dcf86051e2bde34137b975a8b31cac1c8a (patch) | |
tree | 8e54053ee66397b93e2e67ab31a7d11ded704e18 /node-admin | |
parent | 63219192b9cdaaa27016d0b93e8ad06ee9a3226c (diff) |
Fix docker metrics
Diffstat (limited to 'node-admin')
5 files changed, 12 insertions, 23 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 f60ba83460d..10ed75a6232 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 @@ -81,7 +81,7 @@ public class NodeAgentImpl implements NodeAgent { // The attributes of the last successful node repo attribute update for this node. Used to avoid redundant calls. private NodeAttributes lastAttributesSet = null; ContainerNodeSpec lastNodeSpec = null; - CpuUsageReporter lastCpuMetric; + CpuUsageReporter lastCpuMetric = new CpuUsageReporter(Instant.now()); Optional<String> vespaVersion = Optional.empty(); public NodeAgentImpl( @@ -91,8 +91,7 @@ public class NodeAgentImpl implements NodeAgent { final DockerOperations dockerOperations, final Optional<StorageMaintainer> storageMaintainer, final MetricReceiverWrapper metricReceiver, - final Environment environment, - final Optional<Container> container) { + final Environment environment) { this.nodeRepository = nodeRepository; this.orchestrator = orchestrator; this.hostname = hostName; @@ -102,8 +101,6 @@ public class NodeAgentImpl implements NodeAgent { NodeRepositoryImpl.containerNameFromHostName(hostName)); this.metricReceiver = metricReceiver; this.environment = environment; - - container.map(Container::getCreatedAsInstant).ifPresent(created -> lastCpuMetric = new CpuUsageReporter(created)); } @Override @@ -162,10 +159,13 @@ public class NodeAgentImpl implements NodeAgent { throw new RuntimeException("Can not restart a node agent."); } - // If the container is already running, initialize vespaVersion - vespaVersion = dockerOperations.getContainer(hostname) + // If the container is already running, initialize vespaVersion and lastCpuMetric + dockerOperations.getContainer(hostname) .filter(container -> container.state.isRunning()) - .flatMap(container -> dockerOperations.getVespaVersion(container.name)); + .ifPresent(container -> { + vespaVersion = dockerOperations.getVespaVersion(container.name); + lastCpuMetric = new CpuUsageReporter(container.getCreatedAsInstant()); + }); loopThread = new Thread(this::loop); loopThread.setName("loop-" + hostname); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java index b069d49bb55..c81442e5a54 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java @@ -65,7 +65,7 @@ public class ComponentsProviderImpl implements ComponentsProvider { Function<String, NodeAgent> nodeAgentFactory = (hostName) -> new NodeAgentImpl(hostName, nodeRepository, orchestrator, dockerOperations, - storageMaintainer, metricReceiver, environment, dockerOperations.getContainer(hostName)); + storageMaintainer, metricReceiver, environment); NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, storageMaintainer, NODE_AGENT_SCAN_INTERVAL_MILLIS, metricReceiver, aclMaintainer); nodeAdminStateUpdater = new NodeAdminStateUpdater(nodeRepository, nodeAdmin, INITIAL_SCHEDULER_DELAY_MILLIS, diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java index f52705bab7d..664d375ec09 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/ComponentsProviderWithMocks.java @@ -2,9 +2,6 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests; import com.yahoo.metrics.simple.MetricReceiver; -import com.yahoo.vespa.hosted.dockerapi.Container; -import com.yahoo.vespa.hosted.dockerapi.ContainerName; -import com.yahoo.vespa.hosted.dockerapi.DockerImage; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdmin; @@ -34,11 +31,9 @@ public class ComponentsProviderWithMocks implements ComponentsProvider { private final Environment environment = new Environment.Builder().build(); private final MetricReceiverWrapper mr = new MetricReceiverWrapper(MetricReceiver.nullImplementation); private final DockerOperations dockerOperations = new DockerOperationsImpl(dockerMock, environment, mr); - private final Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"), - new ContainerName("host123"), Container.State.RUNNING, 1); private final Function<String, NodeAgent> nodeAgentFactory = (hostName) -> new NodeAgentImpl(hostName, nodeRepositoryMock, orchestratorMock, - dockerOperations, Optional.empty(), mr, environment, Optional.of(container)); + dockerOperations, Optional.empty(), mr, environment); private NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, Optional.empty(), 100, mr, Optional.empty()); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java index 86d4d8d23ab..aef03327645 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java @@ -1,10 +1,8 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests; import com.yahoo.metrics.simple.MetricReceiver; -import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.Docker; -import com.yahoo.vespa.hosted.dockerapi.DockerImage; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; @@ -59,10 +57,8 @@ public class DockerTester implements AutoCloseable { MetricReceiverWrapper mr = new MetricReceiverWrapper(MetricReceiver.nullImplementation); final DockerOperations dockerOperations = new DockerOperationsImpl(dockerMock, environment, mr); - Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"), - new ContainerName("host123"), Container.State.RUNNING, 1); Function<String, NodeAgent> nodeAgentFactory = (hostName) -> new NodeAgentImpl(hostName, nodeRepositoryMock, - orchestratorMock, dockerOperations, Optional.of(storageMaintainer), mr, environment, Optional.of(container)); + orchestratorMock, dockerOperations, Optional.of(storageMaintainer), mr, environment); nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, Optional.of(storageMaintainer), 100, mr, Optional.empty()); updater = new NodeAdminStateUpdater(nodeRepositoryMock, nodeAdmin, 1, 1, orchestratorMock, "basehostname"); } 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 111b495a494..447097fe337 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 @@ -66,10 +66,8 @@ public class NodeAgentImplTest { .inetAddressResolver(new InetAddressResolver()) .pathResolver(pathResolver).build(); - private final Container container = new Container("host123.name.yahoo.com", new DockerImage("image-123"), - new ContainerName("host123"), Container.State.RUNNING, 1); private final NodeAgentImpl nodeAgent = new NodeAgentImpl(hostName, nodeRepository, orchestrator, dockerOperations, - Optional.of(storageMaintainer), metricReceiver, environment, Optional.of(container)); + Optional.of(storageMaintainer), metricReceiver, environment); @Test public void upToDateContainerIsUntouched() throws Exception { |