public void collectMetrics()

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);
        }
    }