Filter system topic while console dashboard was making topic statistics (#642)

Co-authored-by: zhangjidi2016 <zhangjidi@cmss.chinamobile.com>
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
index 329d8c9..7fc0fb2 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/task/DashboardCollectTask.java
@@ -23,6 +23,7 @@
 import org.apache.rocketmq.common.protocol.body.TopicList;
 import org.apache.rocketmq.common.protocol.route.BrokerData;
 import org.apache.rocketmq.common.protocol.route.TopicRouteData;
+import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.console.aspect.admin.annotation.MultiMQAdminCmdMethod;
 import org.apache.rocketmq.store.stats.BrokerStatsManager;
 import org.apache.rocketmq.tools.admin.MQAdminExt;
@@ -73,16 +74,19 @@
         if (!rmqConfigure.isEnableDashBoardCollect()) {
             return;
         }
+        
         Date date = new Date();
         Stopwatch stopwatch = Stopwatch.createUnstarted();
         try {
             TopicList topicList = mqAdminExt.fetchAllTopicList();
             Set<String> topicSet = topicList.getTopicList();
+            this.addSystemTopic();
             for (String topic : topicSet) {
-                if (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX) || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX)) {
+                if (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)
+                        || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX)
+                        || TopicValidator.isSystemTopic(topic)) {
                     continue;
                 }
-
                 TopicRouteData topicRouteData = mqAdminExt.examineTopicRouteInfo(topic);
 
                 GroupList groupList = mqAdminExt.queryTopicConsumeByWho(topic);
@@ -319,5 +323,17 @@
         }
         return newTpsList;
     }
-
+    
+    private void addSystemTopic() throws Exception {
+        ClusterInfo clusterInfo = mqAdminExt.examineBrokerClusterInfo();
+        HashMap<String, Set<String>> clusterTable = clusterInfo.getClusterAddrTable();
+        for(Map.Entry<String, Set<String>> entry : clusterTable.entrySet()){
+            String clusterName = entry.getKey();
+            TopicValidator.addSystemTopic(clusterName);
+            Set<String> brokerNames = entry.getValue();
+            for (String brokerName : brokerNames) {
+                TopicValidator.addSystemTopic(brokerName);
+            }
+        }
+    }
 }