提交 6c9057a6 编写于 作者: Y yong.you

modify the metric analyzer

上级 23717d6c
...@@ -29,6 +29,7 @@ import com.dianping.cat.consumer.metric.model.entity.Point; ...@@ -29,6 +29,7 @@ import com.dianping.cat.consumer.metric.model.entity.Point;
import com.dianping.cat.consumer.metric.model.transform.DefaultNativeBuilder; import com.dianping.cat.consumer.metric.model.transform.DefaultNativeBuilder;
import com.dianping.cat.consumer.metric.model.transform.DefaultSaxParser; import com.dianping.cat.consumer.metric.model.transform.DefaultSaxParser;
import com.dianping.cat.consumer.metric.model.transform.DefaultXmlBuilder; import com.dianping.cat.consumer.metric.model.transform.DefaultXmlBuilder;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Message; import com.dianping.cat.message.Message;
import com.dianping.cat.message.Metric; import com.dianping.cat.message.Metric;
import com.dianping.cat.message.Transaction; import com.dianping.cat.message.Transaction;
...@@ -107,12 +108,26 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer<MetricReport> implem ...@@ -107,12 +108,26 @@ public class MetricAnalyzer extends AbstractMessageAnalyzer<MetricReport> implem
private Map<String, String> parseABtests(Transaction transaction) { private Map<String, String> parseABtests(Transaction transaction) {
String abtest = queryAbTest(transaction); String abtest = queryAbTest(transaction);
return parseABTests(abtest); return parseABTests(abtest);
} }
private String queryAbTest(Transaction transaction) { private String queryAbTest(Transaction transaction) {
return ""; List<Message> messages = transaction.getChildren();
}
for (Message message : messages) {
if (message instanceof Event) {
if ("URL".equals(message.getType()) && "ABTest".equals(message.getName())) {
String data = (String) message.getData();
System.out.println(data);
return data;
}
}
}
return "";
}
public Map<String, String> parseABTests(String str) { public Map<String, String> parseABTests(String str) {
Map<String, String> abtests = new HashMap<String, String>(); Map<String, String> abtests = new HashMap<String, String>();
......
...@@ -35,12 +35,12 @@ public class MetricDisplay extends BaseVisitor { ...@@ -35,12 +35,12 @@ public class MetricDisplay extends BaseVisitor {
private static final String COUNT = ":count"; private static final String COUNT = ":count";
private static final String AVG = "avg"; private static final String AVG = "avg";
public List<LineChart> getLineCharts(){ public List<LineChart> getLineCharts() {
return new ArrayList<LineChart>(m_lineCharts.values()); return new ArrayList<LineChart>(m_lineCharts.values());
} }
public Set<String> getAbtests(){ public Set<String> getAbtests() {
return m_abtests; return m_abtests;
} }
...@@ -51,32 +51,32 @@ public class MetricDisplay extends BaseVisitor { ...@@ -51,32 +51,32 @@ public class MetricDisplay extends BaseVisitor {
for (BusinessConfig flag : configs) { for (BusinessConfig flag : configs) {
if (flag.isShowSum()) { if (flag.isShowSum()) {
String key = flag.getMainKey() + SUM; String key = flag.getMainKey() + SUM;
m_lineCharts.put(key, creatLineChart(key)); m_lineCharts.put(key, creatLineChart(key));
} }
if (flag.isShowCount()) { if (flag.isShowCount()) {
String key = flag.getMainKey() + COUNT; String key = flag.getMainKey() + COUNT;
m_lineCharts.put(key, creatLineChart(key)); m_lineCharts.put(key, creatLineChart(key));
} }
if (flag.isShowAvg()) { if (flag.isShowAvg()) {
String key = flag.getMainKey() + AVG; String key = flag.getMainKey() + AVG;
m_lineCharts.put(key, creatLineChart(key)); m_lineCharts.put(key, creatLineChart(key));
} }
} }
} }
private LineChart creatLineChart(String key) { private LineChart creatLineChart(String key) {
LineChart lineChart = new LineChart(); LineChart lineChart = new LineChart();
lineChart.setTitles(key); lineChart.setTitles(key);
lineChart.setStart(m_start); lineChart.setStart(m_start);
lineChart.setSize(60); lineChart.setSize(60);
lineChart.setStep(TimeUtil.ONE_MINUTE); lineChart.setStep(TimeUtil.ONE_MINUTE);
return lineChart; return lineChart;
} }
@Override @Override
public void visitAbtest(Abtest abtest) { public void visitAbtest(Abtest abtest) {
...@@ -91,6 +91,10 @@ public class MetricDisplay extends BaseVisitor { ...@@ -91,6 +91,10 @@ public class MetricDisplay extends BaseVisitor {
@Override @Override
public void visitGroup(Group group) { public void visitGroup(Group group) {
String id = group.getName(); String id = group.getName();
if ("".equals(id)) {
id = "Default";
}
double[] sum = new double[60]; double[] sum = new double[60];
double[] avg = new double[60]; double[] avg = new double[60];
double[] count = new double[60]; double[] count = new double[60];
......
package com.dianping.cat.demo;
import org.junit.Test;
import com.dianping.cat.Cat;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Transaction;
import com.dianping.cat.message.internal.DefaultMessageManager;
import com.dianping.cat.message.spi.internal.DefaultMessageTree;
public class TestABTestBusinessMessage {
private static final String TuanGou = "TuanGouWeb";
private static final String PayOrder = "PayOrder";
@Test
public void test() throws Exception {
for (int i = 0; i < 1000; i++) {
Transaction t = Cat.newTransaction("URL", "/index");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(TuanGou);
t.complete();
}
for (int i = 0; i < 800; i++) {
Transaction t = Cat.newTransaction("URL", "/detail");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(TuanGou);
t.complete();
}
for (int i = 0; i < 500; i++) {
Transaction t = Cat.newTransaction("URL", "/order/submitOrder");
String abtest = buildAbStr(i);
Cat.logEvent("URL", "ABTest", Event.SUCCESS, abtest);
((DefaultMessageManager) Cat.getManager()).setMetricType(abtest);
Cat.logMetricForCount("order");
Cat.logMetricForSum("payment.success", i);
DefaultMessageTree tree = (DefaultMessageTree) Cat.getManager().getThreadLocalMessageTree();
tree.setDomain(PayOrder);
t.complete();
}
Thread.sleep(1000);
}
private String buildAbStr(int i) {
int value = i % 3;
if (value == 0) {
return "1=ab:A&2=ab:A";
} else if (value == 1) {
return "1=ab:B&2=ab:B";
} else {
return "1=ab:C&2=ab:";
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册