diff --git a/server/home/home-boot/src/main/java/io/holoinsight/server/home/bootstrap/HoloinsightHomeConfiguration.java b/server/home/home-boot/src/main/java/io/holoinsight/server/home/bootstrap/HoloinsightHomeConfiguration.java index 55ba25212..d062d6e75 100644 --- a/server/home/home-boot/src/main/java/io/holoinsight/server/home/bootstrap/HoloinsightHomeConfiguration.java +++ b/server/home/home-boot/src/main/java/io/holoinsight/server/home/bootstrap/HoloinsightHomeConfiguration.java @@ -23,6 +23,8 @@ import io.holoinsight.server.home.biz.service.EnvironmentService; import io.holoinsight.server.home.biz.service.TenantInitService; import io.holoinsight.server.home.biz.service.UserinfoVerificationService; +import io.holoinsight.server.home.biz.service.impl.AlarmHistoryServiceImpl; +import io.holoinsight.server.home.biz.service.impl.AlertRuleServiceImpl; import io.holoinsight.server.home.biz.service.impl.DefaultEnvironmentServiceImpl; import io.holoinsight.server.home.biz.service.impl.DefaultTenantInitServiceImpl; import io.holoinsight.server.home.biz.service.impl.UserinfoVerificationServiceImpl; @@ -110,6 +112,11 @@ public ProductCtlService productCtlService() { return new ProductCtlServiceImpl(); } + @Bean + public AlertRuleServiceImpl alertRuleService() { + return new AlertRuleServiceImpl(); + } + @Bean public ParameterSecurityService alertSecurityService() { return new ParameterSecurityServiceImpl(); diff --git a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapter.java b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapter.java index 3a06f38a6..14ef09a56 100644 --- a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapter.java +++ b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapter.java @@ -18,6 +18,8 @@ public interface RequestContextAdapter { void queryWrapperTenantAdapt(QueryWrapper queryWrapper, String tenant, String workspace); + void tenantAdapt(String tenant, String workspace); + void queryWrapperTenantAdapt(QueryWrapper queryWrapper, String tenant); void queryWrapperWorkspaceAdapt(QueryWrapper queryWrapper, String workspace); diff --git a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapterImpl.java b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapterImpl.java index ffdcf57ee..78241a594 100644 --- a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapterImpl.java +++ b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/RequestContextAdapterImpl.java @@ -37,6 +37,11 @@ public void queryWrapperTenantAdapt(QueryWrapper queryWrapper, String ten } } + @Override + public void tenantAdapt(String tenant, String workspace) { + + } + @Override public void queryWrapperTenantAdapt(QueryWrapper queryWrapper, String tenant) { if (queryWrapper != null && StringUtils.isNotBlank(tenant)) { diff --git a/server/home/home-dal/src/main/java/io/holoinsight/server/home/dal/model/dto/conf/CollectMetric.java b/server/home/home-dal/src/main/java/io/holoinsight/server/home/dal/model/dto/conf/CollectMetric.java index e147ebfc3..af95876ab 100644 --- a/server/home/home-dal/src/main/java/io/holoinsight/server/home/dal/model/dto/conf/CollectMetric.java +++ b/server/home/home-dal/src/main/java/io/holoinsight/server/home/dal/model/dto/conf/CollectMetric.java @@ -3,7 +3,11 @@ */ package io.holoinsight.server.home.dal.model.dto.conf; +import io.holoinsight.server.agg.v1.core.conf.FillZero; +import io.holoinsight.server.agg.v1.core.conf.JoinMeta; +import io.holoinsight.server.agg.v1.core.conf.OutputItem.Topn; import lombok.Data; +import lombok.EqualsAndHashCode; import org.springframework.util.CollectionUtils; import java.io.Serializable; @@ -44,13 +48,18 @@ public class CollectMetric implements Serializable { public List tags; + public List refTags; + + public List metrics; + /****************************** 后置过滤 ******************************/ /** * after filters */ public List afterFilters; + /****************************** 日志采样 ******************************/ public Boolean logSample; public List logSampleRules; @@ -60,13 +69,11 @@ public class CollectMetric implements Serializable { // Logs that exceed 4096 are truncated public Integer sampleMaxLength = 4096; + /****************************** 预计算 ******************************/ // pre calculate, 是否开启预计算 public Boolean calculate; - /** - * agg 预聚合指标表名称,非前端传入,是后端自动生成 - */ - public String aggTableName; + public LogCalculate logCalculate; // 单机明细数据是否存储 public Boolean notStorage; @@ -112,6 +119,33 @@ public static class LogSampleRule implements Serializable { } + @Data + public static class LogCalculate { + + /** + * agg 预聚合指标表名称,非前端传入,是后端自动生成 + */ + public String aggTableName; + + public FillZero fillZero; + + /** + * topN 指标计算 + */ + public Topn topn; + + // join 元数据 + public Boolean joinMeta; + public JoinMetaConfig joinMetaConfig; + + } + + @EqualsAndHashCode(callSuper = true) + @Data + public static class JoinMetaConfig extends JoinMeta { + + } + public boolean checkLogPattern() { if (!CollectionUtils.isEmpty(metrics)) { for (Metric metric : metrics) { diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/AggTaskUtil.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/AggTaskUtil.java index 7fd3d04df..b37415679 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/AggTaskUtil.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/AggTaskUtil.java @@ -7,6 +7,7 @@ import io.holoinsight.server.agg.v1.core.conf.AggFunc; import io.holoinsight.server.agg.v1.core.conf.CompletenessConfig; import io.holoinsight.server.agg.v1.core.conf.CompletenessConfig.Mode; +import io.holoinsight.server.agg.v1.core.conf.FillZero; import io.holoinsight.server.agg.v1.core.conf.From; import io.holoinsight.server.agg.v1.core.conf.FromConfigs; import io.holoinsight.server.agg.v1.core.conf.FromMetrics; @@ -145,7 +146,7 @@ public static Output buildOutput(CollectMetric collectMetric) { OutputItem outputItem = new OutputItem(); outputItem.setType(OUTPUT_STORAGE_ENGINE); - outputItem.setName(collectMetric.getAggTableName()); + outputItem.setName(collectMetric.getLogCalculate().getAggTableName()); List fields = new ArrayList<>(); OutputField outputField = new OutputField(); @@ -154,6 +155,11 @@ public static Output buildOutput(CollectMetric collectMetric) { fields.add(outputField); outputItem.setFields(fields); + if (null != collectMetric.getLogCalculate().getTopn() + && collectMetric.getLogCalculate().getTopn().isEnabled()) { + outputItem.setTopn(collectMetric.getLogCalculate().getTopn()); + } + List items = new ArrayList<>(); items.add(outputItem); @@ -164,4 +170,12 @@ public static Output buildOutput(CollectMetric collectMetric) { public static List buildPartition(CollectMetric collectMetric) { return new ArrayList<>(); } + + public static FillZero buildFillZero(CollectMetric collectMetric) { + if (null != collectMetric.getLogCalculate().getFillZero() + && collectMetric.getLogCalculate().getFillZero().isEnabled()) { + return collectMetric.getLogCalculate().getFillZero(); + } + return new FillZero(); + } } diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/GaeaSqlTaskUtil.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/GaeaSqlTaskUtil.java index a15173131..6b3f606b2 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/GaeaSqlTaskUtil.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/common/GaeaSqlTaskUtil.java @@ -13,6 +13,7 @@ import io.holoinsight.server.home.dal.model.dto.conf.Translate.TranslateTransform; import io.holoinsight.server.registry.model.Elect; import io.holoinsight.server.registry.model.Elect.RefIndex; +import io.holoinsight.server.registry.model.Elect.RefMeta; import io.holoinsight.server.registry.model.Elect.RefName; import io.holoinsight.server.registry.model.Elect.TransFormFilter; import io.holoinsight.server.registry.model.Elect.TransFormFilterAppend; @@ -665,76 +666,97 @@ public static GroupBy buildGroupBy(LogParse logParse, ExtraConfig extraConfig, return buildLogPatternParse(logParse, extraConfig); } List tags = collectMetric.getTags(); + List refTags = collectMetric.getRefTags(); GroupBy groupBy = new GroupBy(); groupBy.setGroups(new ArrayList<>()); - if (CollectionUtils.isEmpty(tags)) { + if (CollectionUtils.isEmpty(tags) && CollectionUtils.isEmpty(refTags)) { return groupBy; } - tags.forEach(t -> { + if (!CollectionUtils.isEmpty(tags)) { + tags.forEach(t -> { - SplitCol dim = splitColMap.get(dimColType).get(t); - if (null == dim) { - return; - } - Rule rule = dim.rule; + SplitCol dim = splitColMap.get(dimColType).get(t); + if (null == dim) { + return; + } + Rule rule = dim.rule; - Elect elect = new Elect(); + Elect elect = new Elect(); - switch (logParse.splitType) { - case leftRight: - Elect.LeftRight leftRight = new Elect.LeftRight(); - leftRight.setLeft(rule.left); - leftRight.setLeftIndex(rule.leftIndex); - leftRight.setRight(rule.right); + switch (logParse.splitType) { + case leftRight: + Elect.LeftRight leftRight = new Elect.LeftRight(); + leftRight.setLeft(rule.left); + leftRight.setLeftIndex(rule.leftIndex); + leftRight.setRight(rule.right); - elect.setType("leftRight"); - elect.setLeftRight(leftRight); - break; + elect.setType("leftRight"); + elect.setLeftRight(leftRight); + break; - case separator: - elect.setType("refIndex"); - elect.setRefIndex(new RefIndex()); - elect.getRefIndex().setIndex(rule.pos); - break; - case regexp: - if (StringUtils.isNotEmpty(rule.regexpName)) { - elect.setType("refName"); - elect.setRefName(new RefName()); - elect.getRefName().setName(rule.regexpName); - } else if (rule.pos != null) { + case separator: elect.setType("refIndex"); elect.setRefIndex(new RefIndex()); elect.getRefIndex().setIndex(rule.pos); - } - break; - case json: - elect.setType("refName"); - elect.setRefName(new RefName()); - elect.getRefName().setName(rule.jsonPathSyntax); - break; - default: - break; - } + break; + case regexp: + if (StringUtils.isNotEmpty(rule.regexpName)) { + elect.setType("refName"); + elect.setRefName(new RefName()); + elect.getRefName().setName(rule.regexpName); + } else if (rule.pos != null) { + elect.setType("refIndex"); + elect.setRefIndex(new RefIndex()); + elect.getRefIndex().setIndex(rule.pos); + } + break; + case json: + elect.setType("refName"); + elect.setRefName(new RefName()); + elect.getRefName().setName(rule.jsonPathSyntax); + break; + default: + break; + } - if (null != rule.translate && !CollectionUtils.isEmpty(rule.translate.transforms)) { - Transform transform = new Transform(); - transform.setFilters(convertTransFormFilters(rule.translate.transforms)); - elect.setTransform(transform); - } + if (null != rule.translate && !CollectionUtils.isEmpty(rule.translate.transforms)) { + Transform transform = new Transform(); + transform.setFilters(convertTransFormFilters(rule.translate.transforms)); + elect.setTransform(transform); + } - if (StringUtils.isNotEmpty(rule.defaultValue)) { - elect.setDefaultValue(rule.defaultValue); - } + if (StringUtils.isNotEmpty(rule.defaultValue)) { + elect.setDefaultValue(rule.defaultValue); + } - GroupBy.Group group = new GroupBy.Group(); - { - group.setName(t); - group.setElect(elect); - } - groupBy.setMaxKeySize(extraConfig.getMaxKeySize()); - groupBy.getGroups().add(group); - }); + GroupBy.Group group = new GroupBy.Group(); + { + group.setName(t); + group.setElect(elect); + } + groupBy.setMaxKeySize(extraConfig.getMaxKeySize()); + groupBy.getGroups().add(group); + }); + } + + if (!CollectionUtils.isEmpty(refTags)) { + refTags.forEach(t -> { + + Elect elect = new Elect(); + elect.setType("refMeta"); + elect.setRefMeta(new RefMeta()); + elect.getRefMeta().setName(t); + + GroupBy.Group group = new GroupBy.Group(); + { + group.setName(t); + group.setElect(elect); + } + groupBy.setMaxKeySize(extraConfig.getMaxKeySize()); + groupBy.getGroups().add(group); + }); + } Map extendColTypes = splitColMap.get(extendColType); if (!CollectionUtils.isEmpty(extendColTypes)) { diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/listener/CustomPluginUpdateListener.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/listener/CustomPluginUpdateListener.java index 404a65c78..062c65f01 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/listener/CustomPluginUpdateListener.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/listener/CustomPluginUpdateListener.java @@ -104,9 +104,9 @@ public void onEvent(CustomPluginDTO customPluginDTO) { String tableName = String.format("%s_%s", name, customPluginDTO.id); sqlTaskMaps.put(tableName, sqlTask); - if (null != collectMetric.getCalculate() && Boolean.TRUE == collectMetric.calculate) { + if (null != collectMetric.getCalculate() && Boolean.TRUE == collectMetric.getCalculate()) { AggTask aggTask = buildAggTask(collectMetric, customPluginDTO); - aggTaskMaps.put(collectMetric.aggTableName, aggTask); + aggTaskMaps.put(collectMetric.logCalculate.aggTableName, aggTask); } } @@ -221,6 +221,7 @@ private AggTask buildAggTask(CollectMetric collectMetric, CustomPluginDTO custom AggTaskUtil.buildGroupBy(collectMetric, tenantInitService.getAggDefaultGroupByTags())); aggTask.setWindow(AggTaskUtil.buildWindow(customPluginDTO.getPeriodType().dataUnitMs)); aggTask.setOutput(AggTaskUtil.buildOutput(collectMetric)); + aggTask.setFillZero(AggTaskUtil.buildFillZero(collectMetric)); return aggTask; } @@ -277,7 +278,7 @@ private void saveMetricInfo(CustomPluginDTO customPluginDTO) { for (CollectMetric collectMetric : collectMetrics) { saveMetricByCollectMetric(customPluginDTO, collectMetric, conf.spm, false); - if (Boolean.TRUE == collectMetric.calculate) { + if (null != collectMetric.getCalculate() && Boolean.TRUE == collectMetric.getCalculate()) { saveMetricByCollectMetric(customPluginDTO, collectMetric, conf.spm, true); } } @@ -289,7 +290,7 @@ private void saveMetricByCollectMetric(CustomPluginDTO customPluginDTO, String tableName = collectMetric.getTableName(); String targetTable = collectMetric.getTargetTable(); if (isAgg) { - targetTable = collectMetric.getAggTableName(); + targetTable = collectMetric.logCalculate.getAggTableName(); } try { @@ -325,6 +326,9 @@ private void saveMetricByCollectMetric(CustomPluginDTO customPluginDTO, if (!isAgg && !CollectionUtils.isEmpty(collectMetric.tags)) { tags.addAll(collectMetric.tags); } + if (!isAgg && !CollectionUtils.isEmpty(collectMetric.refTags)) { + tags.addAll(collectMetric.refTags); + } metricInfoDTO.setTags(tags); metricInfoDTO.setRef(String.valueOf(customPluginDTO.getId())); MetricInfoDTO db = metricInfoService.queryByMetric(metricInfoDTO.getTenant(), diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlarmMetricServiceImpl.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlarmMetricServiceImpl.java index 882383644..6dea4c5c0 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlarmMetricServiceImpl.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlarmMetricServiceImpl.java @@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.holoinsight.server.home.biz.service.AlarmMetricService; +import io.holoinsight.server.home.common.service.RequestContextAdapter; import io.holoinsight.server.home.dal.mapper.AlarmMetricMapper; import io.holoinsight.server.home.dal.model.AlarmMetric; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -21,6 +23,10 @@ @Service public class AlarmMetricServiceImpl extends ServiceImpl implements AlarmMetricService { + + @Autowired + private RequestContextAdapter requestContextAdapter; + @Override public AlarmMetric queryByMetric(Long ruleId, String metric, String tenant, String workspace) { @@ -50,9 +56,13 @@ public List queryByMetric(String metric, String tenant, String work @Override public List queryByRuleId(Long ruleId, String tenant, String workspace) { + this.requestContextAdapter.tenantAdapt(tenant, workspace); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("deleted", 0); - wrapper.eq("tenant", tenant); + if (StringUtils.isNotBlank(tenant)) { + wrapper.eq("tenant", tenant); + } + if (StringUtils.isNotBlank(workspace)) { wrapper.eq("workspace", workspace); } diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlertRuleServiceImpl.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlertRuleServiceImpl.java index 5e951a0e2..5a4a0def4 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlertRuleServiceImpl.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/AlertRuleServiceImpl.java @@ -19,7 +19,6 @@ import io.holoinsight.server.home.facade.page.MonitorPageResult; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; @@ -32,12 +31,11 @@ * @author wangsiyuan * @date 2022/4/1 10:44 上午 */ -@Service public class AlertRuleServiceImpl extends ServiceImpl implements AlertRuleService { @Resource - private AlarmRuleConverter alarmRuleConverter; + public AlarmRuleConverter alarmRuleConverter; @Resource private AlertBlockService alertBlockService; diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/CustomPluginServiceImpl.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/CustomPluginServiceImpl.java index 97047b30f..63deaaf38 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/CustomPluginServiceImpl.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/service/impl/CustomPluginServiceImpl.java @@ -223,8 +223,11 @@ private CustomPluginDTO doToDTO(CustomPlugin customPlugin) { tableName = collectMetric.name; } collectMetric.targetTable = tenantInitService.getLogMonitorMetricTable(tableName); - String aggTableName = collectMetric.tableName + "_agg_" + customPluginDTO.id; - collectMetric.aggTableName = tenantInitService.getLogMonitorMetricTable(aggTableName); + if (null != collectMetric.getCalculate() && Boolean.TRUE == collectMetric.getCalculate()) { + String aggTableName = collectMetric.tableName + "_agg_" + customPluginDTO.id; + collectMetric.logCalculate.aggTableName = + tenantInitService.getLogMonitorMetricTable(aggTableName); + } }); } return customPluginDTO; @@ -244,8 +247,12 @@ private List dosToDTOs(List customPlugins) { } collectMetric.targetTable = tenantInitService.getLogMonitorMetricTable(tableName); - String aggTableName = collectMetric.tableName + "_agg_" + customPluginDTO.id; - collectMetric.aggTableName = tenantInitService.getLogMonitorMetricTable(aggTableName); + if (null != collectMetric.getCalculate() + && Boolean.TRUE == collectMetric.getCalculate()) { + String aggTableName = collectMetric.tableName + "_agg_" + customPluginDTO.id; + collectMetric.logCalculate.aggTableName = + tenantInitService.getLogMonitorMetricTable(aggTableName); + } }); } }); diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/MonitorULA.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/MonitorULA.java index da128d968..bc617f6b4 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/MonitorULA.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/MonitorULA.java @@ -10,6 +10,7 @@ import io.holoinsight.server.home.common.util.scope.IdentityType; import io.holoinsight.server.home.common.util.scope.MonitorAuth; import io.holoinsight.server.home.common.util.scope.MonitorCookieUtil; +import io.holoinsight.server.home.common.util.scope.MonitorParams; import io.holoinsight.server.home.common.util.scope.MonitorScope; import io.holoinsight.server.home.common.util.scope.MonitorTenant; import io.holoinsight.server.home.common.util.scope.MonitorUser; @@ -144,7 +145,8 @@ public String authTokenName() { } @Override - public Boolean checkWorkspace(HttpServletRequest request, MonitorUser user, MonitorScope ms) { + public Boolean checkWorkspace(HttpServletRequest request, MonitorUser user, MonitorScope ms, + MonitorParams mp) { return true; } @@ -162,4 +164,9 @@ public String authApplyUrl() { public MonitorScope getMonitorScope(HttpServletRequest req, MonitorUser mu) { return MonitorCookieUtil.getScope(req, mu); } + + @Override + public MonitorParams getMonitorParams(HttpServletRequest req, MonitorUser mu) { + return new MonitorParams(); + } } diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULA.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULA.java index 0680d9e28..63663c999 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULA.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULA.java @@ -5,6 +5,7 @@ import io.holoinsight.server.home.common.util.scope.IdentityType; import io.holoinsight.server.home.common.util.scope.MonitorAuth; +import io.holoinsight.server.home.common.util.scope.MonitorParams; import io.holoinsight.server.home.common.util.scope.MonitorScope; import io.holoinsight.server.home.common.util.scope.MonitorTenant; import io.holoinsight.server.home.common.util.scope.MonitorUser; @@ -67,7 +68,8 @@ public interface ULA { String authTokenName(); // 权限 - Boolean checkWorkspace(HttpServletRequest request, MonitorUser user, MonitorScope ms); + Boolean checkWorkspace(HttpServletRequest request, MonitorUser user, MonitorScope ms, + MonitorParams mp); Boolean authFunc(HttpServletRequest request); @@ -76,4 +78,6 @@ public interface ULA { MonitorScope getMonitorScope(HttpServletRequest req, MonitorUser mu); + MonitorParams getMonitorParams(HttpServletRequest req, MonitorUser mu); + } diff --git a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULAFacade.java b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULAFacade.java index fb1fb1bac..64bf690c3 100644 --- a/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULAFacade.java +++ b/server/home/home-service/src/main/java/io/holoinsight/server/home/biz/ula/ULAFacade.java @@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletResponse; import io.holoinsight.server.home.biz.service.UserinfoService; +import io.holoinsight.server.home.common.util.scope.MonitorParams; import io.holoinsight.server.home.facade.UserinfoDTO; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -135,8 +136,9 @@ public ULA getCurrentULA() { return instanceMap.get(ulaType); } - public void checkWorkspace(HttpServletRequest req, MonitorUser user, MonitorScope ms) { - getCurrentULA().checkWorkspace(req, user, ms); + public void checkWorkspace(HttpServletRequest req, MonitorUser user, MonitorScope ms, + MonitorParams mp) { + getCurrentULA().checkWorkspace(req, user, ms, mp); } public Boolean authFunc(HttpServletRequest req) { @@ -147,6 +149,8 @@ public MonitorScope getMonitorScope(HttpServletRequest req, MonitorUser mu) { return getCurrentULA().getMonitorScope(req, mu); } - + public MonitorParams getMonitorParams(HttpServletRequest req, MonitorUser mu) { + return getCurrentULA().getMonitorParams(req, mu); + } } diff --git a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmMetricFacadeImpl.java b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmMetricFacadeImpl.java index ba564d732..56d44e78c 100644 --- a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmMetricFacadeImpl.java +++ b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmMetricFacadeImpl.java @@ -96,8 +96,8 @@ public void doManage() { } for (AlarmMetric alarmMetric : metrics) { - MetricInfoDTO metricInfoDTO = metricInfoService.queryByMetric(ms.getTenant(), - ms.getWorkspace(), alarmMetric.getMetricTable()); + MetricInfoDTO metricInfoDTO = metricInfoService.queryByMetric(alarmMetric.getTenant(), + alarmMetric.getWorkspace(), alarmMetric.getMetricTable()); if (null == metricInfoDTO || StringUtils.isBlank(metricInfoDTO.getRef())) continue; if (!refMaps.containsKey(metricInfoDTO.getProduct())) { diff --git a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmRuleFacadeImpl.java b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmRuleFacadeImpl.java index 7e30c7afe..74958d1e9 100644 --- a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmRuleFacadeImpl.java +++ b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/AlarmRuleFacadeImpl.java @@ -191,9 +191,6 @@ public void doManage() { if (null == item) { throw new MonitorException("cannot find record: " + alarmRuleDTO.getId()); } - if (!item.getTenant().equalsIgnoreCase(alarmRuleDTO.getTenant())) { - throw new MonitorException("the tenant parameter is invalid"); - } MonitorUser mu = RequestContext.getContext().mu; if (null != mu && StringUtils.isBlank(alarmRuleDTO.getModifier())) { diff --git a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/UserOpLogFacadeImpl.java b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/UserOpLogFacadeImpl.java index 12581c0b4..176fc3447 100644 --- a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/UserOpLogFacadeImpl.java +++ b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/controller/UserOpLogFacadeImpl.java @@ -84,9 +84,9 @@ public void doManage() { if (null != ms && !StringUtils.isBlank(ms.tenant)) { userOpLogRequest.getTarget().setTenant(ms.tenant); } - if (null != ms && !StringUtils.isBlank(ms.workspace)) { - userOpLogRequest.getTarget().setWorkspace(ms.workspace); - } + // if (null != ms && !StringUtils.isBlank(ms.workspace)) { + // userOpLogRequest.getTarget().setWorkspace(ms.workspace); + // } JsonResult.createSuccessResult(result, userOpLogService.getListByPage(userOpLogRequest)); } }); diff --git a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/filter/Step3AuthFilter.java b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/filter/Step3AuthFilter.java index 3363181d0..5a117d51e 100644 --- a/server/home/home-web/src/main/java/io/holoinsight/server/home/web/filter/Step3AuthFilter.java +++ b/server/home/home-web/src/main/java/io/holoinsight/server/home/web/filter/Step3AuthFilter.java @@ -5,6 +5,7 @@ import io.holoinsight.server.home.common.util.MonitorException; import io.holoinsight.server.home.common.util.ResultCodeEnum; +import io.holoinsight.server.home.common.util.scope.MonitorParams; import io.holoinsight.server.home.web.config.RestAuthUtil; import io.holoinsight.server.common.J; import io.holoinsight.server.home.biz.ula.ULAFacade; @@ -98,6 +99,7 @@ public boolean auth(HttpServletRequest req, HttpServletResponse resp) throws Thr // 获取一个用户的权限包 MonitorScope ms = ulaFacade.getMonitorScope(req, mu); + MonitorParams mp = ulaFacade.getMonitorParams(req, mu); MonitorAuth ma = null; try { @@ -117,12 +119,12 @@ public boolean auth(HttpServletRequest req, HttpServletResponse resp) throws Thr checkCache = true; } if (checkCache) { - ulaFacade.checkWorkspace(req, mu, ms); + ulaFacade.checkWorkspace(req, mu, ms, mp); return true; } } ma = ulaFacade.getUserPowerPkg(req, mu, ms); - ulaFacade.checkWorkspace(req, mu, ms); + ulaFacade.checkWorkspace(req, mu, ms, mp); if (null == ma || CollectionUtils.isEmpty(ma.powerConstants) || CollectionUtils.isEmpty(ma.getTenantViewPowerList())) { log.error("check tenant auth failed, " + J.toJson(ma)); @@ -160,7 +162,7 @@ public boolean auth(HttpServletRequest req, HttpServletResponse resp) throws Thr "auth failed by cookie, " + e.getMessage(), ResultCodeEnum.MONITOR_SYSTEM_ERROR); return false; } finally { - Context c = new Context(ms, mu, ma); + Context c = new Context(ms, mu, ma, mp); Debugger.print("Step3AuthFilter", "MS: " + J.toJson(ms) + ", MU: " + J.toJson(mu) + ", MA: " + J.toJson(ma)); RequestContext.setContext(c);