From 963cd0b227fa52c4e08f2be37848e6b546bf731e Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Tue, 7 Oct 2025 16:06:00 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E4=BF=AE=E6=94=B9=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../visor/module/asset/api/HostAgentApi.java | 4 +- .../asset/api/impl/HostAgentApiImpl.java | 4 +- .../visor/module/asset/dao/HostDAO.java | 8 +-- .../impl/HostAgentEndpointServiceImpl.java | 18 +++--- .../controller/MonitorHostController.java | 16 ++---- .../request/host/MonitorHostQueryRequest.java | 2 +- .../host/MonitorHostQueryTagRequest.java} | 35 +++++++----- .../monitor/service/MonitorHostService.java | 16 ++---- .../impl/MonitorAgentEndpointServiceImpl.java | 7 --- .../service/impl/MonitorHostServiceImpl.java | 56 +++++++------------ .../src/api/monitor/monitor-host.ts | 23 +++++--- orion-visor-ui/src/types/chart.ts | 3 +- .../components/alarm-rule-form-drawer.vue | 15 +++-- .../compoments/metrics-chart.vue | 1 + .../monitor/monitor-detail/types/const.ts | 1 + 15 files changed, 97 insertions(+), 112 deletions(-) rename orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/{define/cache/MonitorHostCacheKeyDefine.java => entity/request/host/MonitorHostQueryTagRequest.java} (53%) diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-provider/src/main/java/org/dromara/visor/module/asset/api/HostAgentApi.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-provider/src/main/java/org/dromara/visor/module/asset/api/HostAgentApi.java index b9a3c15d..ac68616e 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-provider/src/main/java/org/dromara/visor/module/asset/api/HostAgentApi.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-provider/src/main/java/org/dromara/visor/module/asset/api/HostAgentApi.java @@ -48,10 +48,10 @@ public interface HostAgentApi { /** * 获取缓存名称 * - * @param agentKeyList agentKeyList + * @param agentKeys agentKeys * @return nameMap */ - Map getNameCacheByAgentKey(List agentKeyList); + Map getNameCacheByAgentKey(List agentKeys); /** * 获取缓存名称 diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/api/impl/HostAgentApiImpl.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/api/impl/HostAgentApiImpl.java index d9831604..57074e0c 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/api/impl/HostAgentApiImpl.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/api/impl/HostAgentApiImpl.java @@ -103,11 +103,11 @@ public class HostAgentApiImpl implements HostAgentApi { } @Override - public Map getNameCacheByAgentKey(List agentKeyList) { + public Map getNameCacheByAgentKey(List agentKeys) { Map result = new HashMap<>(); List queryList = new ArrayList<>(); // 查询缓存 - for (String agentKey : agentKeyList) { + for (String agentKey : agentKeys) { HostBaseDTO host = AGENT_HOST_CACHE.get(agentKey); if (host != null) { result.put(agentKey, host.getName()); diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java index 80842317..ef1c87ef 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/dao/HostDAO.java @@ -92,14 +92,14 @@ public interface HostDAO extends IMapper { /** * 更新探针信息 * - * @param keys agentKeyList - * @param update update + * @param agentKeys agentKeys + * @param update update * @return effect */ - default int updateByAgentKeys(List keys, HostDO update) { + default int updateByAgentKeys(List agentKeys, HostDO update) { update.setUpdateTime(new Date()); // 更新 - return this.update(update, Conditions.in(HostDO::getAgentKey, keys)); + return this.update(update, Conditions.in(HostDO::getAgentKey, agentKeys)); } } diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentEndpointServiceImpl.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentEndpointServiceImpl.java index 9cfc2f36..00307521 100644 --- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentEndpointServiceImpl.java +++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/service/impl/HostAgentEndpointServiceImpl.java @@ -212,25 +212,25 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService { /** * 标记在线状态 * - * @param agentKeyList agentKeyList - * @param status status + * @param agentKeys agentKeys + * @param status status */ - private void markOnlineStatus(List agentKeyList, AgentOnlineStatusEnum status) { - if (Lists.isEmpty(agentKeyList)) { + private void markOnlineStatus(List agentKeys, AgentOnlineStatusEnum status) { + if (Lists.isEmpty(agentKeys)) { return; } - log.info("HostAgentEndpointService mark {}. count: {}, keys: {}", status, agentKeyList.size(), agentKeyList); + log.info("HostAgentEndpointService mark {}. count: {}, keys: {}", status, agentKeys.size(), agentKeys); // 更新数据 HostDO update = HostDO.builder() .agentOnlineStatus(status.getValue()) .agentOnlineChangeTime(new Date()) .build(); - int effect = hostDAO.updateByAgentKeys(agentKeyList, update); + int effect = hostDAO.updateByAgentKeys(agentKeys, update); // 更新缓存 - agentKeyList.forEach(s -> ONLINE_STATUS_CACHE.put(s, status.getValue())); + agentKeys.forEach(s -> ONLINE_STATUS_CACHE.put(s, status.getValue())); log.info("HostAgentEndpointService mark {}. effect: {}", status, effect); // 插入日志 - List logList = hostDAO.selectIdByAgentKeys(agentKeyList) + List logList = hostDAO.selectIdByAgentKeys(agentKeys) .stream() .map(s -> { HostAgentLogDO agentLog = HostAgentLogDO.builder() @@ -250,7 +250,7 @@ public class HostAgentEndpointServiceImpl implements HostAgentEndpointService { } // 发送已下线事件 if (AgentOnlineStatusEnum.OFFLINE.equals(status)) { - SpringHolder.publishEvent(new AgentOfflineEvent(agentKeyList)); + SpringHolder.publishEvent(new AgentOfflineEvent(agentKeys)); } } diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/controller/MonitorHostController.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/controller/MonitorHostController.java index dbbf3dd4..bc976a8c 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/controller/MonitorHostController.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/controller/MonitorHostController.java @@ -38,10 +38,7 @@ import org.dromara.visor.framework.web.core.annotation.RestWrapper; import org.dromara.visor.module.monitor.define.operator.MonitorHostOperatorType; import org.dromara.visor.module.monitor.engine.MonitorContext; import org.dromara.visor.module.monitor.entity.dto.AgentMetricsDataDTO; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostChartRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostQueryRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostSwitchUpdateRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostUpdateRequest; +import org.dromara.visor.module.monitor.entity.request.host.*; import org.dromara.visor.module.monitor.entity.vo.MonitorHostMetricsDataVO; import org.dromara.visor.module.monitor.entity.vo.MonitorHostVO; import org.dromara.visor.module.monitor.service.MonitorHostService; @@ -95,7 +92,7 @@ public class MonitorHostController { @Operation(summary = "查询监控指标") @PreAuthorize("@ss.hasPermission('monitor:monitor-host:query')") public List getMonitorHostMetrics(@Validated(Key.class) @RequestBody MonitorHostQueryRequest request) { - return monitorHostService.getMonitorHostMetrics(request.getAgentKeyList()); + return monitorHostService.getMonitorHostMetrics(request.getAgentKeys()); } @IgnoreLog(IgnoreLogMode.RET) @@ -107,14 +104,11 @@ public class MonitorHostController { } @IgnoreLog(IgnoreLogMode.RET) - @GetMapping("/host-tags") + @PostMapping("/host-tags") @Operation(summary = "查询监控告警标签") - @Parameter(name = "policyId", description = "policyId", required = true) - @Parameter(name = "measurement", description = "measurement") @PreAuthorize("@ss.hasPermission('monitor:monitor-host:query')") - public List getMonitorHostPolicyRuleTags(@RequestParam("policyId") Long policyId, - @RequestParam(value = "measurement", required = false) String measurement) { - return monitorHostService.getMonitorHostPolicyRuleTags(policyId, measurement); + public List getMonitorHostTags(@RequestBody MonitorHostQueryTagRequest request) { + return monitorHostService.getMonitorHostTags(request); } @DemoDisableApi diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryRequest.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryRequest.java index d920e405..ed2d6606 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryRequest.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryRequest.java @@ -46,7 +46,7 @@ public class MonitorHostQueryRequest extends BaseQueryRequest { @NotEmpty(groups = Key.class) @Schema(description = "agentKey") - private List agentKeyList; + private List agentKeys; @Schema(description = "搜索") private String searchValue; diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/define/cache/MonitorHostCacheKeyDefine.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryTagRequest.java similarity index 53% rename from orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/define/cache/MonitorHostCacheKeyDefine.java rename to orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryTagRequest.java index fba07e68..436bb0e0 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/define/cache/MonitorHostCacheKeyDefine.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/entity/request/host/MonitorHostQueryTagRequest.java @@ -20,29 +20,34 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.dromara.visor.module.monitor.define.cache; +package org.dromara.visor.module.monitor.entity.request.host; -import cn.orionsec.kit.lang.define.cache.key.CacheKeyBuilder; -import cn.orionsec.kit.lang.define.cache.key.CacheKeyDefine; -import cn.orionsec.kit.lang.define.cache.key.struct.RedisCacheStruct; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.visor.common.entity.BaseQueryRequest; -import java.util.concurrent.TimeUnit; +import java.util.List; /** - * 监控主机缓存 key + * 监控主机标签 查询请求对象 * * @author Jiahang Li * @version 1.0.0 - * @since 2025-9-14 00:12 + * @since 2025-8-14 16:27 */ -public interface MonitorHostCacheKeyDefine { +@Data +@EqualsAndHashCode(callSuper = true) +@Schema(name = "MonitorHostQueryTagRequest", description = "监控主机标签 查询请求对象") +public class MonitorHostQueryTagRequest extends BaseQueryRequest { - CacheKeyDefine MONITOR_HOST_POLICY_HOST_TAGS = new CacheKeyBuilder() - .key("monitor:host:policy:host-tags:{}") - .desc("告警规则沉默标志 ${policyId}") - .type(String.class) - .struct(RedisCacheStruct.HASH) - .timeout(8, TimeUnit.HOURS) - .build(); + @Schema(description = "数据集") + private String measurement; + + @Schema(description = "策略id") + private Long policyId; + + @Schema(description = "agentKey") + private List agentKeys; } diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/MonitorHostService.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/MonitorHostService.java index 5f806168..61238697 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/MonitorHostService.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/MonitorHostService.java @@ -24,10 +24,7 @@ package org.dromara.visor.module.monitor.service; import cn.orionsec.kit.lang.define.wrapper.DataGrid; import org.dromara.visor.common.entity.chart.TimeChartSeries; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostChartRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostQueryRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostSwitchUpdateRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostUpdateRequest; +import org.dromara.visor.module.monitor.entity.request.host.*; import org.dromara.visor.module.monitor.entity.vo.MonitorHostMetricsDataVO; import org.dromara.visor.module.monitor.entity.vo.MonitorHostVO; @@ -53,10 +50,10 @@ public interface MonitorHostService { /** * 获取监控主机指标数据 * - * @param agentKeyList agentKeyList + * @param agentKeys agentKeys * @return metrics */ - List getMonitorHostMetrics(List agentKeyList); + List getMonitorHostMetrics(List agentKeys); /** * 获取监控主机图表数据 @@ -67,13 +64,12 @@ public interface MonitorHostService { List getMonitorHostChart(MonitorHostChartRequest request); /** - * 查询监控告警规则主机标签 + * 查询监控告警标签 * - * @param policyId policyId - * @param measurement measurement + * @param request request * @return tags */ - List getMonitorHostPolicyRuleTags(Long policyId, String measurement); + List getMonitorHostTags(MonitorHostQueryTagRequest request); /** * 更新监控主机 diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorAgentEndpointServiceImpl.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorAgentEndpointServiceImpl.java index 93b8c75d..a3777cac 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorAgentEndpointServiceImpl.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorAgentEndpointServiceImpl.java @@ -35,12 +35,10 @@ import org.dromara.visor.common.constant.ErrorMessage; import org.dromara.visor.common.utils.Assert; import org.dromara.visor.common.utils.LockerUtils; import org.dromara.visor.framework.influxdb.core.utils.InfluxdbUtils; -import org.dromara.visor.framework.redis.core.utils.RedisMaps; import org.dromara.visor.module.asset.api.HostApi; import org.dromara.visor.module.asset.entity.dto.host.HostDTO; import org.dromara.visor.module.infra.api.SystemUserApi; import org.dromara.visor.module.monitor.dao.MonitorHostDAO; -import org.dromara.visor.module.monitor.define.cache.MonitorHostCacheKeyDefine; import org.dromara.visor.module.monitor.engine.AlarmEngine; import org.dromara.visor.module.monitor.engine.MonitorContext; import org.dromara.visor.module.monitor.entity.domain.MonitorHostDO; @@ -148,11 +146,6 @@ public class MonitorAgentEndpointServiceImpl implements MonitorAgentEndpointServ update.setMonitorConfig(JSON.toJSONString(newConfig)); } monitorHostDAO.updateById(update); - // 删除元数据缓存 - Long policyId = monitorHost.getPolicyId(); - if (policyId != null) { - RedisMaps.delete(MonitorHostCacheKeyDefine.MONITOR_HOST_POLICY_HOST_TAGS.format(policyId)); - } } // 重新加载监控主机上下文 if (newConfig != null) { diff --git a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorHostServiceImpl.java b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorHostServiceImpl.java index f3183c35..5d343e43 100644 --- a/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorHostServiceImpl.java +++ b/orion-visor-modules/orion-visor-module-monitor/orion-visor-module-monitor-service/src/main/java/org/dromara/visor/module/monitor/service/impl/MonitorHostServiceImpl.java @@ -40,7 +40,6 @@ import org.dromara.visor.framework.biz.operator.log.core.utils.OperatorLogs; import org.dromara.visor.framework.influxdb.core.query.FluxQueryBuilder; import org.dromara.visor.framework.influxdb.core.utils.InfluxdbUtils; import org.dromara.visor.framework.mybatis.core.query.Conditions; -import org.dromara.visor.framework.redis.core.utils.RedisMaps; import org.dromara.visor.module.asset.api.HostAgentApi; import org.dromara.visor.module.asset.api.HostApi; import org.dromara.visor.module.asset.entity.dto.host.HostAgentLogDTO; @@ -52,15 +51,11 @@ import org.dromara.visor.module.monitor.constant.MetricsConst; import org.dromara.visor.module.monitor.convert.MonitorHostConvert; import org.dromara.visor.module.monitor.dao.AlarmPolicyDAO; import org.dromara.visor.module.monitor.dao.MonitorHostDAO; -import org.dromara.visor.module.monitor.define.cache.MonitorHostCacheKeyDefine; import org.dromara.visor.module.monitor.engine.MonitorContext; import org.dromara.visor.module.monitor.entity.domain.AlarmPolicyDO; import org.dromara.visor.module.monitor.entity.domain.MonitorHostDO; import org.dromara.visor.module.monitor.entity.dto.*; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostChartRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostQueryRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostSwitchUpdateRequest; -import org.dromara.visor.module.monitor.entity.request.host.MonitorHostUpdateRequest; +import org.dromara.visor.module.monitor.entity.request.host.*; import org.dromara.visor.module.monitor.entity.vo.MonitorHostMetricsDataVO; import org.dromara.visor.module.monitor.entity.vo.MonitorHostVO; import org.dromara.visor.module.monitor.enums.AlarmSwitchEnum; @@ -76,7 +71,6 @@ import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 监控主机 服务实现类 @@ -191,8 +185,8 @@ public class MonitorHostServiceImpl implements MonitorHostService { } @Override - public List getMonitorHostMetrics(List agentKeyList) { - return agentKeyList.stream() + public List getMonitorHostMetrics(List agentKeys) { + return agentKeys.stream() .map(s -> this.getHostMetricsData(s, null)) .collect(Collectors.toList()); } @@ -239,25 +233,11 @@ public class MonitorHostServiceImpl implements MonitorHostService { } @Override - public List getMonitorHostPolicyRuleTags(Long policyId, String measurement) { - MeasurementEnum measurementEnum = MeasurementEnum.of(measurement); + public List getMonitorHostTags(MonitorHostQueryTagRequest request) { + MeasurementEnum measurementEnum = MeasurementEnum.of(request.getMeasurement()); if (measurementEnum == null) { return Collections.emptyList(); } - // 查询缓存 - String cacheKey = MonitorHostCacheKeyDefine.MONITOR_HOST_POLICY_HOST_TAGS.format(policyId); - String value = RedisMaps.get(cacheKey, measurement); - if (!Strings.isBlank(value)) { - return JSON.parseArray(value, String.class); - } - // 查询规则下的全部主机 - List metas = monitorHostDAO.selectByPolicyId(policyId) - .stream() - .map(MonitorHostDO::getMonitorMeta) - .filter(Objects::nonNull) - .map(s -> JSON.parseObject(s, MonitorHostMetaDTO.class)) - .filter(Objects::nonNull) - .collect(Collectors.toList()); // 映射数据 Function> tagsGetter; if (MeasurementEnum.CPU.equals(measurementEnum)) { @@ -269,15 +249,25 @@ public class MonitorHostServiceImpl implements MonitorHostService { } else { return Collections.emptyList(); } - List tags = metas.stream() + // 查询监控主机元数据 + List metas = monitorHostDAO.of() + .createValidateWrapper() + .eq(MonitorHostDO::getPolicyId, request.getPolicyId()) + .in(MonitorHostDO::getAgentKey, request.getAgentKeys()) + .then() + .stream() + .map(MonitorHostDO::getMonitorMeta) + .filter(Objects::nonNull) + .map(s -> JSON.parseObject(s, MonitorHostMetaDTO.class)) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + // 获取 tag + return metas.stream() .map(tagsGetter) .flatMap(Collection::stream) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); - // 设置缓存 - RedisMaps.putJson(cacheKey, MonitorHostCacheKeyDefine.MONITOR_HOST_POLICY_HOST_TAGS, measurement, tags); - return tags; } @Override @@ -317,14 +307,6 @@ public class MonitorHostServiceImpl implements MonitorHostService { if (policyId == null) { monitorHostDAO.setPolicyIdWithNullById(id); } - // 删除元数据缓存 - List tagsCacheKeyList = Stream.of(policyId, monitorHost.getPolicyId()) - .filter(Objects::nonNull) - .map(MonitorHostCacheKeyDefine.MONITOR_HOST_POLICY_HOST_TAGS::format) - .collect(Collectors.toList()); - if (!tagsCacheKeyList.isEmpty()) { - RedisMaps.delete(tagsCacheKeyList); - } // 重新加载监控主机上下文 monitorContext.reloadMonitorHost(host.getAgentKey()); log.info("MonitorHostService-updateMonitorHostById effect: {}", effect); diff --git a/orion-visor-ui/src/api/monitor/monitor-host.ts b/orion-visor-ui/src/api/monitor/monitor-host.ts index 3d6b86aa..029fa511 100644 --- a/orion-visor-ui/src/api/monitor/monitor-host.ts +++ b/orion-visor-ui/src/api/monitor/monitor-host.ts @@ -28,7 +28,7 @@ export interface MonitorHostSwitchUpdateRequest { * 监控主机查询请求 */ export interface MonitorHostQueryRequest extends Pagination { - agentKeyList?: Array; + agentKeys?: Array; searchValue?: string; alarmSwitch?: number; policyId?: number; @@ -43,6 +43,15 @@ export interface MonitorHostQueryRequest extends Pagination { tags?: Array; } +/** + * 监控主机标签查询请求 + */ +export interface MonitorHostQueryTagRequest { + measurement?: string; + policyId?: number; + agentKeys?: Array; +} + /** * 监控主机图表查询请求 */ @@ -147,12 +156,12 @@ export interface MonitorHostMetricsData { /** * 查询监控主机指标 */ -export function getMonitorHostMetrics(agentKeyList: Array) { +export function getMonitorHostMetrics(agentKeys: Array) { return axios.post>('/monitor/monitor-host/metrics', { - agentKeyList + agentKeys }, { promptBizErrorMessage: false, - promptRequestErrorMessage: false, + promptRequestErrorMessage: false }); } @@ -178,10 +187,10 @@ export function getMonitorHostPage(request: MonitorHostQueryRequest) { } /** - * 查询监控告警标签 + * 查询监控主机标签 */ -export function getMonitorHostPolicyRuleTags(policyId: number, measurement: string = '') { - return axios.get>('/monitor/monitor-host/host-tags', { params: { policyId, measurement } }); +export function getMonitorHostTags(request: MonitorHostQueryTagRequest) { + return axios.post>('/monitor/monitor-host/host-tags', request); } /** diff --git a/orion-visor-ui/src/types/chart.ts b/orion-visor-ui/src/types/chart.ts index b9a8e3be..9f04203d 100644 --- a/orion-visor-ui/src/types/chart.ts +++ b/orion-visor-ui/src/types/chart.ts @@ -17,6 +17,7 @@ export interface TimeSeriesColor { export interface TimeSeriesOption { name: string; type: TimeSeriesType; + smooth: boolean; area: boolean; lineColor: string; itemBorderColor: string; @@ -126,7 +127,7 @@ export const createTimeSeries = (option: Partial): LineSeriesO name: option.name, data: option.data || [], type: option.type || 'line', - smooth: true, + smooth: option.smooth ?? true, symbol: 'circle', symbolSize: 10, itemStyle: { diff --git a/orion-visor-ui/src/views/monitor/alarm-rule/components/alarm-rule-form-drawer.vue b/orion-visor-ui/src/views/monitor/alarm-rule/components/alarm-rule-form-drawer.vue index e10d983f..28322f78 100644 --- a/orion-visor-ui/src/views/monitor/alarm-rule/components/alarm-rule-form-drawer.vue +++ b/orion-visor-ui/src/views/monitor/alarm-rule/components/alarm-rule-form-drawer.vue @@ -45,7 +45,7 @@ class="tag-values" style="width: 260px" :max-tag-count="2" - :options="[measurement] || []" + :options="measurementTags[measurement] || []" placeholder="输入或选择标签值" multiple allow-create> @@ -207,7 +207,7 @@ import { createAlarmRule, updateAlarmRule } from '@/api/monitor/alarm-rule'; import { Message } from '@arco-design/web-vue'; import { useDictStore, useCacheStore } from '@/store'; - import { getMonitorHostPolicyRuleTags } from '@/api/monitor/monitor-host'; + import { getMonitorHostTags } from '@/api/monitor/monitor-host'; import MonitorMetricsSelector from '@/components/monitor/metrics/selector/index.vue'; const emits = defineEmits(['added', 'updated']); @@ -224,7 +224,7 @@ const tags = ref>([]); const hasTags = ref(false); const measurement = ref(''); - const = ref>({}); + const measurementTags = ref>({}); const defaultForm = (): AlarmRuleUpdateRequest => { return { @@ -330,13 +330,16 @@ // 加载全部标签 const loadTags = () => { - const tags = .value[measurement.value]; + const tags = measurementTags.value[measurement.value]; if (tags) { return; } // 加载标签 - getMonitorHostPolicyRuleTags(formModel.value.policyId as number, measurement.value).then(({ data }) => { - .value[measurement.value as any] = data; + getMonitorHostTags({ + measurement: measurement.value, + policyId: formModel.value.policyId, + }).then(({ data }) => { + measurementTags.value[measurement.value as any] = data; }); }; diff --git a/orion-visor-ui/src/views/monitor/monitor-detail/compoments/metrics-chart.vue b/orion-visor-ui/src/views/monitor/monitor-detail/compoments/metrics-chart.vue index 6927ccc6..34c201cb 100644 --- a/orion-visor-ui/src/views/monitor/monitor-detail/compoments/metrics-chart.vue +++ b/orion-visor-ui/src/views/monitor/monitor-detail/compoments/metrics-chart.vue @@ -189,6 +189,7 @@ return createTimeSeries({ name: s.name, type: props.option.type, + smooth: props.option.smooth, area: props.option.background, lineColor: colors?.[0], itemBorderColor: colors?.[1], diff --git a/orion-visor-ui/src/views/monitor/monitor-detail/types/const.ts b/orion-visor-ui/src/views/monitor/monitor-detail/types/const.ts index 2a2a68c5..591e5c62 100644 --- a/orion-visor-ui/src/views/monitor/monitor-detail/types/const.ts +++ b/orion-visor-ui/src/views/monitor/monitor-detail/types/const.ts @@ -19,6 +19,7 @@ export interface MetricsChartOption { span?: number; legend?: boolean; background?: boolean; + smooth?: boolean; colors: Array<[string, string]>; aggregate: string; unit: MetricUnitType;