提交 1871f8a9 编写于 作者: Y yong.you

modify the cache and dashboard all ip show error

上级 16b5733a
package com.dianping.cat.report.page.cache;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.servlet.ServletException;
......@@ -24,11 +26,15 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionType;
import com.dianping.cat.helper.CatString;
import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.event.EventMergeManager;
import com.dianping.cat.report.page.model.event.EventReportMerger;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.model.transaction.TransactionReportMerger;
import com.dianping.cat.report.page.transaction.MergeAllMachine;
import com.dianping.cat.report.page.transaction.MergeAllName;
import com.dianping.cat.report.page.transaction.TransactionMergeManager;
import com.dianping.cat.report.service.ReportService;
public class Handler implements PageHandler<Context> {
......@@ -45,9 +51,18 @@ public class Handler implements PageHandler<Context> {
@Inject
private ReportService m_reportService;
@Inject
private TransactionMergeManager m_transactionMergeManger;
@Inject
private EventMergeManager m_eventMergerMergeManager;
@Inject(type = ModelService.class, value = "transaction")
private ModelService<TransactionReport> m_transactionService;
private Set<String> m_cacheType = new HashSet<String>(Arrays.asList("Cache.web", "Cache.memcached", "Cache.kvdb",
"Cache.memcached-tuangou"));
private CacheReport buildCacheReport(TransactionReport transactionReport, EventReport eventReport, String type,
String sortBy, String queryName, String ip) {
TransactionReportVistor vistor = new TransactionReportVistor();
......@@ -154,34 +169,27 @@ public class Handler implements PageHandler<Context> {
.setProperty("ip", ipAddress);
if (StringUtils.isEmpty(type)) {
request.setProperty("type", "Cache.web");
ModelResponse<EventReport> response = m_eventService.invoke(request);
EventReport webCacheReport = response.getModel();
request.setProperty("type", "Cache.memcached");
ModelResponse<EventReport> memcachedResponse = m_eventService.invoke(request);
EventReport memcachedReport = memcachedResponse.getModel();
request.setProperty("type", "Cache.kvdb");
ModelResponse<EventReport> kvdbResponse = m_eventService.invoke(request);
EventReport kvdbReport = kvdbResponse.getModel();
request.setProperty("type", "Cache.memcached-tuangou");
ModelResponse<EventReport> tuangouResponse = m_eventService.invoke(request);
EventReport tuangouReport = tuangouResponse.getModel();
EventReportMerger merger = new EventReportMerger(new EventReport(domain));
merger.visitEventReport(webCacheReport);
merger.visitEventReport(memcachedReport);
merger.visitEventReport(kvdbReport);
merger.visitEventReport(tuangouReport);
return merger.getEventReport();
for (String temp : m_cacheType) {
request.setProperty("type", temp);
ModelResponse<EventReport> response = m_eventService.invoke(request);
EventReport eventReport = response.getModel();
merger.visitEventReport(eventReport);
}
EventReport eventReport = merger.getEventReport();
eventReport = m_eventMergerMergeManager.mergerAllIp(eventReport, ipAddress);
return eventReport;
} else {
request.setProperty("type", type);
ModelResponse<EventReport> response = m_eventService.invoke(request);
return response.getModel();
EventReport eventReport = response.getModel();
eventReport = m_eventMergerMergeManager.mergerAllIp(eventReport, ipAddress);
return eventReport;
}
}
......@@ -196,42 +204,26 @@ public class Handler implements PageHandler<Context> {
.setProperty("ip", ipAddress);
if (StringUtils.isEmpty(type)) {
request.setProperty("type", "Cache.web");
ModelResponse<TransactionReport> response = m_transactionService.invoke(request);
TransactionReport webCacheReport = response.getModel();
request.setProperty("type", "Cache.memcached");
ModelResponse<TransactionReport> memcachedResponse = m_transactionService.invoke(request);
TransactionReport memcachedReport = memcachedResponse.getModel();
request.setProperty("type", "Cache.kvdb");
ModelResponse<TransactionReport> kvdbResponse = m_transactionService.invoke(request);
TransactionReport kvdbReport = kvdbResponse.getModel();
request.setProperty("type", "Cache.memcached-tuangou");
ModelResponse<TransactionReport> tuangouResponse = m_transactionService.invoke(request);
TransactionReport tuangouReport = tuangouResponse.getModel();
TransactionReportMerger merger = new TransactionReportMerger(new TransactionReport(domain));
merger.visitTransactionReport(webCacheReport);
merger.visitTransactionReport(memcachedReport);
merger.visitTransactionReport(kvdbReport);
merger.visitTransactionReport(tuangouReport);
TransactionReport report = merger.getTransactionReport();
if (payload.getPeriod().isLast()) {
Set<String> domains = m_reportService.queryAllDomainNames(new Date(payload.getDate()),
new Date(payload.getDate() + TimeUtil.ONE_HOUR), "transaction");
Set<String> domainNames = report.getDomainNames();
for (String temp : m_cacheType) {
request.setProperty("type", temp);
ModelResponse<TransactionReport> response = m_transactionService.invoke(request);
TransactionReport transactionReport = response.getModel();
domainNames.addAll(domains);
merger.visitTransactionReport(transactionReport);
}
return report;
TransactionReport transactionReport = merger.getTransactionReport();
transactionReport = m_transactionMergeManger.mergerAllIp(transactionReport, ipAddress);
return transactionReport;
} else {
request.setProperty("type", type);
ModelResponse<TransactionReport> response = m_transactionService.invoke(request);
return response.getModel();
TransactionReport transactionReport = response.getModel();
transactionReport = m_transactionMergeManger.mergerAllIp(transactionReport, ipAddress);
return transactionReport;
}
}
......@@ -247,6 +239,8 @@ public class Handler implements PageHandler<Context> {
public void handleOutbound(Context ctx) throws ServletException, IOException {
Model model = new Model(ctx);
Payload payload = ctx.getPayload();
String ipAddress = payload.getIpAddress();
String type = payload.getType();
normalize(model, payload);
switch (payload.getAction()) {
......@@ -254,6 +248,37 @@ public class Handler implements PageHandler<Context> {
TransactionReport transactionReport = getHourlyTransactionReport(payload);
EventReport eventReport = getHourlyEventReport(payload);
if (payload.getPeriod().isLast()) {
Set<String> domains = m_reportService.queryAllDomainNames(new Date(payload.getDate()),
new Date(payload.getDate() + TimeUtil.ONE_HOUR), "transaction");
Set<String> domainNames = transactionReport.getDomainNames();
domainNames.addAll(domains);
}
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitTransactionReport(transactionReport);
transactionReport = all.getReport();
com.dianping.cat.report.page.event.MergeAllMachine allEvent = new com.dianping.cat.report.page.event.MergeAllMachine();
allEvent.visitEventReport(eventReport);
eventReport = allEvent.getReport();
}
if (CatString.ALL_NAME.equalsIgnoreCase(type)) {
MergeAllName all = new MergeAllName();
all.visitTransactionReport(transactionReport);
transactionReport = all.getReport();
com.dianping.cat.report.page.event.MergeAllName allEvent = new com.dianping.cat.report.page.event.MergeAllName();
allEvent.visitEventReport(eventReport);
eventReport = allEvent.getReport();
}
calculateEventTps(payload, eventReport);
calculateTransactionTps(payload, transactionReport);
CacheReport cacheReport = buildCacheReport(transactionReport, eventReport, payload.getType(),
......
......@@ -27,6 +27,7 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionName;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.consumer.transaction.model.entity.TransactionType;
import com.dianping.cat.report.ReportPage;
import com.dianping.cat.report.page.event.EventMergeManager;
import com.dianping.cat.report.page.model.spi.ModelPeriod;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
......@@ -34,12 +35,19 @@ import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.problem.ProblemStatistics;
import com.dianping.cat.report.page.problem.ProblemStatistics.StatusStatistics;
import com.dianping.cat.report.page.problem.ProblemStatistics.TypeStatistics;
import com.dianping.cat.report.page.transaction.TransactionMergeManager;
import com.google.gson.Gson;
public class Handler implements PageHandler<Context> {
@Inject
private JspViewer m_jspViewer;
@Inject
private TransactionMergeManager m_transactionMergeManger;
@Inject
private EventMergeManager m_eventMergerMergeManager;
@Inject(type = ModelService.class, value = "event")
private ModelService<EventReport> m_eventService;
......@@ -190,7 +198,7 @@ public class Handler implements PageHandler<Context> {
Map<String, String> data = new HashMap<String, String>();
TransactionReport transactionReport = getTransactionHourlyReport(domain, ip, null);
if (transactionReport == null) {
return data;
}
......@@ -235,6 +243,8 @@ public class Handler implements PageHandler<Context> {
if (m_transactionService.isEligable(request)) {
ModelResponse<EventReport> response = m_eventService.invoke(request);
EventReport report = response.getModel();
report = m_eventMergerMergeManager.mergerAllIp(report, ip);
return report;
} else {
throw new RuntimeException("Internal error: no eligable transaction service registered for " + request + "!");
......@@ -251,6 +261,7 @@ public class Handler implements PageHandler<Context> {
if (m_transactionService.isEligable(request)) {
ModelResponse<ProblemReport> response = m_problemService.invoke(request);
ProblemReport report = response.getModel();
return report;
} else {
throw new RuntimeException("Internal error: no eligable transaction service registered for " + request + "!");
......@@ -267,6 +278,8 @@ public class Handler implements PageHandler<Context> {
if (m_transactionService.isEligable(request)) {
ModelResponse<TransactionReport> response = m_transactionService.invoke(request);
TransactionReport report = response.getModel();
report = m_transactionMergeManger.mergerAllIp(report, ip);
return report;
} else {
throw new RuntimeException("Internal error: no eligable transaction service registered for " + request + "!");
......
package com.dianping.cat.report.page.event;
import com.dianping.cat.consumer.event.model.entity.EventReport;
import com.dianping.cat.helper.CatString;
public class EventMergeManager {
public EventReport mergerAll(EventReport report, String ipAddress, String allName) {
EventReport temp = mergerAllIp(report, ipAddress);
return mergerAllName(temp, allName);
}
public EventReport mergerAllIp(EventReport report, String ipAddress) {
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitEventReport(report);
report = all.getReport();
}
return report;
}
private EventReport mergerAllName(EventReport report, String allName) {
if (CatString.ALL_NAME.equalsIgnoreCase(allName)) {
MergeAllName all = new MergeAllName();
all.visitEventReport(report);
report = all.getReport();
}
return report;
}
}
......@@ -52,6 +52,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private ReportService m_reportService;
@Inject
private EventMergeManager m_mergeManager;
@Inject(type = ModelService.class, value = "event")
private ModelService<EventReport> m_service;
......@@ -127,19 +130,8 @@ public class Handler implements PageHandler<Context> {
}
ModelResponse<EventReport> response = m_service.invoke(request);
EventReport report = response.getModel();
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitEventReport(report);
report = m_mergeManager.mergerAll(report, ipAddress, name);
report = all.getReport();
}
if (CatString.ALL_NAME.equalsIgnoreCase(name)) {
MergeAllName all = new MergeAllName();
all.visitEventReport(report);
report = all.getReport();
}
EventType t = report.getMachines().get(ip).findType(type);
if (t != null) {
......@@ -165,7 +157,7 @@ public class Handler implements PageHandler<Context> {
if (m_service.isEligable(request)) {
ModelResponse<EventReport> response = m_service.invoke(request);
EventReport report = response.getModel();
if (payload.getPeriod().isLast()) {
Set<String> domains = m_reportService.queryAllDomainNames(new Date(payload.getDate()),
new Date(payload.getDate() + TimeUtil.ONE_HOUR), "event");
......@@ -173,12 +165,7 @@ public class Handler implements PageHandler<Context> {
domainNames.addAll(domains);
}
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitEventReport(report);
report = all.getReport();
}
report = m_mergeManager.mergerAllIp(report, ipAddress);
calculateTps(payload, report);
return report;
} else {
......@@ -339,9 +326,9 @@ public class Handler implements PageHandler<Context> {
Date start = payload.getHistoryStartDate();
Date end = payload.getHistoryEndDate();
EventReport eventReport = m_reportService.queryEventReport(domain, start, end);
calculateTps(payload, eventReport);
model.setReport(eventReport);
if (!StringUtils.isEmpty(type)) {
......
......@@ -59,6 +59,9 @@ public class Handler implements PageHandler<Context> {
@Inject
private ServerConfigManager m_manager;
@Inject
private TransactionMergeManager m_mergeManager;
@Inject(type = ModelService.class, value = "transaction")
private ModelService<TransactionReport> m_service;
......@@ -148,12 +151,7 @@ public class Handler implements PageHandler<Context> {
domainNames.addAll(domains);
}
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitTransactionReport(report);
report = all.getReport();
}
report = m_mergeManager.mergerAllIp(report, ipAddress);
calculateTps(payload, report);
return report;
} else {
......@@ -179,20 +177,9 @@ public class Handler implements PageHandler<Context> {
name = CatString.ALL_NAME;
}
ModelResponse<TransactionReport> response = m_service.invoke(request);
TransactionReport report = response.getModel();
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitTransactionReport(report);
report = all.getReport();
}
if (CatString.ALL_NAME.equalsIgnoreCase(name)) {
MergeAllName all = new MergeAllName();
all.visitTransactionReport(report);
report = all.getReport();
}
report = m_mergeManager.mergerAll(report, ipAddress, name);
TransactionType t = report.getMachines().get(ip).findType(type);
if (t != null) {
TransactionName n = t.findName(name);
......
package com.dianping.cat.report.page.transaction;
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.helper.CatString;
public class TransactionMergeManager {
public TransactionReport mergerAll(TransactionReport report, String ipAddress, String allName) {
TransactionReport temp = mergerAllIp(report, ipAddress);
return mergerAllName(temp, allName);
}
public TransactionReport mergerAllIp(TransactionReport report, String ipAddress) {
if (CatString.ALL_IP.equalsIgnoreCase(ipAddress)) {
MergeAllMachine all = new MergeAllMachine();
all.visitTransactionReport(report);
report = all.getReport();
}
return report;
}
private TransactionReport mergerAllName(TransactionReport report, String allName) {
if (CatString.ALL_NAME.equalsIgnoreCase(allName)) {
MergeAllName all = new MergeAllName();
all.visitTransactionReport(report);
report = all.getReport();
}
return report;
}
}
......@@ -1607,6 +1607,9 @@
<requirement>
<role>com.dianping.cat.configuration.ServerConfigManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
......@@ -1639,6 +1642,10 @@
<role>com.dianping.cat.report.page.transaction.XmlViewer</role>
<implementation>com.dianping.cat.report.page.transaction.XmlViewer</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
<implementation>com.dianping.cat.report.page.transaction.TransactionMergeManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.event.Handler</role>
<implementation>com.dianping.cat.report.page.event.Handler</implementation>
......@@ -1658,6 +1665,9 @@
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
......@@ -1686,6 +1696,10 @@
</requirement>
</requirements>
</component>
<component>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
<implementation>com.dianping.cat.report.page.event.EventMergeManager</implementation>
</component>
<component>
<role>com.dianping.cat.report.page.heartbeat.Handler</role>
<implementation>com.dianping.cat.report.page.heartbeat.Handler</implementation>
......@@ -2091,6 +2105,12 @@
<requirement>
<role>com.dianping.cat.report.page.dashboard.JspViewer</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>event</role-hint>
......@@ -2707,6 +2727,12 @@
<requirement>
<role>com.dianping.cat.report.service.ReportService</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.transaction.TransactionMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.event.EventMergeManager</role>
</requirement>
<requirement>
<role>com.dianping.cat.report.page.model.spi.ModelService</role>
<role-hint>transaction</role-hint>
......
......@@ -66,7 +66,7 @@
<td><a href="?op=graph&ip=${model.ipAddress}&date=${model.date}&key=totalLoss" data-status="totalLoss" class="graph_link">[::show::]</a></td>
<td>丢失消息总量</td>
<c:choose>
<c:when test="model.state.total.totalLoss > 0 "><td style="color:red;">${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:when test="${model.state.total.totalLoss > 0}"><td style="color:red;">${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:otherwise><td>${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:otherwise>
</c:choose>
<td>服务器进行encode以及analyze处理来不及而丢失消息总量</td>
......@@ -97,7 +97,7 @@
<td><a href="?op=graph&ip=${model.ipAddress}&date=${model.date}&key=dumpLoss" data-status="dumpLoss" class="graph_link">[::show::]</a></td>
<td>gzip来不及压缩丢失消息数量</td>
<c:choose>
<c:when test="model.state.total.dumpLoss > 0 "><td style="color:red;">${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:when test="${model.state.total.dumpLoss > 0}"><td style="color:red;">${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:otherwise><td>${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:otherwise>
</c:choose>
<td>将消息进行gzip压缩,gzip线程太忙而丢失消息丢失数目</td>
......
......@@ -63,7 +63,7 @@
<td><a href="?op=historyGraph&ip=${model.ipAddress}&reportType=${model.reportType}&date=${model.date}&key=totalLoss" data-status="totalLoss" class="graph_link">[::show::]</a></td>
<td>丢失消息总量</td>
<c:choose>
<c:when test="model.state.total.totalLoss > 0 "><td style="color:red;">${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:when test="${model.state.total.totalLoss > 0}"><td style="color:red;">${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:otherwise><td>${w:format(model.state.total.totalLoss,'#,###,###,###,##0.#')}</td></c:otherwise>
</c:choose>
<td>服务器进行encode以及analyze处理来不及而丢失消息总量</td>
......@@ -94,7 +94,7 @@
<td><a href="?op=historyGraph&ip=${model.ipAddress}&reportType=${model.reportType}&date=${model.date}&key=dumpLoss" data-status="dumpLoss" class="graph_link">[::show::]</a></td>
<td>gzip来不及压缩丢失消息数量</td>
<c:choose>
<c:when test="model.state.total.dumpLoss > 0 "><td style="color:red;">${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:when test="${model.state.total.dumpLoss > 0}"><td style="color:red;">${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:when>
<c:otherwise><td>${w:format(model.state.total.dumpLoss,'#,###,###,###,##0.#')}</td></c:otherwise>
</c:choose>
<td>将消息进行gzip压缩,gzip线程太忙而丢失消息丢失数目</td>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册