You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ma...@apache.org on 2023/03/13 08:59:12 UTC

[iotdb] branch IOTDB-5663 updated (c630fb98f5 -> e5d7d87cc5)

This is an automated email from the ASF dual-hosted git repository.

marklau99 pushed a change to branch IOTDB-5663
in repository https://gitbox.apache.org/repos/asf/iotdb.git


 discard c630fb98f5 add connection metrics
    omit 1451f2ba33 fix code smell
    omit f1f5ef2f67 fix code smell
    omit 8ccd837719 add dashboard
    omit 8092301cea implement LinuxNetMetricManager
    omit ed4f5788fe define the interface
     add fd6d5fd498 [IOTDB-5627] Optimize Schedule related metrics and Update Performance Overview Dashboard (#9223)
     add eb7095ecf8 [grafana-plugin] Preparing grafana-plugin launching in Grafana Marketplace: serveral bug fixes & code optimization (#9293)
     add e1cda9bd04 [IOTDB-5650] Pipe Plugin Coordinator: From SQL to ConfigNode (#9254)
     add 5a87a02d9b Modify docs of write metric (#9232)
     add e9af4e89ae [IOTDB-5656] subscription-api (#9263)
     add d7aa66e307 [IOTDB-5663] Add network metric (#9298)
     add b5bb109f0f [IOTDB-2569]Support ZSTD Compression (#9231)
     new e5d7d87cc5 add connection metrics

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (c630fb98f5)
            \
             N -- N -- N   refs/heads/IOTDB-5663 (e5d7d87cc5)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 LICENSE-binary                                     |     5 +
 client-cpp/src/main/Session.h                      |     3 +-
 client-py/iotdb/utils/IoTDBConstants.py            |     1 +
 confignode/pom.xml                                 |     5 +
 .../confignode/client/DataNodeRequestType.java     |     4 +
 .../consensus/request/ConfigPhysicalPlanType.java  |     8 +-
 .../read/pipe/plugin/GetPipePluginJarPlan.java     |    66 +
 .../read/pipe/plugin/GetPipePluginTablePlan.java   |    42 +
 .../write/pipe/plugin/CreatePipePluginPlan.java    |    72 +
 .../write/pipe/plugin/DropPipePluginPlan.java      |    56 +
 .../response/pipe/plugin/PipePluginTableResp.java  |    49 +
 .../iotdb/confignode/manager/ConfigManager.java    |    34 +-
 .../apache/iotdb/confignode/manager/IManager.java  |     3 +
 .../iotdb/confignode/manager/pipe/PipeManager.java |    42 +
 .../manager/pipe/PipePluginCoordinator.java        |   209 +
 .../persistence/executor/ConfigPlanExecutor.java   |    20 +-
 .../confignode/persistence/pipe/PipeInfo.java      |    48 +
 .../persistence/pipe/PipePluginInfo.java           |   214 +
 .../consensus/iot/IoTConsensusServerImpl.java      |    11 +
 .../ratis/ApplicationStateMachineProxy.java        |    19 +
 .../iotdb/consensus/simple/SimpleConsensus.java    |    15 +
 docs/UserGuide/Data-Concept/Compression.md         |     2 +
 docs/UserGuide/Ecosystem-Integration/NiFi-IoTDB.md |     2 +-
 ...pache-IoTDB-Performance-Overview-Dashboard.json |  1518 ++-
 docs/UserGuide/Monitor-Alert/Metric-Tool.md        |    72 +-
 docs/UserGuide/Reference/Common-Config-Manual.md   |    12 +-
 docs/zh/UserGuide/Data-Concept/Compression.md      |     1 +
 .../UserGuide/Ecosystem-Integration/NiFi-IoTDB.md  |     2 +-
 docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md     |   111 +-
 .../zh/UserGuide/Reference/Common-Config-Manual.md |    12 +-
 grafana-plugin/pkg/main.go                         |     2 +-
 .../pkg/plugin/iotdb_resource_handler.go           |    26 +-
 grafana-plugin/pkg/plugin/plugin.go                |   228 +-
 grafana-plugin/src/ConfigEditor.tsx                |    50 +-
 grafana-plugin/src/QueryEditor.tsx                 |    12 +-
 grafana-plugin/src/datasource.ts                   |    19 +-
 grafana-plugin/src/types.ts                        |     1 +
 grafana-plugin/yarn.lock                           | 11545 ++++++++-----------
 .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java   |     1 +
 node-commons/pom.xml                               |     5 +
 .../resources/conf/iotdb-common.properties         |     2 +-
 .../meta/ConfigNodePipePluginMetaKeeper.java       |   108 +
 .../plugin/meta/DataNodePipePluginMetaKeeper.java  |    53 +
 .../commons/pipe/plugin/meta/PipePluginMeta.java   |    86 +-
 .../pipe/plugin/meta/PipePluginMetaKeeper.java     |    52 +
 .../service/PipePluginExecutableManager.java       |    46 +-
 .../iotdb/commons/service/metric/enums/Metric.java |     3 +
 .../metric/enums}/PerformanceOverviewMetrics.java  |    86 +-
 .../org/apache/iotdb/pipe/api/PipeConnector.java   |     2 +-
 .../java/org/apache/iotdb/pipe/api/PipePlugin.java |    22 +
 .../org/apache/iotdb/pipe/api/PipeProcessor.java   |     2 +-
 .../api/exception/PipeManagementException.java     |    32 +
 pom.xml                                            |     7 +
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |     2 +-
 .../statemachine/DataRegionStateMachine.java       |     8 +-
 .../IoTConsensusDataRegionStateMachine.java        |     8 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |   127 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |    77 +-
 .../db/mpp/common/header/ColumnHeaderConstant.java |     6 +-
 .../execution/executor/RegionWriteExecutor.java    |    10 +-
 .../metric/PerformanceOverviewMetricsManager.java  |   323 +-
 .../db/mpp/plan/execution/QueryExecution.java      |     8 +-
 .../config/executor/ClusterConfigTaskExecutor.java |     3 +-
 .../config/metadata/ShowPipePluginsTask.java       |     4 +-
 .../db/mpp/plan/parser/StatementGenerator.java     |    49 +-
 .../db/mpp/plan/planner/plan/node/PlanNode.java    |    10 -
 .../db/mpp/plan/scheduler/AsyncPlanNodeSender.java |    16 +-
 .../plan/scheduler/AsyncSendPlanNodeHandler.java   |    28 +-
 .../scheduler/FragmentInstanceDispatcherImpl.java  |     4 +
 .../iotdb/db/pipe/agent/PipePluginAgent.java       |   191 +
 .../impl/DataNodeInternalRPCServiceImpl.java       |    27 +
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |     4 +-
 subscription-api/pom.xml                           |    68 +
 .../api/SubscriptionConfiguration.java             |   114 +
 .../subscription/api/SubscriptionFactory.java      |    47 +
 .../iotdb/subscription/api/consumer/Consumer.java  |    56 +
 .../api/consumer/pull/PullConsumer.java            |    38 +
 .../api/consumer/push/DataArrivalListener.java     |    37 +
 .../api/consumer/push/ExceptionListener.java       |    34 +
 .../api/consumer/push/PushConsumer.java            |    68 +
 .../api/dataset/SubscriptionDataSet.java           |    22 +
 .../api/exception/SubscriptionException.java       |    31 +
 .../SubscriptionStrategyNotValidException.java     |    31 +
 .../api/strategy/SubscriptionStrategy.java         |    29 +
 .../disorder/DisorderHandlingStrategy.java         |    35 +
 .../api/strategy/disorder/IntolerableStrategy.java |    32 +
 .../api/strategy/disorder/WatermarkStrategy.java   |    36 +
 .../strategy/topic/MultipleConnectionStrategy.java |    63 +
 .../api/strategy/topic/SingleTopicStrategy.java    |    52 +
 .../api/strategy/topic/TopicsStrategy.java         |    24 +
 .../src/main/thrift/confignode.thrift              |     8 +-
 thrift/src/main/thrift/datanode.thrift             |    24 +
 tsfile/pom.xml                                     |     4 +
 .../iotdb/tsfile/common/conf/TSFileConfig.java     |     2 +-
 .../apache/iotdb/tsfile/compress/ICompressor.java  |    61 +-
 .../iotdb/tsfile/compress/IUnCompressor.java       |    44 +
 .../file/metadata/enums/CompressionType.java       |     6 +-
 .../apache/iotdb/tsfile/compress/CompressTest.java |    39 +
 .../org/apache/iotdb/tsfile/compress/ZstdTest.java |    88 +
 99 files changed, 9259 insertions(+), 7787 deletions(-)
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginJarPlan.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/pipe/plugin/GetPipePluginTablePlan.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/CreatePipePluginPlan.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/pipe/plugin/DropPipePluginPlan.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/pipe/plugin/PipePluginTableResp.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/PipeManager.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/PipePluginCoordinator.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipeInfo.java
 create mode 100644 confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipePluginInfo.java
 create mode 100644 node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/ConfigNodePipePluginMetaKeeper.java
 create mode 100644 node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/DataNodePipePluginMetaKeeper.java
 create mode 100644 node-commons/src/main/java/org/apache/iotdb/commons/pipe/plugin/meta/PipePluginMetaKeeper.java
 rename {server/src/main/java/org/apache/iotdb/db/mpp/metric => node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums}/PerformanceOverviewMetrics.java (68%)
 create mode 100644 pipe-api/src/main/java/org/apache/iotdb/pipe/api/PipePlugin.java
 create mode 100644 pipe-api/src/main/java/org/apache/iotdb/pipe/api/exception/PipeManagementException.java
 create mode 100644 server/src/main/java/org/apache/iotdb/db/pipe/agent/PipePluginAgent.java
 create mode 100644 subscription-api/pom.xml
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/SubscriptionConfiguration.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/SubscriptionFactory.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/consumer/Consumer.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/consumer/pull/PullConsumer.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/consumer/push/DataArrivalListener.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/consumer/push/ExceptionListener.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/consumer/push/PushConsumer.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/dataset/SubscriptionDataSet.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/exception/SubscriptionException.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/exception/SubscriptionStrategyNotValidException.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/SubscriptionStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/disorder/DisorderHandlingStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/disorder/IntolerableStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/disorder/WatermarkStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/topic/MultipleConnectionStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/topic/SingleTopicStrategy.java
 create mode 100644 subscription-api/src/main/java/org/apache/iotdb/subscription/api/strategy/topic/TopicsStrategy.java
 create mode 100644 tsfile/src/test/java/org/apache/iotdb/tsfile/compress/ZstdTest.java


[iotdb] 01/01: add connection metrics

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marklau99 pushed a commit to branch IOTDB-5663
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit e5d7d87cc59c13bff51716657ea1d0bdacd9e792
Author: Liu Xuxin <li...@outlook.com>
AuthorDate: Mon Mar 13 16:43:18 2023 +0800

    add connection metrics
---
 .../iotdb/confignode/service/ConfigNode.java       |  2 +-
 .../Apache-IoTDB-Network-Dashboard.json            | 92 +++++++++++++++++++++-
 .../metrics/metricsets/net/INetMetricManager.java  |  4 +
 .../metricsets/net/LinuxNetMetricManager.java      | 37 +++++++++
 .../iotdb/metrics/metricsets/net/NetMetrics.java   | 16 ++++
 .../db/service/metrics/DataNodeMetricsHelper.java  |  2 +-
 6 files changed, 150 insertions(+), 3 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
index 3b990256cd..bd66190163 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
@@ -219,7 +219,7 @@ public class ConfigNode implements ConfigNodeMBean {
     MetricService.getInstance().addMetricSet(new ProcessMetrics());
     MetricService.getInstance().addMetricSet(new SystemMetrics(false));
     MetricService.getInstance().addMetricSet(new DiskMetrics(IoTDBConstant.CN_ROLE));
-    MetricService.getInstance().addMetricSet(new NetMetrics());
+    MetricService.getInstance().addMetricSet(new NetMetrics(IoTDBConstant.CN_ROLE));
 
     LOGGER.info("Successfully setup internal services.");
   }
diff --git a/docs/UserGuide/Monitor-Alert/Apache-IoTDB-Network-Dashboard.json b/docs/UserGuide/Monitor-Alert/Apache-IoTDB-Network-Dashboard.json
index 40eb7174d0..f63d532a7b 100644
--- a/docs/UserGuide/Monitor-Alert/Apache-IoTDB-Network-Dashboard.json
+++ b/docs/UserGuide/Monitor-Alert/Apache-IoTDB-Network-Dashboard.json
@@ -367,6 +367,96 @@
       ],
       "title": "Packet Speed",
       "type": "timeseries"
+    },
+    {
+      "datasource": {
+        "type": "prometheus",
+        "uid": "${DS_PROMETHEUS}"
+      },
+      "fieldConfig": {
+        "defaults": {
+          "color": {
+            "mode": "palette-classic"
+          },
+          "custom": {
+            "axisCenteredZero": false,
+            "axisColorMode": "text",
+            "axisGridShow": true,
+            "axisLabel": "",
+            "axisPlacement": "auto",
+            "barAlignment": 0,
+            "drawStyle": "line",
+            "fillOpacity": 0,
+            "gradientMode": "none",
+            "hideFrom": {
+              "legend": false,
+              "tooltip": false,
+              "viz": false
+            },
+            "lineInterpolation": "linear",
+            "lineWidth": 1,
+            "pointSize": 5,
+            "scaleDistribution": {
+              "type": "linear"
+            },
+            "showPoints": "auto",
+            "spanNulls": false,
+            "stacking": {
+              "group": "A",
+              "mode": "none"
+            },
+            "thresholdsStyle": {
+              "mode": "off"
+            }
+          },
+          "decimals": 0,
+          "mappings": [],
+          "thresholds": {
+            "mode": "absolute",
+            "steps": [
+              {
+                "color": "green",
+                "value": null
+              }
+            ]
+          }
+        },
+        "overrides": []
+      },
+      "gridPos": {
+        "h": 10,
+        "w": 24,
+        "x": 0,
+        "y": 29
+      },
+      "id": 8,
+      "options": {
+        "legend": {
+          "calcs": [],
+          "displayMode": "list",
+          "placement": "bottom",
+          "showLegend": true
+        },
+        "tooltip": {
+          "mode": "multi",
+          "sort": "none"
+        }
+      },
+      "targets": [
+        {
+          "datasource": {
+            "type": "prometheus",
+            "uid": "${DS_PROMETHEUS}"
+          },
+          "editorMode": "code",
+          "expr": "connection_num{instance=~\"$instance\"}",
+          "legendFormat": "{{job}}-{{instance}}",
+          "range": true,
+          "refId": "A"
+        }
+      ],
+      "title": "Connection Num",
+      "type": "timeseries"
     }
   ],
   "refresh": "15s",
@@ -439,6 +529,6 @@
   "timezone": "",
   "title": "Apache IoTDB Network Dashboard",
   "uid": "AXEPYc-Vz",
-  "version": 17,
+  "version": 19,
   "weekStart": ""
 }
\ No newline at end of file
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/INetMetricManager.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/INetMetricManager.java
index f6ae15d37c..35f551e2a5 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/INetMetricManager.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/INetMetricManager.java
@@ -55,4 +55,8 @@ public interface INetMetricManager {
   default Set<String> getIfaceSet() {
     return Collections.emptySet();
   }
+
+  default int getConnectionNum() {
+    return 0;
+  }
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/LinuxNetMetricManager.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/LinuxNetMetricManager.java
index 4e3fab7061..098463dea4 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/LinuxNetMetricManager.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/LinuxNetMetricManager.java
@@ -19,12 +19,17 @@
 
 package org.apache.iotdb.metrics.metricsets.net;
 
+import org.apache.iotdb.metrics.config.MetricConfig;
+import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -50,11 +55,16 @@ public class LinuxNetMetricManager implements INetMetricManager {
   private static final long UPDATE_INTERVAL = 10_000L;
 
   private static final int IFACE_NAME_INDEX = 0;
+
+  private static final MetricConfig METRIC_CONFIG =
+      MetricConfigDescriptor.getInstance().getMetricConfig();
   // initialized after reading status file
   private int receivedBytesIndex = 0;
   private int transmittedBytesIndex = 0;
   private int receivedPacketsIndex = 0;
   private int transmittedPacketsIndex = 0;
+  private int connectionNum = 0;
+  private final String[] getConnectNumCmd;
   private Set<String> ifaceSet;
 
   private final Map<String, Long> receivedBytesMapForIface;
@@ -70,6 +80,12 @@ public class LinuxNetMetricManager implements INetMetricManager {
     receivedPacketsMapForIface = new HashMap<>(ifaceSet.size() + 1, 1);
     transmittedPacketsMapForIface = new HashMap<>(ifaceSet.size() + 1, 1);
     collectNetStatusIndex();
+    this.getConnectNumCmd =
+        new String[] {
+          "/bin/sh",
+          "-c",
+          String.format("ls -l /proc/%s/fd | grep socket: | wc -l", METRIC_CONFIG.getPid())
+        };
   }
 
   private long lastUpdateTime = 0L;
@@ -104,6 +120,11 @@ public class LinuxNetMetricManager implements INetMetricManager {
     return transmittedPacketsMapForIface;
   }
 
+  @Override
+  public int getConnectionNum() {
+    return connectionNum;
+  }
+
   private void checkUpdate() {
     if (System.currentTimeMillis() - lastUpdateTime >= UPDATE_INTERVAL) {
       updateNetStatus();
@@ -193,5 +214,21 @@ public class LinuxNetMetricManager implements INetMetricManager {
     } catch (IOException e) {
       log.error("Meets error when reading {} for net status", NET_STATUS_PATH, e);
     }
+
+    // update socket num
+    try {
+      Process process = Runtime.getRuntime().exec(this.getConnectNumCmd);
+      StringBuilder result = new StringBuilder();
+      try (BufferedReader input =
+          new BufferedReader(new InputStreamReader(process.getInputStream()))) {
+        String line;
+        while ((line = input.readLine()) != null) {
+          result.append(line);
+        }
+      }
+      this.connectionNum = Integer.parseInt(result.toString().trim());
+    } catch (IOException e) {
+      log.error("Failed to get socket num", e);
+    }
   }
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
index e1e565c049..223808976f 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/net/NetMetrics.java
@@ -33,11 +33,19 @@ public class NetMetrics implements IMetricSet {
   private static final String RECEIVED_PACKETS = "received_packets";
   private static final String TRANSMITTED_BYTES = "transmitted_bytes";
   private static final String TRANSMITTED_PACKETS = "transmitted_packets";
+  private static final String CONNECTION_NUM = "connection_num";
 
   private static final String TYPE = "type";
   private static final String IFACE_NAME = "iface_name";
   private static final String RECEIVE = "receive";
   private static final String TRANSMIT = "transmit";
+  private static final String PROCESS_NAME = "process_num";
+
+  private final String processName;
+
+  public NetMetrics(String processName) {
+    this.processName = processName;
+  }
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
@@ -81,6 +89,13 @@ public class NetMetrics implements IMetricSet {
           IFACE_NAME,
           iface);
     }
+    metricService.createAutoGauge(
+        CONNECTION_NUM,
+        MetricLevel.IMPORTANT,
+        netMetricManager,
+        x -> x.getConnectionNum(),
+        PROCESS_NAME,
+        this.processName);
   }
 
   @Override
@@ -94,5 +109,6 @@ public class NetMetrics implements IMetricSet {
       metricService.remove(
           MetricType.AUTO_GAUGE, TRANSMITTED_PACKETS, TYPE, TRANSMIT, IFACE_NAME, iface);
     }
+    metricService.remove(MetricType.AUTO_GAUGE, CONNECTION_NUM, PROCESS_NAME, this.processName);
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
index e116b52119..5e76a37efb 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
@@ -43,7 +43,7 @@ public class DataNodeMetricsHelper {
     MetricService.getInstance().addMetricSet(new ProcessMetrics());
     MetricService.getInstance().addMetricSet(new SystemMetrics(true));
     MetricService.getInstance().addMetricSet(new DiskMetrics(IoTDBConstant.DN_ROLE));
-    MetricService.getInstance().addMetricSet(new NetMetrics());
+    MetricService.getInstance().addMetricSet(new NetMetrics(IoTDBConstant.DN_ROLE));
     MetricService.getInstance().addMetricSet(new WritingMetrics());
 
     // bind query related metrics