This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 0b130fd462 [IOTDB-3717] Add metrics for thrift connections and worker
threads (#6581)
0b130fd462 is described below
commit 0b130fd462834d4cb5ff48c2a8041b81943a3059
Author: xinzhongtianxia <[email protected]>
AuthorDate: Wed Jul 6 17:03:24 2022 +0800
[IOTDB-3717] Add metrics for thrift connections and worker threads (#6581)
---
.../service/thrift/ConfigNodeRPCService.java | 14 ++++++++++++
.../thrift/ConfigNodeRPCServiceHandler.java | 22 ++++++++++++++++++-
docs/UserGuide/Maintenance-Tools/Metric-Tool.md | 8 ++++---
docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md | 8 ++++---
.../service/AbstractThriftServiceThread.java | 25 ++++++++++++++++------
.../execution/exchange/MPPDataExchangeService.java | 14 ++++++++++++
.../MPPDataExchangeServiceThriftHandler.java | 24 ++++++++++++++++++++-
.../db/service/DataNodeInternalRPCService.java | 14 ++++++++++++
.../org/apache/iotdb/db/service/RPCService.java | 14 ++++++++++++
.../iotdb/db/service/metrics/enums/Metric.java | 4 +++-
.../handler/InternalServiceThriftHandler.java | 18 +++++++++++++++-
.../thrift/handler/RPCServiceThriftHandler.java | 16 +++++++++++++-
.../transport/server/TransportServerManager.java | 14 ++++++++++++
.../server/TransportServerThriftHandler.java | 21 ++++++++++++++++++
14 files changed, 199 insertions(+), 17 deletions(-)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCService.java
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCService.java
index 973f565bac..5a5f4078ad 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCService.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCService.java
@@ -21,12 +21,17 @@ package org.apache.iotdb.confignode.service.thrift;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.commons.exception.runtime.RPCServiceException;
+import org.apache.iotdb.commons.service.AbstractThriftServiceThread;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.service.ThriftService;
import org.apache.iotdb.commons.service.ThriftServiceThread;
import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
/** ConfigNodeRPCServer exposes the interface that interacts with the DataNode
*/
public class ConfigNodeRPCService extends ThriftService implements
ConfigNodeRPCServiceMBean {
@@ -75,6 +80,15 @@ public class ConfigNodeRPCService extends ThriftService
implements ConfigNodeRPC
throw new IllegalAccessException(e.getMessage());
}
thriftServiceThread.setName(ThreadName.CONFIG_NODE_RPC_SERVER.getName());
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateAutoGauge(
+ Metric.THRIFT_ACTIVE_THREADS.toString(),
+ MetricLevel.CORE,
+ thriftServiceThread,
+ AbstractThriftServiceThread::getActiveThreadCount,
+ Tag.NAME.toString(),
+ ThreadName.CONFIG_NODE_RPC_SERVER.getName());
}
@Override
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceHandler.java
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceHandler.java
index ea81ce222f..04640bc9b5 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceHandler.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceHandler.java
@@ -16,6 +16,11 @@
*/
package org.apache.iotdb.confignode.service.thrift;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
+
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.ServerContext;
import org.apache.thrift.server.TServerEventHandler;
@@ -30,7 +35,14 @@ public class ConfigNodeRPCServiceHandler implements
TServerEventHandler {
@Override
public ServerContext createContext(TProtocol arg0, TProtocol arg1) {
- // nothing
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "ConfigNodeRPC")
+ .incr(1L);
return null;
}
@@ -38,6 +50,14 @@ public class ConfigNodeRPCServiceHandler implements
TServerEventHandler {
public void deleteContext(ServerContext arg0, TProtocol arg1, TProtocol
arg2) {
// release query resources.
processor.handleClientExit();
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "ConfigNodeRPC")
+ .decr(1L);
}
@Override
diff --git a/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
b/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
index 31247c3a35..8019e837b1 100644
--- a/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
+++ b/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
@@ -80,10 +80,12 @@ Next, we will choose Prometheus format data as samples to
describe each kind of
| Metric | Tag | level | Description
| Sample |
| ------------------- | --------------------- | --------- |
---------------------------------------- |
-------------------------------------------- |
-| entry_seconds_count | name="interface name" | important | The total request
count of the interface | entry_seconds_count{name="openSession",} 1.0 |
-| entry_seconds_sum | name="interface name" | important | The total cost
seconds of the interface | entry_seconds_sum{name="openSession",} 0.024 |
-| entry_seconds_max | name="interface name" | important | The max latency of
the interface | entry_seconds_max{name="openSession",} 0.024 |
+| entry_seconds_count | name="{{interface}}" | important | The total request
count of the interface | entry_seconds_count{name="openSession",} 1.0 |
+| entry_seconds_sum | name="{{interface}}" | important | The total cost
seconds of the interface | entry_seconds_sum{name="openSession",} 0.024 |
+| entry_seconds_max | name="{{interface}}" | important | The max latency of
the interface | entry_seconds_max{name="openSession",} 0.024 |
| quantity_total | name="pointsIn" | important | The total points
inserted into IoTDB | quantity_total{name="pointsIn",} 1.0 |
+| thrift_connections | name="{{thriftService}}" | core | current number of
thrift connections | thrift_connections{name="RPC",} 1.0 |
+| thrift_active_threads | name="{{thriftThread}}" | core | current number if
thrift worker threads | thrift_active_threads{name="RPC",} 1.0 |
#### 4.3.2. Task
| Metric | Tag
| level | Description
| Sample
|
diff --git a/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
b/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
index 065e2179fa..9598d73c3d 100644
--- a/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
+++ b/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
@@ -78,10 +78,12 @@ IoTDB对外提供JMX和Prometheus格式的监控指标,对于JMX,可以通
| Metric | Tag | level | 说明 | 示例
|
| ------------------- | --------------- | --------- | ---------------- |
-------------------------------------------- |
-| entry_seconds_count | name="接口名" | important | 接口累计访问次数 |
entry_seconds_count{name="openSession",} 1.0 |
-| entry_seconds_sum | name="接口名" | important | 接口累计耗时(s) |
entry_seconds_sum{name="openSession",} 0.024 |
-| entry_seconds_max | name="接口名" | important | 接口最大耗时(s) |
entry_seconds_max{name="openSession",} 0.024 |
+| entry_seconds_count | name="{{interface}}" | important | 接口累计访问次数 |
entry_seconds_count{name="openSession",} 1.0 |
+| entry_seconds_sum | name="{{interface}}" | important | 接口累计耗时(s) |
entry_seconds_sum{name="openSession",} 0.024 |
+| entry_seconds_max | name="{{interface}}" | important | 接口最大耗时(s) |
entry_seconds_max{name="openSession",} 0.024 |
| quantity_total | name="pointsIn" | important | 系统累计写入点数 |
quantity_total{name="pointsIn",} 1.0 |
+| thrift_connections | name="{{thriftService}}" | core | thrift当前连接数 |
thrift_connections{name="RPC",} 1.0 |
+| thrift_active_threads | name="{{thriftThread}}" | core | thrift worker线程数 |
thrift_active_threads{name="RPC",} 1.0 |
#### 4.3.2. Task
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/service/AbstractThriftServiceThread.java
b/node-commons/src/main/java/org/apache/iotdb/commons/service/AbstractThriftServiceThread.java
index 86e581af91..a9b36b9b36 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/service/AbstractThriftServiceThread.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/service/AbstractThriftServiceThread.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.commons.service;
import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
+import
org.apache.iotdb.commons.concurrent.threadpool.WrappedThreadPoolExecutor;
import org.apache.iotdb.commons.conf.IoTDBConstant;
import org.apache.iotdb.commons.exception.runtime.RPCServiceException;
@@ -44,6 +45,7 @@ import org.slf4j.LoggerFactory;
import java.net.InetSocketAddress;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
public abstract class AbstractThriftServiceThread extends Thread {
@@ -53,6 +55,8 @@ public abstract class AbstractThriftServiceThread extends
Thread {
private TServer poolServer;
private CountDownLatch threadStopLatch;
+ private ExecutorService executorService;
+
private String serviceName;
private TProtocolFactory protocolFactory;
@@ -182,8 +186,8 @@ public abstract class AbstractThriftServiceThread extends
Thread {
.maxWorkerThreads(maxWorkerThreads)
.minWorkerThreads(Runtime.getRuntime().availableProcessors())
.stopTimeoutVal(timeoutSecond);
- poolArgs.executorService =
- IoTDBThreadPoolFactory.createThriftRpcClientThreadPool(poolArgs,
threadsName);
+ executorService =
IoTDBThreadPoolFactory.createThriftRpcClientThreadPool(poolArgs, threadsName);
+ poolArgs.executorService = executorService;
poolArgs.processor(processor);
poolArgs.protocolFactory(protocolFactory);
poolArgs.transportFactory(getTTransportFactory());
@@ -202,9 +206,10 @@ public abstract class AbstractThriftServiceThread extends
Thread {
new TThreadedSelectorServer.Args((TNonblockingServerTransport)
serverTransport);
poolArgs.maxReadBufferBytes = maxReadBufferBytes;
poolArgs.selectorThreads(selectorThreads);
- poolArgs.executorService(
+ executorService =
IoTDBThreadPoolFactory.createThriftRpcClientThreadPool(
- minWorkerThreads, maxWorkerThreads, timeoutSecond,
TimeUnit.SECONDS, threadsName));
+ minWorkerThreads, maxWorkerThreads, timeoutSecond,
TimeUnit.SECONDS, threadsName);
+ poolArgs.executorService(executorService);
poolArgs.processor(processor);
poolArgs.protocolFactory(protocolFactory);
poolArgs.transportFactory(getTTransportFactory());
@@ -220,9 +225,10 @@ public abstract class AbstractThriftServiceThread extends
Thread {
int maxReadBufferBytes) {
THsHaServer.Args poolArgs = new
THsHaServer.Args((TNonblockingServerTransport) serverTransport);
poolArgs.maxReadBufferBytes = maxReadBufferBytes;
- poolArgs.executorService(
+ executorService =
IoTDBThreadPoolFactory.createThriftRpcClientThreadPool(
- minWorkerThreads, maxWorkerThreads, timeoutSecond,
TimeUnit.SECONDS, threadsName));
+ minWorkerThreads, maxWorkerThreads, timeoutSecond,
TimeUnit.SECONDS, threadsName);
+ poolArgs.executorService(executorService);
poolArgs.processor(processor);
poolArgs.protocolFactory(protocolFactory);
poolArgs.transportFactory(getTTransportFactory());
@@ -291,6 +297,13 @@ public abstract class AbstractThriftServiceThread extends
Thread {
return false;
}
+ public long getActiveThreadCount() {
+ if (executorService != null) {
+ return ((WrappedThreadPoolExecutor) executorService).getActiveCount();
+ }
+ return -1;
+ }
+
public enum ServerType {
SELECTOR,
HSHA
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeService.java
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeService.java
index fc639abcc3..3ccbcbb512 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeService.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeService.java
@@ -26,6 +26,7 @@ import
org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
import org.apache.iotdb.commons.concurrent.IoTThreadFactory;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.exception.runtime.RPCServiceException;
+import org.apache.iotdb.commons.service.AbstractThriftServiceThread;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.service.ThriftService;
import org.apache.iotdb.commons.service.ThriftServiceThread;
@@ -33,6 +34,10 @@ import org.apache.iotdb.db.client.DataNodeClientPoolFactory;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.mpp.execution.memory.LocalMemoryManager;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.iotdb.mpp.rpc.thrift.MPPDataExchangeService.Processor;
import org.slf4j.Logger;
@@ -105,6 +110,15 @@ public class MPPDataExchangeService extends ThriftService
implements MPPDataExch
throw new IllegalAccessException(e.getMessage());
}
thriftServiceThread.setName(ThreadName.MPP_DATA_EXCHANGE_RPC_SERVER.getName());
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateAutoGauge(
+ Metric.THRIFT_ACTIVE_THREADS.toString(),
+ MetricLevel.CORE,
+ thriftServiceThread,
+ AbstractThriftServiceThread::getActiveThreadCount,
+ Tag.NAME.toString(),
+ ThreadName.MPP_DATA_EXCHANGE_RPC_SERVER.getName());
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeServiceThriftHandler.java
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeServiceThriftHandler.java
index 2ef11faa83..cfe80c687f 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeServiceThriftHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/exchange/MPPDataExchangeServiceThriftHandler.java
@@ -19,6 +19,11 @@
package org.apache.iotdb.db.mpp.execution.exchange;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
+
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.ServerContext;
import org.apache.thrift.server.TServerEventHandler;
@@ -31,12 +36,29 @@ public class MPPDataExchangeServiceThriftHandler implements
TServerEventHandler
@Override
public ServerContext createContext(TProtocol tProtocol, TProtocol
tProtocol1) {
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "MPPDataExchange")
+ .incr(1L);
return null;
}
@Override
public void deleteContext(
- ServerContext serverContext, TProtocol tProtocol, TProtocol tProtocol1)
{}
+ ServerContext serverContext, TProtocol tProtocol, TProtocol tProtocol1) {
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "MPPDataExchange")
+ .decr(1L);
+ }
@Override
public void processContext(
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/DataNodeInternalRPCService.java
b/server/src/main/java/org/apache/iotdb/db/service/DataNodeInternalRPCService.java
index a93ed66c7c..7ba65031a0 100644
---
a/server/src/main/java/org/apache/iotdb/db/service/DataNodeInternalRPCService.java
+++
b/server/src/main/java/org/apache/iotdb/db/service/DataNodeInternalRPCService.java
@@ -21,13 +21,18 @@ package org.apache.iotdb.db.service;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.exception.runtime.RPCServiceException;
+import org.apache.iotdb.commons.service.AbstractThriftServiceThread;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.service.ThriftService;
import org.apache.iotdb.commons.service.ThriftServiceThread;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
import org.apache.iotdb.db.service.thrift.handler.InternalServiceThriftHandler;
import org.apache.iotdb.db.service.thrift.impl.DataNodeInternalRPCServiceImpl;
+import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.iotdb.mpp.rpc.thrift.IDataNodeRPCService.Processor;
public class DataNodeInternalRPCService extends ThriftService
@@ -71,6 +76,15 @@ public class DataNodeInternalRPCService extends ThriftService
throw new IllegalAccessException(e.getMessage());
}
thriftServiceThread.setName(ThreadName.INTERNAL_SERVICE_RPC_SERVER.getName());
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateAutoGauge(
+ Metric.THRIFT_ACTIVE_THREADS.toString(),
+ MetricLevel.CORE,
+ thriftServiceThread,
+ AbstractThriftServiceThread::getActiveThreadCount,
+ Tag.NAME.toString(),
+ ThreadName.INTERNAL_SERVICE_RPC_SERVER.getName());
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/service/RPCService.java
b/server/src/main/java/org/apache/iotdb/db/service/RPCService.java
index e38823a4ed..841dc6c4c0 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/RPCService.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/RPCService.java
@@ -20,15 +20,20 @@ package org.apache.iotdb.db.service;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.exception.runtime.RPCServiceException;
+import org.apache.iotdb.commons.service.AbstractThriftServiceThread;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.service.ThriftService;
import org.apache.iotdb.commons.service.ThriftServiceThread;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
import org.apache.iotdb.db.service.thrift.ProcessorWithMetrics;
import org.apache.iotdb.db.service.thrift.handler.RPCServiceThriftHandler;
import org.apache.iotdb.db.service.thrift.impl.IClientRPCServiceWithHandler;
import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.iotdb.service.rpc.thrift.IClientRPCService.Processor;
import java.lang.reflect.InvocationTargetException;
@@ -78,6 +83,15 @@ public class RPCService extends ThriftService implements
RPCServiceMBean {
throw new IllegalAccessException(e.getMessage());
}
thriftServiceThread.setName(ThreadName.RPC_SERVICE.getName());
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateAutoGauge(
+ Metric.THRIFT_ACTIVE_THREADS.toString(),
+ MetricLevel.CORE,
+ thriftServiceThread,
+ AbstractThriftServiceThread::getActiveThreadCount,
+ Tag.NAME.toString(),
+ ThreadName.RPC_SERVICE.getName());
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/metrics/enums/Metric.java
b/server/src/main/java/org/apache/iotdb/db/service/metrics/enums/Metric.java
index 18247db4d4..74ac14bd32 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/enums/Metric.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/enums/Metric.java
@@ -59,7 +59,9 @@ public enum Metric {
DATA_NODE,
STORAGE_GROUP,
REGION,
- SLOT;
+ SLOT,
+ THRIFT_CONNECTIONS,
+ THRIFT_ACTIVE_THREADS;
@Override
public String toString() {
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/InternalServiceThriftHandler.java
b/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/InternalServiceThriftHandler.java
index 72c81e48d2..09e9d7492f 100644
---
a/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/InternalServiceThriftHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/InternalServiceThriftHandler.java
@@ -19,6 +19,11 @@
package org.apache.iotdb.db.service.thrift.handler;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
+
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.ServerContext;
import org.apache.thrift.server.TServerEventHandler;
@@ -31,12 +36,23 @@ public class InternalServiceThriftHandler implements
TServerEventHandler {
@Override
public ServerContext createContext(TProtocol tProtocol, TProtocol
tProtocol1) {
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(), MetricLevel.CORE,
Tag.NAME.toString(), "Internal")
+ .incr(1L);
return null;
}
@Override
public void deleteContext(
- ServerContext serverContext, TProtocol tProtocol, TProtocol tProtocol1)
{}
+ ServerContext serverContext, TProtocol tProtocol, TProtocol tProtocol1) {
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(), MetricLevel.CORE,
Tag.NAME.toString(), "Internal")
+ .decr(1L);
+ }
@Override
public void processContext(
diff --git
a/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/RPCServiceThriftHandler.java
b/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/RPCServiceThriftHandler.java
index d6dd456370..4ad2e5b728 100644
---
a/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/RPCServiceThriftHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/service/thrift/handler/RPCServiceThriftHandler.java
@@ -16,7 +16,11 @@
*/
package org.apache.iotdb.db.service.thrift.handler;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
import org.apache.iotdb.db.service.thrift.impl.IClientRPCServiceWithHandler;
+import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.ServerContext;
@@ -33,7 +37,11 @@ public class RPCServiceThriftHandler implements
TServerEventHandler {
@Override
public ServerContext createContext(TProtocol arg0, TProtocol arg1) {
- // nothing
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(), MetricLevel.CORE,
Tag.NAME.toString(), "RPC")
+ .incr(1L);
return null;
}
@@ -41,6 +49,12 @@ public class RPCServiceThriftHandler implements
TServerEventHandler {
public void deleteContext(ServerContext arg0, TProtocol arg1, TProtocol
arg2) {
// release query resources.
eventHandler.handleClientExit();
+
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(), MetricLevel.CORE,
Tag.NAME.toString(), "RPC")
+ .decr(1L);
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerManager.java
b/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerManager.java
index 91e0d27765..4bf16d20cf 100644
---
a/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerManager.java
+++
b/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerManager.java
@@ -21,12 +21,17 @@ package org.apache.iotdb.db.sync.transport.server;
import org.apache.iotdb.commons.concurrent.ThreadName;
import org.apache.iotdb.commons.exception.StartupException;
+import org.apache.iotdb.commons.service.AbstractThriftServiceThread;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.service.ThriftService;
import org.apache.iotdb.commons.service.ThriftServiceThread;
import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
import org.apache.iotdb.service.transport.thrift.TransportService;
import org.apache.thrift.transport.TTransportException;
@@ -84,6 +89,15 @@ public class TransportServerManager extends ThriftService
new TransportServerThriftHandler(serviceImpl),
config.isRpcThriftCompressionEnable());
thriftServiceThread.setName(ThreadName.SYNC_SERVER.getName());
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateAutoGauge(
+ Metric.THRIFT_ACTIVE_THREADS.toString(),
+ MetricLevel.CORE,
+ thriftServiceThread,
+ AbstractThriftServiceThread::getActiveThreadCount,
+ Tag.NAME.toString(),
+ ThreadName.SYNC_SERVER.getName());
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerThriftHandler.java
b/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerThriftHandler.java
index c42924a717..36d325156b 100644
---
a/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerThriftHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/sync/transport/server/TransportServerThriftHandler.java
@@ -19,6 +19,11 @@
*/
package org.apache.iotdb.db.sync.transport.server;
+import org.apache.iotdb.db.service.metrics.MetricsService;
+import org.apache.iotdb.db.service.metrics.enums.Metric;
+import org.apache.iotdb.db.service.metrics.enums.Tag;
+import org.apache.iotdb.metrics.utils.MetricLevel;
+
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.server.ServerContext;
import org.apache.thrift.server.TServerEventHandler;
@@ -37,6 +42,14 @@ public class TransportServerThriftHandler implements
TServerEventHandler {
@Override
public ServerContext createContext(TProtocol input, TProtocol output) {
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "Transport")
+ .incr(1L);
return null;
}
@@ -44,6 +57,14 @@ public class TransportServerThriftHandler implements
TServerEventHandler {
public void deleteContext(ServerContext serverContext, TProtocol input,
TProtocol output) {
// release query resources.
serviceImpl.handleClientExit();
+ MetricsService.getInstance()
+ .getMetricManager()
+ .getOrCreateGauge(
+ Metric.THRIFT_CONNECTIONS.toString(),
+ MetricLevel.CORE,
+ Tag.NAME.toString(),
+ "Transport")
+ .decr(1L);
}
@Override