diff --git a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
index 7e06ef78229..aa3717ce23e 100644
--- a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
+++ b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
@@ -151,7 +151,7 @@ public void detectMonitor(Monitor monitor, List params, String collector)
@Override
@Transactional(rollbackFor = Exception.class)
public void addMonitor(Monitor monitor, List params, String collector, GrafanaDashboard grafanaDashboard)
- throws RuntimeException {
+ throws RuntimeException {
// Apply for monitor id
long monitorId = SnowFlakeIdGenerator.generateId();
Map labels = monitor.getLabels();
@@ -167,12 +167,12 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
// Construct the collection task Job entity
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String app = isStatic ? monitor.getApp() : monitor.getScrape();
Job appDefine = appService.getAppDefine(app);
if (!isStatic) {
appDefine.setSd(true);
- monitor.setInstance("unknow");
+ monitor.setInstance("unknown");
}
if (CommonConstants.PROMETHEUS.equals(monitor.getApp())) {
appDefine.setApp(CommonConstants.PROMETHEUS_APP_PREFIX + monitor.getName());
@@ -185,19 +185,19 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
String instance = monitor.getInstance();
// The port field may be null
Param portParam = params.stream()
- .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
- .findFirst()
- .orElse(null);
+ .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
+ .findFirst()
+ .orElse(null);
String portWithMark = (Objects.isNull(portParam) || !StringUtils.hasText(portParam.getParamValue()))
- ? ""
- : SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ ? ""
+ : SignConstants.DOUBLE_MARK + portParam.getParamValue();
if (!IpDomainUtil.isHasPortWithMark(instance)) {
instance = instance + portWithMark;
}
monitor.setInstance(instance);
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, instance);
+ CommonConstants.LABEL_INSTANCE, instance);
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
@@ -207,7 +207,7 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
}).collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
long jobId = collector == null ? collectJobScheduling.addAsyncCollectJob(appDefine, null)
- : collectJobScheduling.addAsyncCollectJob(appDefine, collector);
+ : collectJobScheduling.addAsyncCollectJob(appDefine, collector);
try {
detectMonitor(monitor, params, collector);
} catch (Exception ignored) {
@@ -216,16 +216,16 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
try {
if (collector != null) {
CollectorMonitorBind collectorMonitorBind = CollectorMonitorBind.builder()
- .collector(collector)
- .monitorId(monitorId)
- .build();
+ .collector(collector)
+ .monitorId(monitorId)
+ .build();
collectorMonitorBindDao.save(collectorMonitorBind);
}
monitor.setId(monitorId);
monitor.setJobId(jobId);
// create grafana dashboard
if (monitor.getApp().equals(CommonConstants.PROMETHEUS) && grafanaDashboard != null
- && grafanaDashboard.isEnabled()) {
+ && grafanaDashboard.isEnabled()) {
dashboardService.createOrUpdateDashboard(grafanaDashboard.getTemplate(), monitorId);
}
monitorDao.save(monitor);
@@ -246,9 +246,9 @@ public void export(List ids, String type, HttpServletResponse res) throws
public void exportAll(String type, HttpServletResponse res) throws Exception {
// Get all monitor IDs from the database
List allMonitorIds = monitorDao.findAll()
- .stream()
- .map(Monitor::getId)
- .collect(Collectors.toList());
+ .stream()
+ .map(Monitor::getId)
+ .collect(Collectors.toList());
// Use the existing export method to export all monitors
export(allMonitorIds, type, res);
@@ -269,13 +269,13 @@ public void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgu
monitorInfo.setName(monitorInfo.getName().trim());
Monitor monitor = monitorInfo.toEntity();
Map paramMap = monitorDto.getParamInfos()
- .stream()
- .peek(param -> {
- param.setMonitorId(monitor.getId());
- String value = param.getParamValue() == null ? null : param.getParamValue().trim();
- param.setParamValue(value);
- })
- .collect(Collectors.toMap(MonitorParam::getField, param -> param));
+ .stream()
+ .peek(param -> {
+ param.setMonitorId(monitor.getId());
+ String value = param.getParamValue() == null ? null : param.getParamValue().trim();
+ param.setParamValue(value);
+ })
+ .collect(Collectors.toMap(MonitorParam::getField, param -> param));
// Check name uniqueness and can not equal app type
if (isModify != null) {
Optional defineOptional = appService.getAppDefineOption(monitor.getName());
@@ -307,7 +307,7 @@ public void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgu
List paramDefines = appService.getAppParamDefines(monitor.getApp());
if (!CollectionUtils.isEmpty(paramDefines)) {
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
for (ParamDefineInfo paramDefine : paramDefines) {
String field = paramDefine.getField();
MonitorParam param = paramMap.get(field);
@@ -339,16 +339,16 @@ private void checkJobFields(String app) {
for (Metrics.Field field : metrics.getFields()) {
if (JexlCheckerUtil.verifyKeywords(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField() + " prohibited keywords, please modify the template information.");
+ + field.getField() + " prohibited keywords, please modify the template information.");
}
if (JexlCheckerUtil.verifyStartCharacter(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField()
- + " illegal start character, please modify the template information.");
+ + field.getField()
+ + " illegal start character, please modify the template information.");
}
if (JexlCheckerUtil.verifySpaces(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField() + " no spaces allowed, please modify the template information.");
+ + field.getField() + " no spaces allowed, please modify the template information.");
}
}
}
@@ -358,7 +358,7 @@ private void checkJobFields(String app) {
@Override
@Transactional(rollbackFor = Exception.class)
public void modifyMonitor(Monitor monitor, List params, String collector, GrafanaDashboard grafanaDashboard)
- throws RuntimeException {
+ throws RuntimeException {
long monitorId = monitor.getId();
// Check to determine whether the monitor corresponding to the monitor id exists
Optional queryOption = monitorDao.findById(monitorId);
@@ -382,22 +382,28 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
labelDao.saveAll(addLabels);
}
+ boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
+ || !StringUtils.hasText(monitor.getScrape());
+ if (!isStatic && !StringUtils.hasText(monitor.getInstance())) {
+ monitor.setInstance("unknown");
+ }
+
String instance = monitor.getInstance();
// The port field may be null
Param portParam = params.stream()
- .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
- .findFirst()
- .orElse(null);
+ .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
+ .findFirst()
+ .orElse(null);
String portWithMark = (Objects.isNull(portParam) || !StringUtils.hasText(portParam.getParamValue()))
- ? ""
- : SignConstants.DOUBLE_MARK + portParam.getParamValue();
- if (Objects.nonNull(instance)) {
+ ? ""
+ : SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ if (Objects.nonNull(instance) && !IpDomainUtil.isHasPortWithMark(instance)) {
instance = instance + portWithMark;
}
+
+
monitor.setInstance(instance);
- boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
if (preMonitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE) {
// Construct the collection task Job entity
String app = isStatic ? monitor.getApp() : monitor.getScrape();
@@ -416,13 +422,13 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
appDefine.setScheduleType(monitor.getScheduleType());
appDefine.setCronExpression(monitor.getCronExpression());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
long newJobId;
if (collector == null) {
@@ -444,8 +450,8 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
collectorMonitorBindDao.deleteCollectorMonitorBindsByMonitorId(monitorId);
if (collector != null) {
CollectorMonitorBind collectorMonitorBind = CollectorMonitorBind.builder()
- .collector(collector).monitorId(monitorId)
- .build();
+ .collector(collector).monitorId(monitorId)
+ .build();
collectorMonitorBindDao.save(collectorMonitorBind);
}
// force update gmtUpdate time, due the case: monitor not change, param change.
@@ -482,7 +488,7 @@ public void deleteMonitors(Set ids) throws RuntimeException {
return;
}
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
Set allMonitorIds = new HashSet<>(ids);
allMonitorIds.addAll(subMonitorIds);
List monitors = monitorDao.findMonitorsByIdIn(allMonitorIds);
@@ -523,28 +529,28 @@ public MonitorDto getMonitorDto(long id) throws RuntimeException {
monitorDto.setParams(params);
List metricsInfos;
if (DispatchConstants.PROTOCOL_PROMETHEUS.equalsIgnoreCase(monitor.getApp())
- || monitor.getType() == CommonConstants.MONITOR_TYPE_PUSH_AUTO_CREATE) {
+ || monitor.getType() == CommonConstants.MONITOR_TYPE_PUSH_AUTO_CREATE) {
List metricsDataList = warehouseService.queryMonitorMetricsData(id);
metricsInfos = metricsDataList.stream()
- .map(t -> MetricsInfo.builder().name(t.getMetrics())
- .favorited(favoritedMetrics.contains(t.getMetrics())).build())
- .collect(Collectors.toList());
+ .map(t -> MetricsInfo.builder().name(t.getMetrics())
+ .favorited(favoritedMetrics.contains(t.getMetrics())).build())
+ .collect(Collectors.toList());
monitorDto.setGrafanaDashboard(dashboardService.getDashboardByMonitorId(id));
} else {
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String type = isStatic ? monitor.getApp() : monitor.getScrape();
Job job = appService.getAppDefine(type);
metricsInfos = job.getMetrics().stream()
- .filter(Metrics::isVisible)
- .map(t -> MetricsInfo.builder().name(t.getName())
- .favorited(favoritedMetrics.contains(t.getName())).build())
- .collect(Collectors.toList());
+ .filter(Metrics::isVisible)
+ .map(t -> MetricsInfo.builder().name(t.getName())
+ .favorited(favoritedMetrics.contains(t.getName())).build())
+ .collect(Collectors.toList());
}
monitorDto.setMetrics(metricsInfos);
monitorDto.setMonitor(monitor);
Optional bindOptional = collectorMonitorBindDao
- .findCollectorMonitorBindByMonitorId(monitor.getId());
+ .findCollectorMonitorBindByMonitorId(monitor.getId());
bindOptional.ifPresent(bind -> monitorDto.setCollector(bind.getCollector()));
return monitorDto;
} else {
@@ -554,7 +560,7 @@ public MonitorDto getMonitorDto(long id) throws RuntimeException {
@Override
public Page getMonitors(List monitorIds, String app, String search, Byte status, String sort,
- String order, int pageIndex, int pageSize, String labels) {
+ String order, int pageIndex, int pageSize, String labels) {
Specification specification = (root, query, criteriaBuilder) -> {
List andList = new ArrayList<>();
if (!CollectionUtils.isEmpty(monitorIds)) {
@@ -579,7 +585,7 @@ public Page getMonitors(List monitorIds, String app, String searc
if (StringUtils.hasText(search)) {
Predicate predicateHost = criteriaBuilder.like(root.get("instance"), "%" + search + "%");
Predicate predicateName = criteriaBuilder.like(criteriaBuilder.lower(root.get("name")),
- "%" + search.toLowerCase() + "%");
+ "%" + search.toLowerCase() + "%");
Long id = Longs.tryParse(search);
if (id != null) {
orList.add(criteriaBuilder.equal(root.get("id"), id));
@@ -633,12 +639,12 @@ public void cancelManageMonitors(Set ids) {
// The jobId is not deleted, and the jobId is reused again after the management
// is started.
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
ids.addAll(subMonitorIds);
List managedMonitors = monitorDao.findMonitorsByIdIn(ids)
- .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
- .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_PAUSED_CODE))
- .collect(Collectors.toList());
+ .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
+ .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_PAUSED_CODE))
+ .collect(Collectors.toList());
if (!CollectionUtils.isEmpty(managedMonitors)) {
for (Monitor monitor : managedMonitors) {
collectJobScheduling.cancelAsyncCollectJob(monitor.getJobId());
@@ -651,12 +657,12 @@ public void cancelManageMonitors(Set ids) {
public void enableManageMonitors(Set ids) {
// Update monitoring status Add corresponding monitoring periodic task
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
ids.addAll(subMonitorIds);
List unManagedMonitors = monitorDao.findMonitorsByIdIn(ids)
- .stream().filter(monitor -> monitor.getStatus() == CommonConstants.MONITOR_PAUSED_CODE)
- .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_UP_CODE))
- .collect(Collectors.toList());
+ .stream().filter(monitor -> monitor.getStatus() == CommonConstants.MONITOR_PAUSED_CODE)
+ .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_UP_CODE))
+ .collect(Collectors.toList());
if (unManagedMonitors.isEmpty()) {
return;
}
@@ -665,7 +671,7 @@ public void enableManageMonitors(Set ids) {
// Construct the collection task Job entity
List params = paramDao.findParamsByMonitorId(monitor.getId());
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String app = isStatic ? monitor.getApp() : monitor.getScrape();
Job appDefine = appService.getAppDefine(app);
if (!isStatic) {
@@ -681,20 +687,20 @@ public void enableManageMonitors(Set ids) {
appDefine.setScheduleType(monitor.getScheduleType());
appDefine.setCronExpression(monitor.getCronExpression());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
List paramDefaultValue = appDefine.getParams().stream()
- .filter(item -> StringUtils.hasText(item.getDefaultValue()))
- .toList();
+ .filter(item -> StringUtils.hasText(item.getDefaultValue()))
+ .toList();
paramDefaultValue.forEach(defaultVar -> {
if (configmaps.stream().noneMatch(item -> item.getKey().equals(defaultVar.getField()))) {
Configmap configmap = new Configmap(defaultVar.getField(), defaultVar.getDefaultValue(),
- CommonConstants.TYPE_STRING);
+ CommonConstants.TYPE_STRING);
configmaps.add(configmap);
}
});
@@ -702,7 +708,7 @@ public void enableManageMonitors(Set ids) {
// Issue collection tasks
Optional bindOptional = collectorMonitorBindDao
- .findCollectorMonitorBindByMonitorId(monitor.getId());
+ .findCollectorMonitorBindByMonitorId(monitor.getId());
String collector = bindOptional.map(CollectorMonitorBind::getCollector).orElse(null);
long newJobId = collectJobScheduling.addAsyncCollectJob(appDefine, collector);
monitor.setJobId(newJobId);
@@ -756,15 +762,15 @@ public List getAllAppMonitorsCount() {
@Override
public void updateAppCollectJob(Job job) {
List monitors = monitorDao.findMonitorsByAppEquals(job.getApp())
- .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
- .toList();
+ .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
+ .toList();
if (monitors.isEmpty()) {
return;
}
List monitorBinds = collectorMonitorBindDao.findCollectorMonitorBindsByMonitorIdIn(
- monitors.stream().map(Monitor::getId).collect(Collectors.toSet()));
+ monitors.stream().map(Monitor::getId).collect(Collectors.toSet()));
Map monitorIdCollectorMap = monitorBinds.stream().collect(
- Collectors.toMap(CollectorMonitorBind::getMonitorId, CollectorMonitorBind::getCollector));
+ Collectors.toMap(CollectorMonitorBind::getMonitorId, CollectorMonitorBind::getCollector));
for (Monitor monitor : monitors) {
try {
Job appDefine = job.clone();
@@ -781,20 +787,20 @@ public void updateAppCollectJob(Job job) {
appDefine.setCyclic(true);
appDefine.setTimestamp(System.currentTimeMillis());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List params = paramDao.findParamsByMonitorId(monitor.getId());
List configmaps = params.stream().map(param -> new Configmap(param.getField(),
- param.getParamValue(), param.getType())).collect(Collectors.toList());
+ param.getParamValue(), param.getType())).collect(Collectors.toList());
List paramDefaultValue = appDefine.getParams().stream()
- .filter(item -> StringUtils.hasText(item.getDefaultValue()))
- .toList();
+ .filter(item -> StringUtils.hasText(item.getDefaultValue()))
+ .toList();
paramDefaultValue.forEach(defaultVar -> {
if (configmaps.stream().noneMatch(item -> item.getKey().equals(defaultVar.getField()))) {
Configmap configmap = new Configmap(defaultVar.getField(), defaultVar.getDefaultValue(),
- (byte) 1);
+ (byte) 1);
configmaps.add(configmap);
}
});
@@ -878,8 +884,8 @@ private void detectSdMonitor(Monitor monitor, List params, String collect
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
appDefine.setSd(true);
List collectRep;
@@ -914,18 +920,18 @@ private void detectMonitorDirectly(Monitor monitor, List params, String c
appDefine.setCyclic(false);
appDefine.setTimestamp(System.currentTimeMillis());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
// To detect availability, you only need to collect the set of availability
// metrics with a priority of 0.
List availableMetrics = appDefine.getMetrics().stream()
- .filter(item -> item.getPriority() == 0).collect(Collectors.toList());
+ .filter(item -> item.getPriority() == 0).collect(Collectors.toList());
appDefine.setMetrics(availableMetrics);
List collectRep;
if (collector != null) {