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