This is an automated email from the ASF dual-hosted git repository.
tanxinyu pushed a commit to branch rel/1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/1.1 by this push:
new 270f460166a [IOTDB-5927] Add up time metric (#9960) (#9989)
270f460166a is described below
commit 270f460166a56bcfb0911971ed6530975dee8cd9
Author: ZhangHongYin <[email protected]>
AuthorDate: Tue May 30 20:06:02 2023 +0800
[IOTDB-5927] Add up time metric (#9960) (#9989)
* Add up_time Metrics
(cherry picked from commit 634f0395421314a03505d286b73ae3938a7baa7b)
---
.../iotdb/confignode/service/ConfigNode.java | 2 +
docs/UserGuide/Monitor-Alert/Metric-Tool.md | 3 +-
docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md | 13 ++++---
.../apache/iotdb/metrics/config/MetricConfig.java | 7 ++++
.../iotdb/metrics/metricsets/UpTimeMetrics.java | 44 ++++++++++++++++++++++
.../db/service/metrics/DataNodeMetricsHelper.java | 2 +
6 files changed, 64 insertions(+), 7 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 f69e2c13ebc..920247956a3 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
@@ -43,6 +43,7 @@ import
org.apache.iotdb.confignode.service.thrift.ConfigNodeRPCServiceProcessor;
import org.apache.iotdb.db.service.metrics.ProcessMetrics;
import org.apache.iotdb.db.service.metrics.SystemMetrics;
import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+import org.apache.iotdb.metrics.metricsets.UpTimeMetrics;
import org.apache.iotdb.metrics.metricsets.disk.DiskMetrics;
import org.apache.iotdb.metrics.metricsets.jvm.JvmMetrics;
import org.apache.iotdb.metrics.metricsets.logback.LogbackMetrics;
@@ -225,6 +226,7 @@ public class ConfigNode implements ConfigNodeMBean {
MetricConfigDescriptor.getInstance().getMetricConfig().setNodeId(CONF.getConfigNodeId());
registerManager.register(MetricService.getInstance());
// bind predefined metric sets
+ MetricService.getInstance().addMetricSet(new UpTimeMetrics());
MetricService.getInstance().addMetricSet(new JvmMetrics());
MetricService.getInstance().addMetricSet(new LogbackMetrics());
MetricService.getInstance().addMetricSet(new ProcessMetrics());
diff --git a/docs/UserGuide/Monitor-Alert/Metric-Tool.md
b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
index 063ee10aae0..b1ab29d7d7c 100644
--- a/docs/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -113,7 +113,8 @@ carefully evaluated. The current Core-level metrics are as
follows:
#### 4.1.1. Cluster
| Metric | Tags
| Type | Description |
-| ------------------------- | -----------------------------------------------
| --------- | --------------------------------------------------- |
+|---------------------------|-------------------------------------------------|
--------- |-----------------------------------------------------|
+| up_time | -
| AutoGauge | The time IoTDB has been running |
| config_node | name="total",status="Registered/Online/Unknown"
| AutoGauge | The number of registered/online/unknown confignodes |
| data_node | name="total",status="Registered/Online/Unknown"
| AutoGauge | The number of registered/online/unknown datanodes |
| cluster_node_leader_count | name="{ip}:{port}"
| Gauge | The count of consensus group leader on each node |
diff --git a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
index a817656d235..f4f7bbe60f3 100644
--- a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -91,14 +91,15 @@ Core 级别的监控指标在系统运行中默认开启,每一个 Core 级别
#### 4.1.1. 集群运行状态
-| Metric | Tags
| Type | Description |
-| ------------------------- | -----------------------------------------------
| --------- | -------------------------------------- |
+| Metric | Tags
| Type | Description |
+| ------------------------- | -----------------------------------------------
| --------- |----------------------------|
+| up_time | -
| AutoGauge | IoTDB 启动的运行时间 |
| config_node | name="total",status="Registered/Online/Unknown"
| AutoGauge | 已注册/在线/离线 confignode 的节点数量 |
| data_node | name="total",status="Registered/Online/Unknown"
| AutoGauge | 已注册/在线/离线 datanode 的节点数量 |
-| cluster_node_leader_count | name="{ip}:{port}"
| Gauge | 节点上共识组Leader的数量 |
-| cluster_node_status | name="{ip}:{port}",type="ConfigNode/DataNode"
| Gauge | 节点的状态,0=Unkonwn 1=online |
-| entry | name="{interface}"
| Timer | Client 建立的 Thrift 的耗时情况 |
-| mem | name="IoTConsensus"
| AutoGauge | IoT共识协议的内存占用,单位为byte |
+| cluster_node_leader_count | name="{ip}:{port}"
| Gauge | 节点上共识组Leader的数量 |
+| cluster_node_status | name="{ip}:{port}",type="ConfigNode/DataNode"
| Gauge | 节点的状态,0=Unkonwn 1=online |
+| entry | name="{interface}"
| Timer | Client 建立的 Thrift 的耗时情况 |
+| mem | name="IoTConsensus"
| AutoGauge | IoT共识协议的内存占用,单位为byte |
#### 4.1.2. 接口层统计
diff --git
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
index 2d551495d28..4989cfbdacf 100644
---
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
+++
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
@@ -69,6 +69,8 @@ public class MetricConfig {
/** The id of iotdb node. */
private int nodeId = 0;
+ private long upTimeInNs = 0;
+
public MetricConfig() {
// try to get pid of iotdb instance
try {
@@ -155,6 +157,10 @@ public class MetricConfig {
return nodeId;
}
+ public long getUpTimeInNs() {
+ return upTimeInNs;
+ }
+
/** Update rpc address and rpc port of monitored node. */
public void updateRpcInstance(String clusterName, NodeType nodeType) {
this.clusterName = clusterName;
@@ -163,6 +169,7 @@ public class MetricConfig {
public void setNodeId(int nodeId) {
this.nodeId = nodeId;
+ this.upTimeInNs = System.nanoTime();
}
/** Copy properties from another metric config. */
diff --git
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
new file mode 100644
index 00000000000..2955723250e
--- /dev/null
+++
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.metrics.metricsets;
+
+import org.apache.iotdb.metrics.AbstractMetricService;
+import org.apache.iotdb.metrics.config.MetricConfig;
+import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+import org.apache.iotdb.metrics.utils.MetricLevel;
+import org.apache.iotdb.metrics.utils.MetricType;
+
+public class UpTimeMetrics implements IMetricSet {
+ MetricConfig metricConfig =
MetricConfigDescriptor.getInstance().getMetricConfig();
+
+ @Override
+ public void bindTo(AbstractMetricService metricService) {
+ metricService.createAutoGauge(
+ "up_time",
+ MetricLevel.CORE,
+ metricConfig,
+ (config) -> System.nanoTime() - config.getUpTimeInNs());
+ }
+
+ @Override
+ public void unbindFrom(AbstractMetricService metricService) {
+ metricService.remove(MetricType.AUTO_GAUGE, "up_time");
+ }
+}
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 110d4cfa4ca..02f25fcdaf0 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
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.mpp.metric.QueryExecutionMetricSet;
import org.apache.iotdb.db.mpp.metric.QueryPlanCostMetricSet;
import org.apache.iotdb.db.mpp.metric.QueryResourceMetricSet;
import org.apache.iotdb.db.mpp.metric.SeriesScanCostMetricSet;
+import org.apache.iotdb.metrics.metricsets.UpTimeMetrics;
import org.apache.iotdb.metrics.metricsets.disk.DiskMetrics;
import org.apache.iotdb.metrics.metricsets.jvm.JvmMetrics;
import org.apache.iotdb.metrics.metricsets.logback.LogbackMetrics;
@@ -37,6 +38,7 @@ import org.apache.iotdb.metrics.metricsets.net.NetMetrics;
public class DataNodeMetricsHelper {
/** Bind predefined metric sets into DataNode. */
public static void bind() {
+ MetricService.getInstance().addMetricSet(new UpTimeMetrics());
MetricService.getInstance().addMetricSet(new JvmMetrics());
MetricService.getInstance().addMetricSet(new LogbackMetrics());
MetricService.getInstance().addMetricSet(new FileMetrics());