From 08808af6de0c5f076412bc6591591491cae00363 Mon Sep 17 00:00:00 2001 From: "yong.you" Date: Fri, 7 Jun 2013 13:41:14 +0800 Subject: [PATCH] modify the dependency report --- .../cat/build/ComponentsConfigurator.java | 6 +- .../com/dianping/cat/helper/CatString.java | 2 + .../java/com/dianping/cat/helper/Parse.java | 12 ++ .../cat/report/page/dependency/Action.java | 12 +- .../cat/report/page/dependency/Handler.java | 153 ++++++++++-------- .../cat/report/page/dependency/JspFile.java | 8 +- .../cat/report/page/dependency/JspViewer.java | 10 +- .../cat/report/page/dependency/Model.java | 55 ++++++- .../cat/report/page/dependency/Payload.java | 27 +++- ...oardConfig.java => ProductLineConfig.java} | 19 ++- .../dashboard/ProductLineDashboard.java | 82 ++++++++++ ...dGraph.java => ProductLinesDashboard.java} | 10 +- .../graph/TopologyGraphManager.java | 38 +++-- .../dianping/cat/report/page/top/Payload.java | 22 +++ .../resources/META-INF/plexus/components.xml | 41 ++--- .../report/{ => dependency}/dependency.jsp | 11 +- .../{ => dependency}/dependencyDashboard.jsp | 19 ++- .../{ => dependency}/dependencyDetailData.jsp | 0 .../{ => dependency}/dependencyEvent.jsp | 0 .../{ => dependency}/dependencyLineGraph.jsp | 2 +- .../jsp/report/dependency/dependencyOpNav.jsp | 7 + .../dependency/dependencyProductLine.jsp | 98 +++++++++++ .../dependencyTimeNav.jsp} | 11 +- .../dependencyTopologyGraph.jsp | 15 +- .../jsp/report/dependencyDashboardNav.jsp | 25 --- .../jsp/report/dependencyTopologyGraphNav.jsp | 26 --- cat-home/src/main/webapp/jsp/report/top.jsp | 18 ++- .../jsp/system/topologyGraphEdgeConfigs.jsp | 6 +- .../jsp/system/topologyGraphNodeConfigs.jsp | 7 +- 29 files changed, 544 insertions(+), 198 deletions(-) create mode 100644 cat-home/src/main/java/com/dianping/cat/helper/Parse.java rename cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/{DashboardConfig.java => ProductLineConfig.java} (86%) create mode 100644 cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineDashboard.java rename cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/{DashboardGraph.java => ProductLinesDashboard.java} (80%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependency.jsp (86%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependencyDashboard.jsp (73%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependencyDetailData.jsp (100%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependencyEvent.jsp (100%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependencyLineGraph.jsp (97%) create mode 100644 cat-home/src/main/webapp/jsp/report/dependency/dependencyOpNav.jsp create mode 100644 cat-home/src/main/webapp/jsp/report/dependency/dependencyProductLine.jsp rename cat-home/src/main/webapp/jsp/report/{dependencyHeader.jsp => dependency/dependencyTimeNav.jsp} (63%) rename cat-home/src/main/webapp/jsp/report/{ => dependency}/dependencyTopologyGraph.jsp (87%) delete mode 100644 cat-home/src/main/webapp/jsp/report/dependencyDashboardNav.jsp delete mode 100644 cat-home/src/main/webapp/jsp/report/dependencyTopologyGraphNav.jsp diff --git a/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java b/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java index e61d31751..5d43fdd69 100755 --- a/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java +++ b/cat-home/src/main/java/com/dianping/cat/build/ComponentsConfigurator.java @@ -32,7 +32,7 @@ import com.dianping.cat.report.graph.DefaultValueTranslater; import com.dianping.cat.report.graph.GraphBuilder; import com.dianping.cat.report.graph.ValueTranslater; import com.dianping.cat.report.page.PayloadNormalizer; -import com.dianping.cat.report.page.dependency.dashboard.DashboardConfig; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig; import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder; import com.dianping.cat.report.page.dependency.graph.TopologyGraphConfigManger; import com.dianping.cat.report.page.dependency.graph.TopologyGraphItemBuilder; @@ -217,10 +217,10 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { // model service all.addAll(new ServiceComponentConfigurator().defineComponents()); - all.add(C(DashboardConfig.class)); + all.add(C(ProductLineConfig.class)); all.add(C(TopologyGraphManager.class).req(TopologyGraphBuilder.class, ServerConfigManager.class)// - .req(DashboardConfig.class).req(ModelService.class, "dependency")); + .req(ProductLineConfig.class).req(ModelService.class, "dependency")); // database all.add(C(JdbcDataSourceConfigurationManager.class) // diff --git a/cat-home/src/main/java/com/dianping/cat/helper/CatString.java b/cat-home/src/main/java/com/dianping/cat/helper/CatString.java index 5ba81398b..abef0f54c 100644 --- a/cat-home/src/main/java/com/dianping/cat/helper/CatString.java +++ b/cat-home/src/main/java/com/dianping/cat/helper/CatString.java @@ -29,5 +29,7 @@ public class CatString { public static final String SUCCESS = "Success"; public static final String FAIL = "Fail"; + + public static final String TUAN_TOU = "TuanGou"; } diff --git a/cat-home/src/main/java/com/dianping/cat/helper/Parse.java b/cat-home/src/main/java/com/dianping/cat/helper/Parse.java new file mode 100644 index 000000000..2ff88df1e --- /dev/null +++ b/cat-home/src/main/java/com/dianping/cat/helper/Parse.java @@ -0,0 +1,12 @@ +package com.dianping.cat.helper; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface Parse { + + public double[] compute(Map> datas); + + public void setDateNoUse(Date start,Date end); +} diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Action.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Action.java index 117599651..85f3c79a1 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Action.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Action.java @@ -1,11 +1,13 @@ package com.dianping.cat.report.page.dependency; public enum Action implements org.unidal.web.mvc.Action { - VIEW("view"), - - GRAPH("dependencyGraph"), - - DASHBOARD("dashboard"),; + LINE_CHART("view"), + + TOPOLOGY("dependencyGraph"), + + DASHBOARD("dashboard"), + + PRODUCT_LINE("productLine"); private String m_name; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java index 6a89014c4..b1aa769ad 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Handler.java @@ -37,7 +37,9 @@ import com.dianping.cat.home.dependency.graph.transform.DefaultJsonBuilder; import com.dianping.cat.report.ReportPage; import com.dianping.cat.report.page.LineChart; import com.dianping.cat.report.page.PayloadNormalizer; -import com.dianping.cat.report.page.dependency.dashboard.DashboardGraph; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineDashboard; +import com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard; import com.dianping.cat.report.page.dependency.graph.GraphConstrant; import com.dianping.cat.report.page.dependency.graph.LineGraphBuilder; import com.dianping.cat.report.page.dependency.graph.TopologyGraphManager; @@ -48,6 +50,7 @@ import com.dianping.cat.report.page.model.spi.ModelResponse; import com.dianping.cat.report.page.model.spi.ModelService; public class Handler implements PageHandler { + @Inject(type = ModelService.class, value = "dependency") private ModelService m_dependencyService; @@ -60,18 +63,21 @@ public class Handler implements PageHandler { @Inject private JspViewer m_jspViewer; + private Set m_nodes; + @Inject private PayloadNormalizer m_normalizePayload; @Inject(type = ModelService.class, value = "problem") private ModelService m_problemservice; - - private Set m_nodes; - private SimpleDateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH"); + @Inject + private ProductLineConfig m_productLineConfig; private SimpleDateFormat m_sdf = new SimpleDateFormat("HH:mm"); + private SimpleDateFormat m_dateFormat = new SimpleDateFormat("yyyyMMddHH"); + private Segment buildAllSegmentInfo(DependencyReport report) { Segment result = new Segment(); Map segments = report.getSegments(); @@ -94,39 +100,6 @@ public class Handler implements PageHandler { return result; } - private void buildDashboardErrorInfo(DashboardGraph dashboardGraph, Model model, Payload payload) { - Map> nodes = dashboardGraph.getNodes(); - Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute()); - - for (Entry> entry : nodes.entrySet()) { - for (Node node : entry.getValue()) { - String domain = node.getId(); - List events = m_eventManager.queryEvents(domain, reportTime); - - node.setLink(buildLink(payload, model, domain)); - - if (events != null && events.size() > 0) { - if (node.getStatus() == GraphConstrant.OK) { - node.setStatus(GraphConstrant.OP_ERROR); - } - node.setDes(node.getDes() + buildZabbixHeader(payload, model)); - - StringBuilder sb = new StringBuilder(); - for (Event event : events) { - sb.append(m_sdf.format(event.getDate())).append((" ")); - sb.append(event.getSubject()).append(GraphConstrant.ENTER); - } - node.setDes(node.getDes() + sb.toString()); - } - if (node.getStatus() != GraphConstrant.OK) { - String exceptionInfo = buildProblemInfo(domain, payload); - - node.setDes(node.getDes() + exceptionInfo); - } - } - } - } - private void buildExceptionInfoOnGraph(Payload payload, Model model, TopologyGraph graph) { if (graph.getStatus() != GraphConstrant.OK) { String problemInfo = buildProblemInfo(graph.getId(), payload); @@ -184,24 +157,6 @@ public class Handler implements PageHandler { } } - private List buildGraphList(List charts) { - List result = new ArrayList(); - - for (LineChart temp : charts) { - result.add(temp.getJsonString()); - } - return result; - } - - private Map> buildGraphMap(Map> charts) { - Map> result = new HashMap>(); - - for (Entry> temp : charts.entrySet()) { - result.put(temp.getKey(), buildGraphList(temp.getValue())); - } - return result; - } - private void buildHourlyLineGraph(DependencyReport report, Model model) { LineGraphBuilder builder = new LineGraphBuilder(); @@ -210,8 +165,8 @@ public class Handler implements PageHandler { List index = builder.queryIndex(); Map> dependencys = builder.queryDependencyGraph(); - model.setIndexGraph(buildGraphList(index)); - model.setDependencyGraph(buildGraphMap(dependencys)); + model.setIndexGraph(buildLineChartGraphs(index)); + model.setDependencyGraph(buildLineChartGraphMap(dependencys)); } private void buildHourlyReport(DependencyReport report, Model model, Payload payload) { @@ -225,11 +180,56 @@ public class Handler implements PageHandler { } } + private Map> buildLineChartGraphMap(Map> charts) { + Map> result = new HashMap>(); + + for (Entry> temp : charts.entrySet()) { + result.put(temp.getKey(), buildLineChartGraphs(temp.getValue())); + } + return result; + } + + private List buildLineChartGraphs(List charts) { + List result = new ArrayList(); + + for (LineChart temp : charts) { + result.add(temp.getJsonString()); + } + return result; + } + private String buildLink(Payload payload, Model model, String domain) { return String.format("?op=dependencyGraph&minute=%s&domain=%s&date=%s", model.getMinute(), domain, m_dateFormat.format(new Date(payload.getDate()))); } + private void buildNodeErrorInfo(Node node, Model model, Payload payload) { + Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute()); + String domain = node.getId(); + List events = m_eventManager.queryEvents(domain, reportTime); + + node.setLink(buildLink(payload, model, domain)); + + if (events != null && events.size() > 0) { + if (node.getStatus() == GraphConstrant.OK) { + node.setStatus(GraphConstrant.OP_ERROR); + } + node.setDes(node.getDes() + buildZabbixHeader(payload, model)); + + StringBuilder sb = new StringBuilder(); + for (Event event : events) { + sb.append(m_sdf.format(event.getDate())).append((" ")); + sb.append(event.getSubject()).append(GraphConstrant.ENTER); + } + node.setDes(node.getDes() + sb.toString()); + } + if (node.getStatus() != GraphConstrant.OK) { + String exceptionInfo = buildProblemInfo(domain, payload); + + node.setDes(node.getDes() + exceptionInfo); + } + } + private String buildProblemInfo(String domain, Payload payload) { ProblemReport report = queryProblemReport(payload, domain); ExceptionInfoBuilder visitor = new ExceptionInfoBuilder(); @@ -283,7 +283,7 @@ public class Handler implements PageHandler { Date reportTime = new Date(payload.getDate() + TimeUtil.ONE_MINUTE * model.getMinute()); DependencyReport report = queryDependencyReport(payload); switch (action) { - case GRAPH: + case TOPOLOGY: TopologyGraph topologyGraph = m_graphManager.buildGraphByDomainTime(model.getDomain(), reportTime.getTime()); Map> graphDependency = parseDependencies(topologyGraph); Map> externalErrors = queryDependencyEvent(graphDependency, model.getDomain(), reportTime); @@ -293,9 +293,11 @@ public class Handler implements PageHandler { m_nodes = new HashSet(); buildExternalErrorOnGraph(topologyGraph, buildZabbixHeader(payload, model), externalErrors); buildExceptionInfoOnGraph(payload, model, topologyGraph); + model.setReportStart(new Date(payload.getDate())); + model.setReportEnd(new Date(payload.getDate() + TimeUtil.ONE_MINUTE - 1)); model.setTopologyGraph(new DefaultJsonBuilder().buildJson(topologyGraph)); break; - case VIEW: + case LINE_CHART: buildHourlyReport(report, model, payload); buildHourlyLineGraph(report, model); @@ -305,10 +307,36 @@ public class Handler implements PageHandler { model.setEvents(queryDependencyEvent(dependency, model.getDomain(), reportTime)); break; case DASHBOARD: - DashboardGraph dashboardGraph = m_graphManager.buildDashboardGraph(reportTime.getTime()); + ProductLinesDashboard dashboardGraph = m_graphManager.buildDashboardGraph(reportTime.getTime()); + Map> dashboardNodes = dashboardGraph.getNodes(); - buildDashboardErrorInfo(dashboardGraph, model, payload); + for (Entry> entry : dashboardNodes.entrySet()) { + for (Node node : entry.getValue()) { + buildNodeErrorInfo(node, model, payload); + } + } + model.setReportStart(new Date(payload.getDate())); + model.setReportEnd(new Date(payload.getDate() + TimeUtil.ONE_MINUTE - 1)); model.setDashboardGraph(dashboardGraph.toJson()); + model.setDashboardGraphData(dashboardGraph); + break; + case PRODUCT_LINE: + String productLine = payload.getProductLine(); + if(StringUtil.isEmpty(productLine)){ + payload.setProductLine(CatString.TUAN_TOU); + productLine=CatString.TUAN_TOU; + } + ProductLineDashboard productLineGraph = m_graphManager.buildProductLineGraph(productLine, + reportTime.getTime()); + List productLineNodes = productLineGraph.getNodes(); + + for (Node node : productLineNodes) { + buildNodeErrorInfo(node, model, payload); + } + model.setReportStart(new Date(payload.getDate())); + model.setReportEnd(new Date(payload.getDate() + TimeUtil.ONE_MINUTE - 1)); + model.setProductLineGraph(productLineGraph.toJson()); + model.setProductLines(new ArrayList(m_productLineConfig.queryProductLines())); break; } m_jspViewer.view(ctx, model); @@ -316,7 +344,7 @@ public class Handler implements PageHandler { private void normalize(Model model, Payload payload) { model.setPage(ReportPage.DEPENDENCY); - model.setAction(Action.VIEW); + model.setAction(Action.LINE_CHART); m_normalizePayload.normalize(model, payload); @@ -353,7 +381,6 @@ public class Handler implements PageHandler { targets.add(target); } } - return results; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspFile.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspFile.java index 67c45fa57..1593fd65d 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspFile.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspFile.java @@ -1,11 +1,13 @@ package com.dianping.cat.report.page.dependency; public enum JspFile { - VIEW("/jsp/report/dependency.jsp"), + LINE_CHART("/jsp/report/dependency/dependency.jsp"), - GRAPH("/jsp/report/dependencyTopologyGraph.jsp"), + TOPOLOGY("/jsp/report/dependency/dependencyTopologyGraph.jsp"), - DASHBOARD("/jsp/report/dependencyDashboard.jsp"), + DASHBOARD("/jsp/report/dependency/dependencyDashboard.jsp"), + + PRODUCT_LINE("/jsp/report/dependency/dependencyProductLine.jsp"), ; diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspViewer.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspViewer.java index 00d4b7895..6ad9cca48 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspViewer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/JspViewer.java @@ -10,12 +10,14 @@ public class JspViewer extends BaseJspViewer Action action = model.getAction(); switch (action) { - case VIEW: - return JspFile.VIEW.getPath(); - case GRAPH: - return JspFile.GRAPH.getPath(); + case LINE_CHART: + return JspFile.LINE_CHART.getPath(); + case TOPOLOGY: + return JspFile.TOPOLOGY.getPath(); case DASHBOARD: return JspFile.DASHBOARD.getPath(); + case PRODUCT_LINE: + return JspFile.PRODUCT_LINE.getPath(); } throw new RuntimeException("Unknown action: " + action); diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java index 1cc7de958..fa5f6addd 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Model.java @@ -2,6 +2,7 @@ package com.dianping.cat.report.page.dependency; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -13,6 +14,7 @@ import com.dianping.cat.consumer.dependency.model.entity.DependencyReport; import com.dianping.cat.consumer.dependency.model.entity.Segment; import com.dianping.cat.home.dal.report.Event; import com.dianping.cat.report.page.AbstractReportModel; +import com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard; import com.dianping.cat.report.view.StringSortHelper; @ModelMeta("dependecy") @@ -37,7 +39,49 @@ public class Model extends AbstractReportModel { private Map> m_dependencyGraph; private String m_dashboardGraph; + + private ProductLinesDashboard m_dashboardGraphData; + + private List m_productLines; + + private String m_productLineGraph; + + private Date m_reportStart; + private Date m_reportEnd; + + public List getProductLines() { + return m_productLines; + } + + public void setProductLines(List productLines) { + m_productLines = productLines; + } + + public String getProductLineGraph() { + return m_productLineGraph; + } + + public void setProductLineGraph(String productLineGraph) { + m_productLineGraph = productLineGraph; + } + + public Date getReportStart() { + return m_reportStart; + } + + public void setReportStart(Date reportStart) { + m_reportStart = reportStart; + } + + public Date getReportEnd() { + return m_reportEnd; + } + + public void setReportEnd(Date reportEnd) { + m_reportEnd = reportEnd; + } + public String getDashboardGraph() { return m_dashboardGraph; } @@ -84,7 +128,7 @@ public class Model extends AbstractReportModel { @Override public Action getDefaultAction() { - return Action.VIEW; + return Action.LINE_CHART; } @Override @@ -146,4 +190,13 @@ public class Model extends AbstractReportModel { m_topologyGraph = topologyGraph; } + public ProductLinesDashboard getDashboardGraphData() { + return m_dashboardGraphData; + } + + public void setDashboardGraphData(ProductLinesDashboard dashboardGraphData) { + m_dashboardGraphData = dashboardGraphData; + } + + } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Payload.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Payload.java index eb944982f..88f3b353a 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Payload.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/Payload.java @@ -8,15 +8,18 @@ import com.dianping.cat.report.page.AbstractReportPayload; public class Payload extends AbstractReportPayload { @FieldMeta("minute") - private String minute; + private String m_minute; @FieldMeta("all") - private boolean all; + private boolean m_all; private ReportPage m_page; @FieldMeta("op") private Action m_action; + + @FieldMeta("productLine") + private String productLine; public Payload() { super(ReportPage.DEPENDENCY); @@ -28,7 +31,7 @@ public class Payload extends AbstractReportPayload { } public String getMinute() { - return minute; + return m_minute; } @Override @@ -37,11 +40,11 @@ public class Payload extends AbstractReportPayload { } public void setAction(String action) { - m_action = Action.getByName(action, Action.VIEW); + m_action = Action.getByName(action, Action.LINE_CHART); } public void setMinute(String minute) { - this.minute = minute; + this.m_minute = minute; } @Override @@ -52,16 +55,24 @@ public class Payload extends AbstractReportPayload { @Override public void validate(ActionContext ctx) { if (m_action == null) { - m_action = Action.VIEW; + m_action = Action.LINE_CHART; } } public boolean isAll() { - return all; + return m_all; } public void setAll(boolean all) { - this.all = all; + this.m_all = all; + } + + public String getProductLine() { + return productLine; + } + + public void setProductLine(String productLine) { + this.productLine = productLine; } } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardConfig.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineConfig.java similarity index 86% rename from cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardConfig.java rename to cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineConfig.java index b50532840..9581eb5fa 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardConfig.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineConfig.java @@ -2,26 +2,31 @@ package com.dianping.cat.report.page.dependency.dashboard; import java.util.ArrayList; import java.util.HashSet; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; -public class DashboardConfig implements Initializable { +public class ProductLineConfig implements Initializable { - private Map m_groups = new LinkedHashMap(); + private Map m_groups = new TreeMap(); private Set m_allDomains = new HashSet(); - - public boolean contains(String domain){ + + public Set queryProductLines() { + return m_groups.keySet(); + } + + public boolean contains(String domain) { return m_allDomains.contains(domain); } + public Map getGroups() { - return m_groups; - } + return m_groups; + } @Override public void initialize() throws InitializationException { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineDashboard.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineDashboard.java new file mode 100644 index 000000000..530a34c41 --- /dev/null +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLineDashboard.java @@ -0,0 +1,82 @@ +package com.dianping.cat.report.page.dependency.dashboard; + +import java.util.ArrayList; +import java.util.List; + +import com.dianping.cat.home.dependency.graph.entity.Node; +import com.dianping.cat.report.page.dependency.graph.GraphConstrant; +import com.google.gson.Gson; + +public class ProductLineDashboard { + + private String id; + + private String type = GraphConstrant.PROJECT; + + private int status; + + private String des; + + private List nodes = new ArrayList(); + + public ProductLineDashboard(String productLine) { + id = productLine; + } + + public ProductLineDashboard addNode(Node node) { + nodes.add(node); + + return this; + } + + public List getNodes() { + return nodes; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getDes() { + return des; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public void setDes(String des) { + this.des = des; + } + + public List getPoints() { + return nodes; + } + + public void setPoints(List points) { + this.nodes = points; + } + + public String toJson() { + String str = new Gson().toJson(this); + str = str.replaceAll("\"m_", "\""); + str = str.replaceAll("\"nodes\"", "\"points\""); + return str; + } +} diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardGraph.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLinesDashboard.java similarity index 80% rename from cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardGraph.java rename to cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLinesDashboard.java index 63398f0bf..e071c41fd 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/DashboardGraph.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/dashboard/ProductLinesDashboard.java @@ -9,7 +9,7 @@ import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.Edge; import com.google.gson.Gson; -public class DashboardGraph { +public class ProductLinesDashboard { private Map> productLines = new LinkedHashMap>(); @@ -18,14 +18,16 @@ public class DashboardGraph { private transient Map temp = new LinkedHashMap(); public String toJson() { - return new Gson().toJson(this); + String str = new Gson().toJson(this); + str = str.replaceAll("\"m_", "\""); + return str; } public boolean exsit(Node node) { return temp.containsKey(node.getId()); } - public DashboardGraph addNode(String productLine, Node node) { + public ProductLinesDashboard addNode(String productLine, Node node) { List nodeList = productLines.get(productLine); if (nodeList == null) { @@ -37,7 +39,7 @@ public class DashboardGraph { return this; } - public DashboardGraph addEdge(Edge edge) { + public ProductLinesDashboard addEdge(Edge edge) { edges.add(edge); return this; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java index a9556af29..13d25ace5 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/dependency/graph/TopologyGraphManager.java @@ -18,16 +18,16 @@ import org.unidal.lookup.annotation.Inject; import com.dianping.cat.Cat; import com.dianping.cat.configuration.ServerConfigManager; import com.dianping.cat.consumer.dependency.model.entity.DependencyReport; -import com.dianping.cat.home.dependency.graph.transform.BaseVisitor; import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.home.dependency.graph.entity.Edge; import com.dianping.cat.home.dependency.graph.entity.Node; import com.dianping.cat.home.dependency.graph.entity.TopologyGraph; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; -import com.dianping.cat.report.page.dependency.dashboard.DashboardConfig; -import com.dianping.cat.report.page.dependency.dashboard.DashboardConfig.Group; -import com.dianping.cat.report.page.dependency.dashboard.DashboardGraph; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig.Group; +import com.dianping.cat.report.page.dependency.dashboard.ProductLineDashboard; +import com.dianping.cat.report.page.dependency.dashboard.ProductLinesDashboard; 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; @@ -46,7 +46,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled { private ServerConfigManager m_manager; @Inject - private DashboardConfig m_dashboardConfig; + private ProductLineConfig m_productLineConfig; private Map m_topologyGraphs = new ConcurrentHashMap(360); @@ -54,12 +54,32 @@ public class TopologyGraphManager implements Initializable, LogEnabled { private static final String DEPENDENCY = "Dependency"; - public DashboardGraph buildDashboardGraph(long time) { + public ProductLineDashboard buildProductLineGraph(String productLine, long time) { TopologyGraph topologyGraph = queryGraph(time); - DashboardGraph dashboardGraph = new DashboardGraph(); + ProductLineDashboard dashboard = new ProductLineDashboard(productLine); + Group group = m_productLineConfig.getGroups().get(productLine); + if (group != null) { + List domains = group.getDomains(); + + if (topologyGraph != null) { + for (String domain : domains) { + Node node = topologyGraph.findNode(domain); + + if (node != null) { + dashboard.addNode(m_graphBuilder.cloneNode(node)); + } + } + } + } + return dashboard; + } + + public ProductLinesDashboard buildDashboardGraph(long time) { + TopologyGraph topologyGraph = queryGraph(time); + ProductLinesDashboard dashboardGraph = new ProductLinesDashboard(); if (topologyGraph != null) { - Map groups = m_dashboardConfig.getGroups(); + Map groups = m_productLineConfig.getGroups(); for (Entry entry : groups.entrySet()) { String groupName = entry.getKey(); @@ -79,7 +99,7 @@ public class TopologyGraphManager implements Initializable, LogEnabled { String self = edge.getSelf(); String to = edge.getTarget(); - if (m_dashboardConfig.contains(self) && m_dashboardConfig.contains(to)) { + if (m_productLineConfig.contains(self) && m_productLineConfig.contains(to)) { dashboardGraph.addEdge(m_graphBuilder.cloneEdge(edge)); } } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/top/Payload.java b/cat-home/src/main/java/com/dianping/cat/report/page/top/Payload.java index 5417fc66b..d2d040b76 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/top/Payload.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/top/Payload.java @@ -14,10 +14,32 @@ public class Payload extends AbstractReportPayload { @FieldMeta("count") private int m_count; + + @FieldMeta("second") + private int m_second; + + @FieldMeta("refresh") + private boolean m_refresh; + + public int getSecond() { + return m_second; + } + + public void setSecond(int second) { + m_second = second; + } public Payload() { super(ReportPage.TOP); } + + public boolean getRefresh() { + return m_refresh; + } + + public void setRefresh(boolean refresh) { + m_refresh = refresh; + } @Override public Action getAction() { diff --git a/cat-home/src/main/resources/META-INF/plexus/components.xml b/cat-home/src/main/resources/META-INF/plexus/components.xml index 9954aeacd..4f1be90c2 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -1194,8 +1194,8 @@ - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig com.dianping.cat.report.page.dependency.graph.TopologyGraphManager @@ -1208,7 +1208,7 @@ com.dianping.cat.configuration.ServerConfigManager - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig com.dianping.cat.report.page.model.spi.ModelService @@ -2529,35 +2529,29 @@ com.dianping.cat.report.page.dependency.Handler - com.dianping.cat.report.page.dependency.JspViewer + com.dianping.cat.report.page.model.spi.ModelService + dependency + m_dependencyService com.dianping.cat.report.page.externalError.EventCollectManager - com.dianping.cat.report.page.model.spi.ModelService - dependency - m_dependencyService + com.dianping.cat.report.page.dependency.graph.TopologyGraphManager - com.dianping.cat.report.page.PayloadNormalizer + com.dianping.cat.report.page.dependency.JspViewer - com.dianping.cat.report.page.dependency.graph.TopologyGraphManager + com.dianping.cat.report.page.PayloadNormalizer com.dianping.cat.report.page.model.spi.ModelService problem m_problemservice - - - - com.dianping.cat.report.page.dependency.JspViewer - com.dianping.cat.report.page.dependency.JspViewer - - org.unidal.web.mvc.view.model.ModelHandler + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig @@ -2598,7 +2592,7 @@ com.dianping.cat.configuration.ServerConfigManager - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig @@ -2607,8 +2601,17 @@ com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig - com.dianping.cat.report.page.dependency.dashboard.DashboardConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig + com.dianping.cat.report.page.dependency.dashboard.ProductLineConfig + + + com.dianping.cat.report.page.dependency.JspViewer + com.dianping.cat.report.page.dependency.JspViewer + + + org.unidal.web.mvc.view.model.ModelHandler + + com.dianping.cat.report.page.externalError.Handler diff --git a/cat-home/src/main/webapp/jsp/report/dependency.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependency.jsp similarity index 86% rename from cat-home/src/main/webapp/jsp/report/dependency.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependency.jsp index 704fa2a3f..62ddda0aa 100644 --- a/cat-home/src/main/webapp/jsp/report/dependency.jsp +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependency.jsp @@ -22,15 +22,14 @@
- 切换到实时拓扑图 - 切换到产品线监控大盘 + <%@ include file="dependencyOpNav.jsp" %>
@@ -47,7 +46,7 @@ ${model.minute}分钟
- <%@ include file="dependencyHeader.jsp" %> + <%@ include file="dependencyTimeNav.jsp" %>
<%@ include file="dependencyDetailData.jsp"%> diff --git a/cat-home/src/main/webapp/jsp/report/dependencyDashboard.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyDashboard.jsp similarity index 73% rename from cat-home/src/main/webapp/jsp/report/dependencyDashboard.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyDashboard.jsp index 830f487cc..c5cd402b6 100644 --- a/cat-home/src/main/webapp/jsp/report/dependencyDashboard.jsp +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyDashboard.jsp @@ -9,7 +9,7 @@ - From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')} + From ${w:format(model.reportStart,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.reportEnd,'yyyy-MM-dd HH:mm:ss')} @@ -20,7 +20,22 @@
- <%@ include file="dependencyDashboardNav.jsp"%> +
+
+ <%@ include file="dependencyOpNav.jsp"%> + <%@ include file="dependencyTimeNav.jsp"%> +
+
+ +
+
+
+
+
+
diff --git a/cat-home/src/main/webapp/jsp/report/dependencyDetailData.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyDetailData.jsp similarity index 100% rename from cat-home/src/main/webapp/jsp/report/dependencyDetailData.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyDetailData.jsp diff --git a/cat-home/src/main/webapp/jsp/report/dependencyEvent.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyEvent.jsp similarity index 100% rename from cat-home/src/main/webapp/jsp/report/dependencyEvent.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyEvent.jsp diff --git a/cat-home/src/main/webapp/jsp/report/dependencyLineGraph.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyLineGraph.jsp similarity index 97% rename from cat-home/src/main/webapp/jsp/report/dependencyLineGraph.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyLineGraph.jsp index ff9c89e67..c50118fae 100644 --- a/cat-home/src/main/webapp/jsp/report/dependencyLineGraph.jsp +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyLineGraph.jsp @@ -24,7 +24,7 @@

当前小时内项目依赖指标趋势图

- + diff --git a/cat-home/src/main/webapp/jsp/report/dependency/dependencyOpNav.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyOpNav.jsp new file mode 100644 index 000000000..5b2391e25 --- /dev/null +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyOpNav.jsp @@ -0,0 +1,7 @@ +<%@ page contentType="text/html; charset=utf-8" %> + \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/dependency/dependencyProductLine.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyProductLine.jsp new file mode 100644 index 000000000..8dc94f8df --- /dev/null +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyProductLine.jsp @@ -0,0 +1,98 @@ +<%@ page contentType="text/html; charset=utf-8" %> +<%@ taglib prefix="a" uri="/WEB-INF/app.tld"%> +<%@ taglib prefix="w" uri="http://www.unidal.org/web/core"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="res" uri="http://www.unidal.org/webres"%> + + + + + + From ${w:format(model.reportStart,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.reportEnd,'yyyy-MM-dd HH:mm:ss')} + + + + + + + + + +
+
+ <%@ include file="dependencyOpNav.jsp" %> + <%@ include file="dependencyTimeNav.jsp"%> +
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/cat-home/src/main/webapp/jsp/report/dependencyHeader.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyTimeNav.jsp similarity index 63% rename from cat-home/src/main/webapp/jsp/report/dependencyHeader.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyTimeNav.jsp index 60c54fbbf..97cbbc441 100644 --- a/cat-home/src/main/webapp/jsp/report/dependencyHeader.jsp +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyTimeNav.jsp @@ -5,12 +5,12 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/dependencyTopologyGraph.jsp b/cat-home/src/main/webapp/jsp/report/dependency/dependencyTopologyGraph.jsp similarity index 87% rename from cat-home/src/main/webapp/jsp/report/dependencyTopologyGraph.jsp rename to cat-home/src/main/webapp/jsp/report/dependency/dependencyTopologyGraph.jsp index b4dc8a874..3660a1980 100644 --- a/cat-home/src/main/webapp/jsp/report/dependencyTopologyGraph.jsp +++ b/cat-home/src/main/webapp/jsp/report/dependency/dependencyTopologyGraph.jsp @@ -9,7 +9,7 @@ - From ${w:format(model.report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.report.endTime,'yyyy-MM-dd HH:mm:ss')} + From ${w:format(model.reportStart,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.reportEnd,'yyyy-MM-dd HH:mm:ss')} @@ -20,12 +20,16 @@
- <%@ include file="dependencyTopologyGraphNav.jsp"%> +
+
+ <%@ include file="dependencyOpNav.jsp"%> + <%@ include file="dependencyTimeNav.jsp"%> +
@@ -53,6 +57,7 @@ }); $('#minute'+${model.minute}).addClass('disabled'); + $('#minute'+${model.minute}).addClass('text-error'); $('#zabbixTab0').addClass('active'); $('#leftTab0').addClass('active'); $('.contents').dataTable({ diff --git a/cat-home/src/main/webapp/jsp/report/dependencyDashboardNav.jsp b/cat-home/src/main/webapp/jsp/report/dependencyDashboardNav.jsp deleted file mode 100644 index 8a90e4424..000000000 --- a/cat-home/src/main/webapp/jsp/report/dependencyDashboardNav.jsp +++ /dev/null @@ -1,25 +0,0 @@ -<%@ page contentType="text/html; charset=utf-8" %> - - \ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/dependencyTopologyGraphNav.jsp b/cat-home/src/main/webapp/jsp/report/dependencyTopologyGraphNav.jsp deleted file mode 100644 index 8f6359879..000000000 --- a/cat-home/src/main/webapp/jsp/report/dependencyTopologyGraphNav.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page contentType="text/html; charset=utf-8" %> - -
- (当前分钟:${model.minute})切换到实时趋势图 - 切换到产品线监控大盘 - - - - - -
\ No newline at end of file diff --git a/cat-home/src/main/webapp/jsp/report/top.jsp b/cat-home/src/main/webapp/jsp/report/top.jsp index c37127669..f938807dd 100644 --- a/cat-home/src/main/webapp/jsp/report/top.jsp +++ b/cat-home/src/main/webapp/jsp/report/top.jsp @@ -14,11 +14,22 @@ border-collapse: collapse; border-spacing: 0; } - + +

${charts.key}

${charts.key}

@@ -32,6 +43,11 @@
+