diff options
author | Andreas Eriksen <andreer@pvv.ntnu.no> | 2019-01-25 11:39:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-25 11:39:53 +0100 |
commit | 6908a8e8598d95286d563f97c2e433d345e5abed (patch) | |
tree | 236ed55066585f499f21e9d32746930c10afb901 /node-admin/src | |
parent | 249a84e81975da898ebf9a4a7c79e585a06ae8f7 (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.java | 18 |
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(); + } } |