in hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/AppServiceImpl.java [290:356]
private void queryAppHierarchy(String lang, LinkedList<Hierarchy> hierarchies, Job job) {
var hierarchyApp = new Hierarchy();
hierarchyApp.setCategory(job.getCategory());
hierarchyApp.setValue(job.getApp());
hierarchyApp.setHide(job.isHide());
var nameMap = job.getName();
if (nameMap != null && !nameMap.isEmpty()) {
var i18nName = CommonUtil.getLangMappingValueFromI18nMap(lang, nameMap);
if (i18nName != null) {
hierarchyApp.setLabel(i18nName);
}
}
List<Hierarchy> hierarchyMetricList = new LinkedList<>();
if (DispatchConstants.PROTOCOL_PROMETHEUS.equalsIgnoreCase(job.getApp())) {
List<Monitor> monitors = monitorDao.findMonitorsByAppEquals(job.getApp());
for (Monitor monitor : monitors) {
List<CollectRep.MetricsData> metricsDataList = warehouseService.queryMonitorMetricsData(monitor.getId());
for (CollectRep.MetricsData metricsData : metricsDataList) {
var hierarchyMetric = new Hierarchy();
hierarchyMetric.setValue(metricsData.getMetrics());
hierarchyMetric.setLabel(metricsData.getMetrics());
List<Hierarchy> hierarchyFieldList = metricsData.getFields().stream()
.map(item -> {
var hierarchyField = new Hierarchy();
hierarchyField.setValue(item.getName());
hierarchyField.setLabel(item.getName());
hierarchyField.setIsLeaf(true);
hierarchyField.setType((byte) item.getType());
hierarchyField.setUnit(item.getUnit());
return hierarchyField;
}).collect(Collectors.toList());
hierarchyMetric.setChildren(hierarchyFieldList);
// combine Hierarchy Metrics
combineHierarchyMetrics(hierarchyMetricList, hierarchyMetric);
}
}
hierarchyApp.setChildren(hierarchyMetricList);
hierarchies.addFirst(hierarchyApp);
} else {
if (job.getMetrics() != null) {
for (var metrics : job.getMetrics()) {
var hierarchyMetric = new Hierarchy();
hierarchyMetric.setValue(metrics.getName());
var metricsI18nName = CommonUtil.getLangMappingValueFromI18nMap(lang, metrics.getI18n());
hierarchyMetric.setLabel(metricsI18nName != null ? metricsI18nName : metrics.getName());
List<Hierarchy> hierarchyFieldList = new LinkedList<>();
if (metrics.getFields() != null) {
for (var field : metrics.getFields()) {
var hierarchyField = new Hierarchy();
hierarchyField.setValue(field.getField());
var metricI18nName = CommonUtil.getLangMappingValueFromI18nMap(lang, field.getI18n());
hierarchyField.setLabel(metricI18nName != null ? metricI18nName : field.getField());
hierarchyField.setIsLeaf(true);
// for metric
hierarchyField.setType(field.getType());
hierarchyField.setUnit(field.getUnit());
hierarchyFieldList.add(hierarchyField);
}
hierarchyMetric.setChildren(hierarchyFieldList);
}
hierarchyMetricList.add(hierarchyMetric);
}
}
hierarchyApp.setChildren(hierarchyMetricList);
hierarchies.add(hierarchyApp);
}
}