in src/main/java/org/opensearch/performanceanalyzer/collectors/NodeDetailsCollector.java [60:110]
public void collectMetrics(long startTime) {
if (OpenSearchResources.INSTANCE.getClusterService() == null
|| OpenSearchResources.INSTANCE.getClusterService().state() == null
|| OpenSearchResources.INSTANCE.getClusterService().state().nodes() == null) {
return;
}
StringBuilder value = new StringBuilder();
value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds())
.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor);
// We add the config overrides in line#2 because we don't know how many lines
// follow that belong to actual node details, and the reader also has no way to
// know this information in advance unless we add the number of nodes as
// additional metadata in the file.
try {
if (configOverridesWrapper != null) {
String rcaOverrides =
ConfigOverridesHelper.serialize(
configOverridesWrapper.getCurrentClusterConfigOverrides());
value.append(rcaOverrides);
} else {
LOG.warn("Overrides wrapper is null. Check NodeDetailsCollector instantiation.");
}
} catch (IOException ioe) {
LOG.error("Unable to serialize rca config overrides.", ioe);
}
value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor);
// line#3 denotes when the timestamp when the config override happened.
if (configOverridesWrapper != null) {
value.append(configOverridesWrapper.getLastUpdatedTimestamp());
} else {
value.append(0L);
}
value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor);
DiscoveryNodes discoveryNodes =
OpenSearchResources.INSTANCE.getClusterService().state().nodes();
DiscoveryNode masterNode = discoveryNodes.getMasterNode();
Iterator<DiscoveryNode> discoveryNodeIterator = discoveryNodes.iterator();
addMetricsToStringBuilder(discoveryNodes.getLocalNode(), value, "", masterNode);
String localNodeID = discoveryNodes.getLocalNode().getId();
while (discoveryNodeIterator.hasNext()) {
addMetricsToStringBuilder(discoveryNodeIterator.next(), value, localNodeID, masterNode);
}
saveMetricValues(value.toString(), startTime);
}