in src/main/java/org/opensearch/performanceanalyzer/collectors/MasterServiceMetrics.java [70:125]
public void collectMetrics(long startTime) {
try {
if (OpenSearchResources.INSTANCE.getClusterService() == null
|| OpenSearchResources.INSTANCE.getClusterService().getMasterService()
== null) {
return;
}
/*
pendingTasks API returns object of PendingClusterTask which contains insertOrder, priority, source, timeInQueue.
Example :
insertOrder: 101,
priority: "URGENT",
source: "create-index [foo_9], cause [api]",
timeIn_queue: "86ms"
*/
List<PendingClusterTask> pendingTasks =
OpenSearchResources.INSTANCE
.getClusterService()
.getMasterService()
.pendingTasks();
HashMap<String, Integer> pendingTaskCountPerTaskType = new HashMap<>();
pendingTasks.stream()
.forEach(
pendingTask -> {
String pendingTaskType =
pendingTask.getSource().toString().split(" ", 2)[0];
pendingTaskCountPerTaskType.put(
pendingTaskType,
pendingTaskCountPerTaskType.getOrDefault(pendingTaskType, 0)
+ 1);
});
value.setLength(0);
value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds());
pendingTaskCountPerTaskType.forEach(
(pendingTaskType, PendingTaskValue) -> {
value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor);
value.append(
new MasterPendingStatus(pendingTaskType, PendingTaskValue)
.serialize());
});
saveMetricValues(
value.toString(),
startTime,
PerformanceAnalyzerMetrics.MASTER_CURRENT,
PerformanceAnalyzerMetrics.MASTER_META_DATA);
} catch (Exception ex) {
LOG.debug(
"Exception in Collecting Master Metrics: {} for startTime {}",
() -> ex.toString(),
() -> startTime);
}
}