提交 0ad937ed 编写于 作者: Y youyong205

fix metric analyzer bug

上级 de274ba0
package com.dianping.cat.broker.api.page.batch;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
......@@ -67,14 +68,14 @@ public class Handler implements PageHandler<Context>, LogEnabled {
String userIp = m_util.getRemoteIp(request);
String version = payload.getVersion();
boolean success = true;
if (userIp != null) {
if ("1".equals(version)) {
processVersion1(payload, request, userIp);
} else if ("2".equals(version)) {
processVersion2(payload, request, userIp);
} else {
success=false;
success = false;
Cat.logEvent("InvalidVersion", version, Event.SUCCESS, version);
}
} else {
......@@ -82,9 +83,9 @@ public class Handler implements PageHandler<Context>, LogEnabled {
m_logger.info("unknown http request, x-forwarded-for:" + request.getHeader("x-forwarded-for"));
}
if (success){
response.getWriter().write("OK");
}else{
if (success) {
response.getWriter().write("OK");
} else {
response.getWriter().write("validate request!");
}
}
......@@ -155,7 +156,7 @@ public class Handler implements PageHandler<Context>, LogEnabled {
try {
appData.setTimestamp(Long.parseLong(items[0]));
Integer command = m_appConfigManager.getCommands().get(items[1]);
Integer command = m_appConfigManager.getCommands().get(URLDecoder.decode(items[1], "utf-8"));
if (command != null) {
appData.setCommand(command);
......@@ -174,7 +175,7 @@ public class Handler implements PageHandler<Context>, LogEnabled {
m_appDataConsumer.enqueue(appData);
Cat.logEvent("Command", String.valueOf(command), Event.SUCCESS, null);
} else {
Cat.logEvent("Command", items[1], Event.SUCCESS, items[1]);
Cat.logEvent("CommandNotFound", items[1], Event.SUCCESS, items[1]);
}
} catch (Exception e) {
m_logger.error(e.getMessage(), e);
......
......@@ -16,6 +16,7 @@ import com.dianping.cat.analysis.AbstractMessageAnalyzer;
import com.dianping.cat.configuration.NetworkInterfaceManager;
import com.dianping.cat.consumer.advanced.dal.BusinessReport;
import com.dianping.cat.consumer.advanced.dal.BusinessReportDao;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.consumer.metric.model.entity.MetricItem;
import com.dianping.cat.consumer.metric.model.entity.MetricReport;
import com.dianping.cat.consumer.metric.model.entity.Segment;
......@@ -170,7 +171,12 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer<MetricReport> implem
ConfigItem config = parseValue(status, data);
if (!StringUtils.isEmpty(group)) {
m_productLineConfigManager.insertIfNotExsit(group, domain);
boolean result = m_productLineConfigManager.insertIfNotExsit(group, domain);
if (!result) {
m_logger.error(String.format("error when insert product line info, productline %s, domain %s", group,
domain));
}
report = findOrCreateReport(group);
}
......@@ -184,21 +190,21 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer<MetricReport> implem
updateMetric(metricItem, min, config.getCount(), config.getValue());
config.setTitle(metricName);
if (!isNetwork(group) && !isSystem(group)) {
m_configManager.insertIfNotExist(domain, METRIC, metricName, config);
ProductLine productline = m_productLineConfigManager.queryProductLine(group);
if (productline != null && productline.getMetricDashboard()) {
boolean result = m_configManager.insertIfNotExist(domain, METRIC, metricName, config);
if (!result) {
m_logger.error(String.format("error when insert metric config info, domain %s, metricName %s", domain,
metricName));
}
}
}
return 0;
}
private boolean isNetwork(String group) {
return group.startsWith("f5") || group.startsWith("switch");
}
private boolean isSystem(String group) {
return group.startsWith("system");
}
private int processTransaction(MetricReport report, MessageTree tree, Transaction t) {
int count = 0;
List<Message> children = t.getChildren();
......
......@@ -19,10 +19,10 @@ import org.unidal.lookup.annotation.Inject;
import org.xml.sax.SAXException;
import com.dianping.cat.Cat;
import com.dianping.cat.Constants;
import com.dianping.cat.advanced.metric.config.entity.MetricConfig;
import com.dianping.cat.advanced.metric.config.entity.MetricItemConfig;
import com.dianping.cat.advanced.metric.config.transform.DefaultSaxParser;
import com.dianping.cat.consumer.company.model.entity.ProductLine;
import com.dianping.cat.consumer.metric.MetricAnalyzer.ConfigItem;
import com.dianping.cat.core.config.Config;
import com.dianping.cat.core.config.ConfigDao;
......@@ -102,14 +102,9 @@ public class MetricConfigManager implements Initializable {
for (MetricItemConfig config : configs.values()) {
String domain = config.getDomain();
String productLine = m_productLineConfigManager.queryProductLineByDomain(domain);
ProductLine product = m_productLineConfigManager.queryProductLine(productLine);
if (Constants.BROKER_SERVICE.equals(domain)) {
unused.add(config.getId());
}
if ("Default".equals(productLine)) {
unused.add(config.getId());
}
if (!config.getId().contains(":Metric:")) {
if (product == null || !product.isMetricDashboard()) {
unused.add(config.getId());
}
}
......
......@@ -152,16 +152,16 @@ public class ProductLineConfigManager implements Initializable, LogEnabled {
productLine.setDashboard(metricDashboard);
}
public boolean insertIfNotExsit(String line, String domain) {
public boolean insertIfNotExsit(String product, String domain) {
Company company = getCompany();
if (company != null) {
ProductLine productLine = company.getProductLines().get(line);
ProductLine productLine = company.getProductLines().get(product);
if (productLine == null) {
productLine = new ProductLine();
productLine.setId(line);
productLine.setTitle(line);
productLine.setId(product);
productLine.setTitle(product);
buildDefaultDashboard(productLine, domain);
productLine.addDomain(new Domain(domain));
company.addProductLine(productLine);
......@@ -215,11 +215,16 @@ public class ProductLineConfigManager implements Initializable, LogEnabled {
return domains;
}
public ProductLine queryProductLine(String id) {
return getCompany().findProductLine(id);
}
public Map<String, ProductLine> queryMetricProductLines() {
Map<String, ProductLine> productLines = new TreeMap<String, ProductLine>();
for (ProductLine line : getCompany().getProductLines().values()) {
String id = line.getId();
if (id != null && id.length() > 0 && line.getMetricDashboard()) {
productLines.put(id, line);
}
......@@ -248,7 +253,7 @@ public class ProductLineConfigManager implements Initializable, LogEnabled {
return productLine == null ? "Default" : productLine;
}
public Map<String, List<ProductLine>> queryTypeProductLines() {
Map<String, List<ProductLine>> productLines = new LinkedHashMap<String, List<ProductLine>>();
......@@ -343,13 +348,13 @@ public class ProductLineConfigManager implements Initializable, LogEnabled {
config.setName(CONFIG_NAME);
config.setContent(getCompany().toString());
m_configDao.updateByPK(config, ConfigEntity.UPDATESET_FULL);
m_domainToProductLines = buildDomainToProductLines();
return true;
} catch (Exception e) {
Cat.logError(e);
return false;
}
m_domainToProductLines = buildDomainToProductLines();
}
return true;
}
}
\ No newline at end of file
......@@ -75,6 +75,23 @@ public class MetricConfigManagerTest {
Assert.assertEquals(3L, configs.get(item).longValue());
Assert.assertEquals(1, configs.size());
}
@Test
public void testInit(){
MetricConfigManager manager = new MockMetricConfigManager();
((MockMetricConfigManager) manager).setConfigDao(new MockConfigDao2());
try {
manager.initialize();
} catch (Exception e) {
}
s_storeCount=0;
manager.insertIfNotExist("test", "test", "test", new ConfigItem());
manager.insertIfNotExist("test", "test", "test", new ConfigItem());
manager.insertIfNotExist("test1", "test", "test", new ConfigItem());
manager.insertIfNotExist("test1", "test", "test", new ConfigItem());
Assert.assertEquals(s_storeCount, 2);
}
@Test
public void testInitThrowException() throws Exception {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册