public static void emitHttpMetrics()

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