summaryrefslogtreecommitdiffstats
path: root/node-admin/src
diff options
context:
space:
mode:
authorAndreas Eriksen <andreer@pvv.ntnu.no>2019-01-25 11:39:53 +0100
committerGitHub <noreply@github.com>2019-01-25 11:39:53 +0100
commit6908a8e8598d95286d563f97c2e433d345e5abed (patch)
tree236ed55066585f499f21e9d32746930c10afb901 /node-admin/src
parent249a84e81975da898ebf9a4a7c79e585a06ae8f7 (diff)
report cpu microcode version with coredumps (#8176)
Diffstat (limited to 'node-admin/src')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
index 6787e2e0784..a3e8d077513 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java
@@ -264,6 +264,7 @@ public class StorageMaintainer {
attributes.put("environment", context.zoneId().environment().value());
attributes.put("flavor", context.node().getFlavor());
attributes.put("kernel_version", System.getProperty("os.version"));
+ attributes.put("cpu_microcode_version", getMicrocodeVersion(context));
container.map(c -> c.image).ifPresent(image -> attributes.put("docker_image", image.asString()));
context.node().getParentHostname().ifPresent(parent -> attributes.put("parent_hostname", parent));
@@ -290,4 +291,21 @@ public class StorageMaintainer {
new UnixPath(containerLogsOnHost).moveIfExists(containerLogsInArchiveDir);
new UnixPath(context.pathOnHostFromPathInNode("/")).deleteRecursively();
}
+
+ private String getMicrocodeVersion(NodeAgentContext context) {
+ String output = terminal.newCommandLine(context)
+ .add("grep", "microcode", "/proc/cpuinfo")
+ .setTimeout(Duration.ofSeconds(60))
+ .executeSilently()
+ .getOutputLinesStream()
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No microcode information found in /proc/cpuinfo"));
+
+ String[] results = output.split(":");
+ if (results.length != 2) {
+ throw new RuntimeException("Result from detect microcode command not as expected: " + output);
+ }
+
+ return results[1].trim();
+ }
}