public void collectMetrics()

in src/main/java/org/opensearch/performanceanalyzer/collectors/AdmissionControlMetricsCollector.java [71:142]


    public void collectMetrics(long startTime) {
        if (!isAdmissionControlFeatureAvailable()) {
            LOG.debug("AdmissionControl is not available for this domain");
            PerformanceAnalyzerApp.WRITER_METRICS_AGGREGATOR.updateStat(
                    WriterMetrics.ADMISSION_CONTROL_COLLECTOR_NOT_AVAILABLE, "", 1);
            return;
        }

        long startTimeMillis = System.currentTimeMillis();
        try {
            Class admissionController = Class.forName(ADMISSION_CONTROLLER);
            Class jettyAdmissionControlService = Class.forName(ADMISSION_CONTROL_SERVICE);

            Method getAdmissionController =
                    jettyAdmissionControlService.getDeclaredMethod(
                            "getAdmissionController", String.class);

            Object globalJVMMP = getAdmissionController.invoke(null, GLOBAL_JVMMP);
            Object requestSize = getAdmissionController.invoke(null, REQUEST_SIZE);

            if (Objects.isNull(globalJVMMP) && Objects.isNull(requestSize)) {
                return;
            }

            value.setLength(0);

            Method getUsedQuota = admissionController.getDeclaredMethod("getUsedQuota");
            Method getTotalQuota = admissionController.getDeclaredMethod("getTotalQuota");
            Method getRejectionCount = admissionController.getDeclaredMethod("getRejectionCount");

            if (!Objects.isNull(globalJVMMP)) {
                value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds())
                        .append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(
                                new AdmissionControlMetrics(
                                                GLOBAL_JVMMP,
                                                (long) getUsedQuota.invoke(globalJVMMP),
                                                (long) getTotalQuota.invoke(globalJVMMP),
                                                (long) getRejectionCount.invoke(globalJVMMP))
                                        .serialize());
            }

            if (!Objects.isNull(requestSize)) {
                value.append(PerformanceAnalyzerMetrics.getJsonCurrentMilliSeconds())
                        .append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(
                                new AdmissionControlMetrics(
                                                REQUEST_SIZE,
                                                (long) getUsedQuota.invoke(requestSize),
                                                (long) getTotalQuota.invoke(requestSize),
                                                (long) getRejectionCount.invoke(requestSize))
                                        .serialize());
            }

            saveMetricValues(value.toString(), startTime);

            PerformanceAnalyzerApp.WRITER_METRICS_AGGREGATOR.updateStat(
                    WriterMetrics.ADMISSION_CONTROL_COLLECTOR_EXECUTION_TIME,
                    "",
                    System.currentTimeMillis() - startTimeMillis);

        } catch (Exception ex) {
            PerformanceAnalyzerApp.ERRORS_AND_EXCEPTIONS_AGGREGATOR.updateStat(
                    ExceptionsAndErrors.ADMISSION_CONTROL_COLLECTOR_ERROR,
                    getCollectorName(),
                    System.currentTimeMillis() - startTimeMillis);
            LOG.debug(
                    "Exception in collecting AdmissionControl Metrics: {} for startTime {}",
                    ex::toString,
                    () -> startTime);
        }
    }