diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphBuilder.java b/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphBuilder.java index b4b27b9cc88d14df4670628d8b2456ebb59ebc1c..613307da63c38a0b21086fa8a096d8ab0e45ba1d 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphBuilder.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphBuilder.java @@ -1,14 +1,8 @@ package com.dianping.cat.report.page.network.nettopology; -import java.io.InputStream; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; - -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import com.dianping.cat.Cat; import com.dianping.cat.consumer.metric.model.entity.MetricItem; @@ -20,17 +14,8 @@ import com.dianping.cat.home.nettopo.entity.NetGraph; import com.dianping.cat.home.nettopo.entity.NetGraphSet; import com.dianping.cat.home.nettopo.entity.NetTopology; import com.dianping.cat.home.nettopo.entity.Switch; -import com.dianping.cat.home.nettopo.transform.DefaultSaxParser; - -public class NetGraphBuilder implements Initializable { - - private NetGraph m_netGraphTemplate; - private Set m_requireGroups; - - public Set buildRequireGroups() { - return m_requireGroups; - } +public class NetGraphBuilder { public NetGraphSet buildGraphSet(NetGraph netGraphTemplate, Map reports, List alertKeys) { NetGraphSet netGraphSet = new NetGraphSet(); @@ -183,27 +168,4 @@ public class NetGraphBuilder implements Initializable { } } - @Override - public void initialize() throws InitializationException { - InputStream is = NetGraphManager.class.getResourceAsStream("/config/default-nettopology-config.xml"); - NetGraphSet netGraphSet = null; - - try { - netGraphSet = DefaultSaxParser.parse(is); - m_netGraphTemplate = netGraphSet.getNetGraphs().get(0); - is.close(); - - m_requireGroups = new HashSet(); - - for (NetTopology netTopology : m_netGraphTemplate.getNetTopologies()) { - for (Connection connection : netTopology.getConnections()) { - for (Interface inter : connection.getInterfaces()) { - m_requireGroups.add(inter.getGroup()); - } - } - } - } catch (Exception e) { - Cat.logError(e); - } - } } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphManager.java b/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphManager.java index 518eda21ff366c7d8da6e7825f75f2cfd313944b..457fcf9af16c206b491fc8497dd6374c9d83c040 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphManager.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/network/nettopology/NetGraphManager.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -22,6 +23,8 @@ import com.dianping.cat.Constants; import com.dianping.cat.ServerConfigManager; import com.dianping.cat.consumer.metric.model.entity.MetricReport; import com.dianping.cat.helper.TimeUtil; +import com.dianping.cat.home.nettopo.entity.Connection; +import com.dianping.cat.home.nettopo.entity.Interface; import com.dianping.cat.home.nettopo.entity.NetGraph; import com.dianping.cat.home.nettopo.entity.NetGraphSet; import com.dianping.cat.home.nettopo.entity.NetTopology; @@ -105,11 +108,10 @@ public class NetGraphManager implements Initializable, LogEnabled { } } - private Map queryMetricReports(Date date) { - Set groupSet = m_netGraphBuilder.buildRequireGroups(); + private Map queryMetricReports(Set groups, Date date) { Map reports = new HashMap(); - for (String group : groupSet) { + for (String group : groups) { ModelRequest request = new ModelRequest(group, date.getTime()); MetricReport report = m_service.invoke(request); @@ -140,14 +142,24 @@ public class NetGraphManager implements Initializable, LogEnabled { Transaction t = Cat.newTransaction("NetGraph", "M" + minuteStr); try { - Map currentMetricReports = queryMetricReports(TimeUtil.getCurrentHour()); - List alertKeys = m_alertInfo.queryLastestAlarmKey(5); NetGraph netGraphTemplate = m_netGraphConfigManager.getConfig().getNetGraphs().get(0); + Set groups = new HashSet(); + + for (NetTopology netTopology : netGraphTemplate.getNetTopologies()) { + for (Connection connection : netTopology.getConnections()) { + for (Interface inter : connection.getInterfaces()) { + groups.add(inter.getGroup()); + } + } + } + + Map currentMetricReports = queryMetricReports(groups, TimeUtil.getCurrentHour()); + List alertKeys = m_alertInfo.queryLastestAlarmKey(5); m_currentNetGraphSet = m_netGraphBuilder.buildGraphSet(netGraphTemplate, currentMetricReports, alertKeys); Date lastHour = new Date(TimeUtil.getCurrentHour().getTime() - TimeUtil.ONE_HOUR); - Map lastHourReports = queryMetricReports(lastHour); + Map lastHourReports = queryMetricReports(groups, lastHour); m_lastNetGraphSet = m_netGraphBuilder.buildGraphSet(netGraphTemplate, lastHourReports, new ArrayList()); t.setStatus(Transaction.SUCCESS); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/network/NetTopologyReportBuilder.java b/cat-home/src/main/java/com/dianping/cat/report/task/network/NetTopologyReportBuilder.java index 26ee99c023e9360e7279fdb8619e668823ce126b..50b7f687f51886fab5c23a7087a1527170386fb5 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/network/NetTopologyReportBuilder.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/network/NetTopologyReportBuilder.java @@ -3,6 +3,7 @@ package com.dianping.cat.report.task.network; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -12,8 +13,11 @@ import com.dianping.cat.configuration.NetworkInterfaceManager; import com.dianping.cat.consumer.metric.model.entity.MetricReport; import com.dianping.cat.core.dal.HourlyReport; import com.dianping.cat.helper.TimeUtil; +import com.dianping.cat.home.nettopo.entity.Connection; +import com.dianping.cat.home.nettopo.entity.Interface; import com.dianping.cat.home.nettopo.entity.NetGraph; import com.dianping.cat.home.nettopo.entity.NetGraphSet; +import com.dianping.cat.home.nettopo.entity.NetTopology; import com.dianping.cat.home.nettopo.transform.DefaultNativeBuilder; import com.dianping.cat.report.page.network.nettopology.NetGraphBuilder; import com.dianping.cat.report.service.ReportService; @@ -38,7 +42,17 @@ public class NetTopologyReportBuilder implements ReportTaskBuilder { @Override public boolean buildHourlyTask(String name, String domain, Date period) { - Set groups = m_netGraphBuilder.buildRequireGroups(); + NetGraph netGraphTemplate = m_netGraphConfigManager.getConfig().getNetGraphs().get(0); + Set groups = new HashSet(); + + for (NetTopology netTopology : netGraphTemplate.getNetTopologies()) { + for (Connection connection : netTopology.getConnections()) { + for (Interface inter : connection.getInterfaces()) { + groups.add(inter.getGroup()); + } + } + } + Map reports = new HashMap(); for (String group : groups) { @@ -47,7 +61,7 @@ public class NetTopologyReportBuilder implements ReportTaskBuilder { reports.put(group, report); } - NetGraph netGraphTemplate = m_netGraphConfigManager.getConfig().getNetGraphs().get(0); + NetGraphSet netGraphSet = m_netGraphBuilder.buildGraphSet(netGraphTemplate, reports, new ArrayList()); HourlyReport hourlyReport = new HourlyReport(); diff --git a/cat-home/src/main/resources/config/default-nettopology-config.xml b/cat-home/src/main/resources/config/default-nettopology-config.xml index e1a8818dc03e57c102a7fb05f692d36c12c3d5b8..bb553280cc62734429e4d683a7b3ab22aeff0c08 100644 --- a/cat-home/src/main/resources/config/default-nettopology-config.xml +++ b/cat-home/src/main/resources/config/default-nettopology-config.xml @@ -1,372 +1,241 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file