public JsonNode retrieveAgentDiskIO()

in bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/proxy/PrometheusProxy.java [491:536]


    public JsonNode retrieveAgentDiskIO(String iPv4addr, String interval) {
        String params = String.format("agent_host_monitoring_diskIO{iPv4addr=\"%s\"}", iPv4addr);
        ArrayList<Long> timeStampsList = ProxyUtils.getTimeStampsList(ProxyUtils.processInternal(interval));
        JsonNode result = queryRange(
                params,
                timeStampsList.get(timeStampsList.size() - 1),
                timeStampsList.get(0),
                ProxyUtils.Number2Param(ProxyUtils.processInternal(interval)));
        ObjectMapper objectMapper = new ObjectMapper();
        if (result != null) {
            JsonNode agentDisksResult = result.get("data").get("result");
            if (agentDisksResult.isArray() && !agentDisksResult.isEmpty()) {
                ObjectNode agentDiskIOInfo = objectMapper.createObjectNode();
                // metric
                JsonNode agentDisksMetric = agentDisksResult.get(0).get("metric");
                agentDiskIOInfo
                        .put("hostname", agentDisksMetric.get("hostname").asText())
                        .put("iPv4addr", agentDisksMetric.get("iPv4addr").asText());

                // value
                long[] diskWrite = new long[6];
                long[] diskRead = new long[6];
                for (JsonNode disk : agentDisksResult) {
                    if (Objects.equals(disk.get("metric").get("diskIO").asText(), DISK_WRITE)) {
                        for (int i = 0; i < 6; i++) {
                            JsonNode listNode = disk.get("values");
                            if (listNode != null && listNode.isArray() && i < listNode.size())
                                diskWrite[i] += listNode.get(i).get(1).asLong();
                            else diskWrite[i] += 0L;
                        }
                    } else {
                        for (int i = 0; i < 6; i++) {
                            JsonNode listNode = disk.get("values");
                            if (listNode != null && listNode.isArray() && i < listNode.size())
                                diskRead[i] += listNode.get(i).get(1).asLong();
                            else diskRead[i] += 0L;
                        }
                    }
                }
                agentDiskIOInfo.set(DISK_WRITE, ProxyUtils.array2node(diskWrite));
                agentDiskIOInfo.set(DISK_READ, ProxyUtils.array2node(diskRead));
                return agentDiskIOInfo;
            }
        }
        return objectMapper.createObjectNode();
    }