提交 282bf090 编写于 作者: Y youyong205

add the delete unused metric config

上级 8d0b0168
......@@ -185,7 +185,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all.add(C(ContentFetcher.class, DefaultContentFetcher.class));
all.add(C(ProductLineConfigManager.class).req(ConfigDao.class, ContentFetcher.class));
all.add(C(MetricConfigManager.class).req(ConfigDao.class, ContentFetcher.class));
all.add(C(MetricConfigManager.class).req(ConfigDao.class, ContentFetcher.class, ProductLineConfigManager.class));
all.add(C(MessageAnalyzer.class, MetricAnalyzer.ID, MetricAnalyzer.class).is(PER_LOOKUP) //
.req(ReportBucketManager.class, BusinessReportDao.class, MetricConfigManager.class)//
.req(ProductLineConfigManager.class, TaskManager.class, ServerConfigManager.class));
......
......@@ -24,11 +24,13 @@ import org.xml.sax.SAXException;
import com.dianping.cat.Cat;
import com.dianping.cat.config.content.ContentFetcher;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.consumer.metric.MetricAnalyzer.ConfigItem;
import com.dianping.cat.consumer.metric.config.entity.MetricConfig;
import com.dianping.cat.consumer.metric.config.entity.MetricItemConfig;
import com.dianping.cat.consumer.metric.config.entity.Tag;
import com.dianping.cat.consumer.metric.config.transform.DefaultSaxParser;
import com.dianping.cat.consumer.productline.ProductLineConfigManager;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
import com.dianping.cat.core.config.ConfigEntity;
......@@ -41,6 +43,9 @@ public class MetricConfigManager implements Initializable, LogEnabled {
@Inject
private ContentFetcher m_fetcher;
@Inject
private ProductLineConfigManager m_productLineConfigManager;
private int m_configId;
private MetricConfig m_metricConfig;
......@@ -102,6 +107,7 @@ public class MetricConfigManager implements Initializable, LogEnabled {
if (m_metricConfig == null) {
m_metricConfig = new MetricConfig();
}
deleteUnusedConfig();
}
public boolean insertIfNotExist(String domain, String type, String metricKey, ConfigItem item) {
......@@ -228,6 +234,30 @@ public class MetricConfigManager implements Initializable, LogEnabled {
}
}
protected void deleteUnusedConfig() {
try {
Map<String, MetricItemConfig> configs = m_metricConfig.getMetricItemConfigs();
List<String> unused = new ArrayList<String>();
for (MetricItemConfig config : configs.values()) {
String domain = config.getDomain();
String productLine = m_productLineConfigManager.queryProductLineByDomain(domain);
ProductLine product = m_productLineConfigManager.queryProductLine(productLine);
if (product == null || !product.isMetricDashboard()) {
unused.add(config.getId());
}
}
for (String id : unused) {
m_logger.info("delete metric item " + id);
m_metricConfig.removeMetricItemConfig(id);
}
storeConfig();
} catch (Exception e) {
e.printStackTrace();
}
}
private boolean storeConfig() {
synchronized (this) {
try {
......
......@@ -589,6 +589,9 @@
<requirement>
<role>com.dianping.cat.config.content.ContentFetcher</role>
</requirement>
<requirement>
<role>com.dianping.cat.consumer.productline.ProductLineConfigManager</role>
</requirement>
</requirements>
</component>
<component>
......
package com.dianping.cat.system.page.config.processor;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
......@@ -57,23 +58,35 @@ public class MetricConfigProcessor extends BaseProcesser {
}
private void metricConfigList(Payload payload, Model model) {
Map<String, ProductLine> productLines = m_productLineConfigManger.queryAllProductLines();
Map<String, ProductLine> productLines = m_productLineConfigManger.queryMetricProductLines();
Map<ProductLine, List<MetricItemConfig>> metricConfigs = new LinkedHashMap<ProductLine, List<MetricItemConfig>>();
Set<String> exists = new HashSet<String>();
Set<String> knowDomains = new HashSet<String>();
for (Entry<String, ProductLine> entry : productLines.entrySet()) {
ProductLine productLine = entry.getValue();
if (productLine.isMetricDashboard()) {
Set<String> domains = productLine.getDomains().keySet();
List<MetricItemConfig> configs = m_metricConfigManager.queryMetricItemConfigs(domains);
Set<String> domains = productLine.getDomains().keySet();
List<MetricItemConfig> configs = m_metricConfigManager.queryMetricItemConfigs(domains);
for (MetricItemConfig config : configs) {
exists.add(m_metricConfigManager.buildMetricKey(config.getDomain(), config.getType(),
config.getMetricKey()));
}
metricConfigs.put(productLine, configs);
for (MetricItemConfig config : configs) {
exists.add(m_metricConfigManager.buildMetricKey(config.getDomain(), config.getType(), config.getMetricKey()));
}
metricConfigs.put(productLine, configs);
knowDomains.addAll(domains);
}
List<MetricItemConfig> otherConfigs = new ArrayList<MetricItemConfig>();
for (MetricItemConfig config : m_metricConfigManager.getMetricConfig().getMetricItemConfigs().values()) {
String domain = config.getDomain();
if (!knowDomains.contains(domain)) {
otherConfigs.add(config);
}
}
if (!otherConfigs.isEmpty()) {
metricConfigs.put(new ProductLine("Other").setTitle("Other"), otherConfigs);
}
model.setProductMetricConfigs(metricConfigs);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册