in src/main/java/org/opensearch/performanceanalyzer/reader/MetricsEmitter.java [566:708]
public static void emitHttpMetrics(
final DSLContext create,
final MetricsDB db,
final HttpRequestMetricsSnapshot rqMetricsSnap)
throws Exception {
long mCurrT = System.currentTimeMillis();
Dimensions dimensions = new Dimensions();
Result<Record> res = rqMetricsSnap.fetchLatencyByOp();
List<String> dims =
new ArrayList<String>() {
{
this.add(HttpRequestMetricsSnapshot.Fields.OPERATION.toString());
this.add(HttpRequestMetricsSnapshot.Fields.EXCEPTION.toString());
this.add(HttpRequestMetricsSnapshot.Fields.INDICES.toString());
this.add(HttpRequestMetricsSnapshot.Fields.HTTP_RESP_CODE.toString());
}
};
db.createMetric(
new Metric<Double>(AllMetrics.CommonMetric.LATENCY.toString(), 0d),
LATENCY_TABLE_DIMENSIONS);
db.createMetric(
new Metric<Double>(AllMetrics.HttpMetric.HTTP_TOTAL_REQUESTS.toString(), 0d), dims);
db.createMetric(
new Metric<Double>(AllMetrics.HttpMetric.HTTP_REQUEST_DOCS.toString(), 0d), dims);
for (Record r : res) {
dimensions.put(
HttpRequestMetricsSnapshot.Fields.OPERATION.toString(),
r.get(HttpRequestMetricsSnapshot.Fields.OPERATION.toString()).toString());
dimensions.put(
HttpRequestMetricsSnapshot.Fields.HTTP_RESP_CODE.toString(),
r.get(HttpRequestMetricsSnapshot.Fields.HTTP_RESP_CODE.toString()).toString());
dimensions.put(
HttpRequestMetricsSnapshot.Fields.INDICES.toString(),
r.get(HttpRequestMetricsSnapshot.Fields.INDICES.toString()).toString());
dimensions.put(
HttpRequestMetricsSnapshot.Fields.EXCEPTION.toString(),
r.get(HttpRequestMetricsSnapshot.Fields.EXCEPTION.toString()).toString());
Double sumLatency =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields.LAT
.toString(),
MetricsDB.SUM))
.toString());
Double avgLatency =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields.LAT
.toString(),
MetricsDB.AVG))
.toString());
Double minLatency =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields.LAT
.toString(),
MetricsDB.MIN))
.toString());
Double maxLatency =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields.LAT
.toString(),
MetricsDB.MAX))
.toString());
Double count =
Double.parseDouble(
r.get(HttpRequestMetricsSnapshot.Fields.HTTP_TOTAL_REQUESTS.toString())
.toString());
Double sumItemCount =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields
.HTTP_REQUEST_DOCS
.toString(),
MetricsDB.SUM))
.toString());
Double avgItemCount =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields
.HTTP_REQUEST_DOCS
.toString(),
MetricsDB.AVG))
.toString());
Double minItemCount =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields
.HTTP_REQUEST_DOCS
.toString(),
MetricsDB.MIN))
.toString());
Double maxItemCount =
Double.parseDouble(
r.get(
DBUtils.getAggFieldName(
HttpRequestMetricsSnapshot.Fields
.HTTP_REQUEST_DOCS
.toString(),
MetricsDB.MAX))
.toString());
db.putMetric(
new Metric<Double>(
AllMetrics.CommonMetric.LATENCY.toString(),
sumLatency,
avgLatency,
minLatency,
maxLatency),
dimensions,
0);
db.putMetric(
new Metric<Double>(AllMetrics.HttpMetric.HTTP_TOTAL_REQUESTS.toString(), count),
dimensions,
0);
db.putMetric(
new Metric<Double>(
AllMetrics.HttpMetric.HTTP_REQUEST_DOCS.toString(),
sumItemCount,
avgItemCount,
minItemCount,
maxItemCount),
dimensions,
0);
}
long mFinalT = System.currentTimeMillis();
LOG.debug("Total time taken for writing http metrics metricsdb: {}", mFinalT - mCurrT);
}