diff options
author | freva <valerijf@yahoo-inc.com> | 2016-10-21 12:41:23 +0200 |
---|---|---|
committer | freva <valerijf@yahoo-inc.com> | 2016-10-21 12:41:23 +0200 |
commit | 973f49a7f2d7eb970a4da379433c97aaa86cbd41 (patch) | |
tree | b0ed2f7b6a9a9a17f3dff5ae3a475511bf41761b /node-admin | |
parent | 4696635291d8168bdbe501d836dfd3ea36c49333 (diff) |
Add routing to metrics output, add zone and parentHostname to dimensions
Diffstat (limited to 'node-admin')
4 files changed, 41 insertions, 12 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 be70dfeb0e6..f434e325a84 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 @@ -1,6 +1,7 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.admin.nodeagent; +import com.yahoo.net.HostName; import com.yahoo.vespa.hosted.dockerapi.Container; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.Docker; @@ -85,6 +86,7 @@ public class NodeAgentImpl implements NodeAgent { private NodeAttributes lastAttributesSet = null; ContainerNodeSpec lastNodeSpec = null; CpuUsageReporter lastCpuMetric = new CpuUsageReporter(); + String parentHostname; public NodeAgentImpl( final String hostName, @@ -105,6 +107,7 @@ public class NodeAgentImpl implements NodeAgent { this.metricReceiver = metricReceiver; this.environment = environment; this.maintainer = maintainer; + this.parentHostname = HostName.getLocalhost(); } @Override @@ -471,12 +474,14 @@ public class NodeAgentImpl implements NodeAgent { .add("host", hostname) .add("role", "tenants") .add("flavor", nodeSpec.nodeFlavor) - .add("state", nodeSpec.nodeState.toString()); + .add("state", nodeSpec.nodeState.toString()) + .add("zone", environment.getZone()) + .add("parentHostname", parentHostname); if (nodeSpec.owner.isPresent()) { dimensionsBuilder .add("tenantName", nodeSpec.owner.get().tenant) - .add("app", nodeSpec.owner.get().application); + .add("app", nodeSpec.owner.get().application + "." + nodeSpec.owner.get().instance); } if (nodeSpec.membership.isPresent()) { dimensionsBuilder @@ -542,14 +547,16 @@ public class NodeAgentImpl implements NodeAgent { Path vespaCheckPath = Paths.get(getDefaults().underVespaHome("libexec/yms/yms_check_vespa")); SecretAgentScheduleMaker scheduleMaker = new SecretAgentScheduleMaker("vespa", 60, vespaCheckPath, "all") + .withTag("namespace", "Vespa") .withTag("role", "tenants") .withTag("flavor", nodeSpec.nodeFlavor) .withTag("state", nodeSpec.nodeState.toString()) - .withTag("zone", environment.getZone()); + .withTag("zone", environment.getZone()) + .withTag("parentHostname", parentHostname); if (nodeSpec.owner.isPresent()) scheduleMaker .withTag("tenantName", nodeSpec.owner.get().tenant) - .withTag("app", nodeSpec.owner.get().application); + .withTag("app", nodeSpec.owner.get().application + "." + nodeSpec.owner.get().instance); if (nodeSpec.membership.isPresent()) scheduleMaker .withTag("clustertype", nodeSpec.membership.get().clusterType) 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 5e33a576463..6e059d1dfe9 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 @@ -67,7 +67,7 @@ public class ComponentsProviderImpl implements ComponentsProvider { nodeRepository, nodeAdmin, INITIAL_SCHEDULER_DELAY_MILLIS, NODE_ADMIN_STATE_INTERVAL_MILLIS, orchestrator, baseHostName); metricReceiverWrapper = metricReceiver; - initializeNodeAgentSecretAgent(docker, environment.getZone()); + initializeNodeAgentSecretAgent(docker); } @Override @@ -81,14 +81,14 @@ public class ComponentsProviderImpl implements ComponentsProvider { } - private void initializeNodeAgentSecretAgent(Docker docker, String zone) { + private void initializeNodeAgentSecretAgent(Docker docker) { ContainerName nodeAdminName = new ContainerName("node-admin"); final Path yamasAgentFolder = Paths.get("/etc/yamas-agent/"); docker.executeInContainer(nodeAdminName, "sudo", "chmod", "a+w", yamasAgentFolder.toString()); Path nodeAdminCheckPath = Paths.get("/usr/bin/curl"); SecretAgentScheduleMaker scheduleMaker = new SecretAgentScheduleMaker("node-admin", 60, nodeAdminCheckPath, - "localhost:4080/rest/metrics").withTag("zone", zone); + "localhost:4080/rest/metrics"); try { scheduleMaker.writeTo(yamasAgentFolder); 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 67af5a996af..a5d3efa10db 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 @@ -433,6 +433,7 @@ public class NodeAgentImplTest { ContainerNodeSpec.Membership membership = new ContainerNodeSpec.Membership("clustType", "clustId", "grp", 3, false); nodeAgent.lastNodeSpec = new ContainerNodeSpec(hostName, null, containerName, Node.State.active, "tenants", "docker", version, Optional.of(owner), Optional.of(membership), null, null, null, null, null); + nodeAgent.parentHostname = "parent.host.name.yahoo.com"; long totalContainerCpuTime = (long) ((Map) cpu_stats.get("cpu_usage")).get("total_usage"); long totalSystemCpuTime = (long) cpu_stats.get("system_cpu_usage"); diff --git a/node-admin/src/test/resources/docker.stats.metrics.expected.json b/node-admin/src/test/resources/docker.stats.metrics.expected.json index c8bdf87707c..50a47a9e14a 100644 --- a/node-admin/src/test/resources/docker.stats.metrics.expected.json +++ b/node-admin/src/test/resources/docker.stats.metrics.expected.json @@ -3,7 +3,7 @@ "application":"docker", "dimensions":{ "flavor":"docker", - "app":"testapp", + "app":"testapp.testinstance", "clustertype":"clustType", "role":"tenants", "tenantName":"tester", @@ -11,38 +11,52 @@ "vespaVersion":"1.2.3", "state":"active", "clusterid":"clustId", + "parentHostname":"parent.host.name.yahoo.com", + "zone":"dev.us-east-1", "interface":"eth1" }, "metrics":{ "node.network.bytes_sent":5.4246745E7, "node.network.bytes_rcvd":3245766.0 + }, + "routing":{ + "yamas":{ + "namespaces": ["Vespa"] + } } }, { "application":"docker", "dimensions":{ "flavor":"docker", - "app":"testapp", + "app":"testapp.testinstance", "clustertype":"clustType", "role":"tenants", "tenantName":"tester", "host":"hostname", "vespaVersion":"1.2.3", "state":"active", - "clusterid":"clustId" + "clusterid":"clustId", + "parentHostname":"parent.host.name.yahoo.com", + "zone":"dev.us-east-1" }, "metrics":{ "node.cpu.busy.pct": 45.6789123, "node.cpu.throttled_time": 4523.0, "node.memory.usage":1.752707072E9, "node.memory.limit":4.294967296E9 + }, + "routing":{ + "yamas":{ + "namespaces": ["Vespa"] + } } }, { "application":"docker", "dimensions":{ "flavor":"docker", - "app":"testapp", + "app":"testapp.testinstance", "clustertype":"clustType", "role":"tenants", "tenantName":"tester", @@ -50,11 +64,18 @@ "vespaVersion":"1.2.3", "state":"active", "clusterid":"clustId", + "parentHostname":"parent.host.name.yahoo.com", + "zone":"dev.us-east-1", "interface":"eth0" }, "metrics":{ "node.network.bytes_sent":2.0303455E7, "node.network.bytes_rcvd":1.949927E7 + }, + "routing":{ + "yamas":{ + "namespaces": ["Vespa"] + } } } -]
\ No newline at end of file +] |