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