You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ch...@apache.org on 2021/02/18 11:31:13 UTC
[iotdb] branch feature/metric2021 updated: add micrometer metric
example
This is an automated email from the ASF dual-hosted git repository.
chaow pushed a commit to branch feature/metric2021
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/feature/metric2021 by this push:
new fd1693b add micrometer metric example
fd1693b is described below
commit fd1693b21de189f3d8b00836f239dedaa7e2582d
Author: chaow <xu...@gmail.com>
AuthorDate: Thu Feb 18 19:30:27 2021 +0800
add micrometer metric example
---
.../org/apache/iotdb/metrics/MetricReporter.java | 1 +
.../org/apache/iotdb/metrics/MetricService.java | 94 ++++++------
.../org/apache/iotdb/metrics/type/Counter.java | 2 -
metrics/micrometer-metrics/pom.xml | 23 +++
.../micrometer/MicrometerMetricFactory.java | 97 ++++++++++++
.../micrometer/MicrometerMetricManager.java | 166 +++++++++++++++++++++
.../micrometer/MicrometerMetricReporter.java | 71 +++++++++
.../micrometer/type/MicrometerCounter.java} | 32 +++-
...otdb.metrics.micrometer.MicrometerMetricFactory | 1 +
...tdb.metrics.micrometer.MicrometerMetricReporter | 1 +
metrics/pom.xml | 1 +
.../java/org/apache/iotdb/db/service/IoTDB.java | 4 +-
.../org/apache/iotdb/db/service/TSServiceImpl.java | 4 +
13 files changed, 442 insertions(+), 55 deletions(-)
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
index 1a67cfe..68862f4 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
@@ -2,5 +2,6 @@ package org.apache.iotdb.metrics;
public interface MetricReporter {
boolean start();
+ void setMetricFactory(MetricFactory metricFactory);
boolean stop();
}
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
index 4a6056d..47adaf6 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
@@ -4,64 +4,70 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ServiceLoader;
+
import org.apache.iotdb.metrics.impl.DoNothingFactory;
public class MetricService {
- private static List<MetricReporter> reporters = new ArrayList<>();
+ private static final List<MetricReporter> reporters = new ArrayList<>();
+
+ private static MetricFactory factory;
+
+ static {
+ init();
+ }
+
+ private static void init() {
- private static MetricFactory factory;
+ ServiceLoader<MetricFactory> metricFactories = ServiceLoader.load(MetricFactory.class);
+ int size = 0;
+ MetricFactory nothingFactory = null;
- static {
- init();
- }
+ for (MetricFactory mf : metricFactories) {
+ if (mf instanceof DoNothingFactory) {
+ nothingFactory = mf;
+ continue;
+ }
+ size++;
+// if (size > 1) {
+// throw new RuntimeException("More than one Metric Implementation is detected.");
+// }
+ factory = mf;
+ break;
+ }
- private static void init() {
+ // if no more implementation, we use nothingFactory.
+ if (size == 0) {
+ factory = nothingFactory;
+ }
- ServiceLoader<MetricReporter> reporter = ServiceLoader.load(MetricReporter.class);
- for (MetricReporter r : reporter) {
- reporters.add(r);
- r.start();
+ ServiceLoader<MetricReporter> reporter = ServiceLoader.load(MetricReporter.class);
+ for (MetricReporter r : reporter) {
+ reporters.add(r);
+ r.setMetricFactory(factory);
+ r.start();
+ }
}
- ServiceLoader<MetricFactory> metricFactories = ServiceLoader.load(MetricFactory.class);
- int size = 0;
- MetricFactory nothingFactory = null;
-
- for (MetricFactory mf : metricFactories) {
- if (mf instanceof DoNothingFactory) {
- nothingFactory = mf;
- continue;
- }
- size ++;
- if (size > 1) {
- throw new RuntimeException("More than one Metric Implementation is detected.");
+ public static void stop() {
+ for (MetricReporter r : reporters) {
+ r.stop();
}
- factory = mf;
}
- // if no more implementation, we use nothingFactory.
- if (size == 0) {
- factory = nothingFactory;
+ public static MetricManager getMetric(String namespace) {
+ return factory.getMetric(namespace);
+ }
+
+ public static void enableKnownMetric(KnownMetric metric) {
+ factory.enableKnownMetric(metric);
+ }
+
+ public static Map<String, MetricManager> getAllMetrics() {
+ return factory.getAllMetrics();
}
- }
- public static void stop() {
- for (MetricReporter r : reporters) {
- r.stop();
+ public static boolean isEnable() {
+ return factory.isEnable();
}
- }
-
- public static MetricManager getMetric(String namespace) {
- return factory.getMetric(namespace);
- }
- public static void enableKnownMetric(KnownMetric metric) {
- factory.enableKnownMetric(metric);
- }
- public static Map<String, MetricManager> getAllMetrics() {
- return factory.getAllMetrics();
- }
- public static boolean isEnable() {
- return factory.isEnable();
- }
}
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
index cc4ac5e..1c96e72 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
@@ -21,8 +21,6 @@ package org.apache.iotdb.metrics.type;
public interface Counter extends IMetric {
void inc();
void inc(long n);
- void dec();
- void dec(long n);
long count();
}
diff --git a/metrics/micrometer-metrics/pom.xml b/metrics/micrometer-metrics/pom.xml
new file mode 100644
index 0000000..43d1239
--- /dev/null
+++ b/metrics/micrometer-metrics/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>iotdb-metrics</artifactId>
+ <groupId>org.apache.iotdb</groupId>
+ <version>0.12.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>micrometer-metrics</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.iotdb</groupId>
+ <artifactId>metrics-interface</artifactId>
+ <version>0.12.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.micrometer</groupId>
+ <artifactId>micrometer-registry-prometheus</artifactId>
+ <version>1.6.2</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricFactory.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricFactory.java
new file mode 100644
index 0000000..29a8130
--- /dev/null
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricFactory.java
@@ -0,0 +1,97 @@
+/*
+ * 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.micrometer;
+
+import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
+import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics;
+import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
+import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
+import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
+import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
+import org.apache.iotdb.metrics.KnownMetric;
+import org.apache.iotdb.metrics.MetricFactory;
+import org.apache.iotdb.metrics.MetricManager;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class MicrometerMetricFactory implements MetricFactory {
+ boolean isEnable;
+ Map<String, MetricManager> currentMetricManagers = new ConcurrentHashMap<String, MetricManager>();
+
+ @Override
+ public MetricManager getMetric(String namespace) {
+ if (!isEnable) {
+ return null;
+ }
+ currentMetricManagers.putIfAbsent(namespace, new MicrometerMetricManager());
+ return currentMetricManagers.get(namespace);
+ }
+
+ @Override
+ public void enableKnownMetric(KnownMetric metric) {
+ if (!isEnable) {
+ return;
+ }
+ switch (metric) {
+ case JVM:
+ enableJVMMetrics();
+ break;
+ case SYSTEM:
+ break;
+ case THREAD:
+ break;
+ default:
+ // ignore;
+ }
+ }
+
+ private void enableJVMMetrics() {
+ MeterRegistry meterRegistry = (MeterRegistry) currentMetricManagers.get("iotdb");
+ ClassLoaderMetrics classLoaderMetrics = new ClassLoaderMetrics();
+ classLoaderMetrics.bindTo(meterRegistry);
+ JvmCompilationMetrics jvmCompilationMetrics = new JvmCompilationMetrics();
+ jvmCompilationMetrics.bindTo(meterRegistry);
+ try (JvmGcMetrics jvmGcMetrics = new JvmGcMetrics();
+ JvmHeapPressureMetrics jvmHeapPressureMetrics = new JvmHeapPressureMetrics()) {
+ jvmGcMetrics.bindTo(meterRegistry);
+ jvmHeapPressureMetrics.bindTo(meterRegistry);
+ }
+ JvmMemoryMetrics jvmMemoryMetrics = new JvmMemoryMetrics();
+ jvmMemoryMetrics.bindTo(meterRegistry);
+ JvmThreadMetrics jvmThreadMetrics = new JvmThreadMetrics();
+ jvmThreadMetrics.bindTo(meterRegistry);
+ }
+
+ @Override
+ public Map<String, MetricManager> getAllMetrics() {
+ if (!isEnable) {
+ return Collections.emptyMap();
+ }
+ return currentMetricManagers;
+ }
+
+ @Override
+ public boolean isEnable() {
+ return isEnable;
+ }
+}
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
new file mode 100644
index 0000000..4b6b660
--- /dev/null
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
@@ -0,0 +1,166 @@
+/*
+ * 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.micrometer;
+
+import io.micrometer.core.instrument.Meter;
+import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.prometheus.PrometheusConfig;
+import io.micrometer.prometheus.PrometheusMeterRegistry;
+import org.apache.iotdb.metrics.MetricManager;
+import org.apache.iotdb.metrics.micrometer.type.MicrometerCounter;
+import org.apache.iotdb.metrics.type.Counter;
+import org.apache.iotdb.metrics.type.Gauge;
+import org.apache.iotdb.metrics.type.Histogram;
+import org.apache.iotdb.metrics.type.IMetric;
+import org.apache.iotdb.metrics.type.Rate;
+import org.apache.iotdb.metrics.type.Timer;
+
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class MicrometerMetricManager implements MetricManager {
+ Map<Meter.Id, IMetric> currentMeters;
+
+ io.micrometer.prometheus.PrometheusMeterRegistry prometheusMeterRegistry;
+
+ public MicrometerMetricManager() {
+ prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
+ }
+
+ public MeterRegistry getMeterRegistry() {
+ return prometheusMeterRegistry;
+ }
+
+ @Override
+ public Counter counter(String metric, String... tags) {
+ io.micrometer.core.instrument.Counter innerCounter = prometheusMeterRegistry.counter(metric, tags);
+ IMetric counter = currentMeters.get(innerCounter.getId());
+ if (counter == null) {
+ counter = new MicrometerCounter(innerCounter);
+ currentMeters.put(innerCounter.getId(), counter);
+ }
+ return (Counter) counter;
+ }
+
+ @Override
+ public Gauge gauge(String metric, String... tags) {
+ return null;
+ }
+
+ @Override
+ public Histogram histogram(String metric, String... tags) {
+ return null;
+ }
+
+ @Override
+ public Rate rate(String metric, String... tags) {
+ return null;
+ }
+
+ @Override
+ public Timer timer(String metric, String... tags) {
+ return null;
+ }
+
+ @Override
+ public void count(int delta, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void count(long delta, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void histogram(int value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void histogram(long value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void gauge(int value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void gauge(long value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void meter(int value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void meter(long value, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void timer(long delta, TimeUnit timeUnit, String metric, String... tags) {
+
+ }
+
+ @Override
+ public void timerStart(String metric, String... tags) {
+
+ }
+
+ @Override
+ public void timerEnd(String metric, String... tags) {
+
+ }
+
+ @Override
+ public Map<String, String[]> getAllMetricKeys() {
+ return null;
+ }
+
+ @Override
+ public Map<String[], Counter> getAllCounters() {
+ return null;
+ }
+
+ @Override
+ public Map<String[], Gauge> getAllGauges() {
+ return null;
+ }
+
+ @Override
+ public Map<String[], Rate> getAllMeters() {
+ return null;
+ }
+
+ @Override
+ public Map<String[], Histogram> getAllHistograms() {
+ return null;
+ }
+
+ @Override
+ public Map<String[], Timer> getAllTimers() {
+ return null;
+ }
+}
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
new file mode 100644
index 0000000..f738baa
--- /dev/null
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
@@ -0,0 +1,71 @@
+/*
+ * 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.micrometer;
+
+import com.sun.net.httpserver.HttpServer;
+import io.micrometer.prometheus.PrometheusMeterRegistry;
+import org.apache.iotdb.metrics.MetricFactory;
+import org.apache.iotdb.metrics.MetricReporter;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+
+public class MicrometerMetricReporter implements MetricReporter {
+ MetricFactory micrometerMetricFactory;
+ Thread runThread;
+
+ @Override
+ public boolean start() {
+ try {
+ HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
+ server.createContext("/prometheus", httpExchange -> {
+ String response = ((PrometheusMeterRegistry)
+ ((MicrometerMetricManager) micrometerMetricFactory.getMetric("iotdb"))
+ .getMeterRegistry()).scrape();
+ httpExchange.sendResponseHeaders(200, response.getBytes().length);
+ try (OutputStream os = httpExchange.getResponseBody()) {
+ os.write(response.getBytes());
+ }
+ });
+
+ runThread = new Thread(server::start);
+ runThread.start();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return true;
+ }
+
+ @Override
+ public void setMetricFactory(MetricFactory metricFactory) {
+ micrometerMetricFactory = metricFactory;
+ }
+
+ @Override
+ public boolean stop() {
+ try {
+ runThread.join();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+}
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerCounter.java
similarity index 61%
copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
copy to metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerCounter.java
index cc4ac5e..9fbfa6f 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerCounter.java
@@ -16,13 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.iotdb.metrics.type;
-public interface Counter extends IMetric {
- void inc();
- void inc(long n);
- void dec();
- void dec(long n);
+package org.apache.iotdb.metrics.micrometer.type;
- long count();
+import org.apache.iotdb.metrics.type.Counter;
+
+public class MicrometerCounter implements Counter {
+
+ public MicrometerCounter(io.micrometer.core.instrument.Counter counter) {
+ this.counter = counter;
+ }
+
+ io.micrometer.core.instrument.Counter counter;
+
+ @Override
+ public void inc() {
+ counter.increment();
+ }
+
+ @Override
+ public void inc(long n) {
+ counter.increment(n);
+ }
+
+ @Override
+ public long count() {
+ return (long) counter.count();
+ }
}
diff --git a/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricFactory b/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricFactory
new file mode 100644
index 0000000..a17288f
--- /dev/null
+++ b/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricFactory
@@ -0,0 +1 @@
+org.apache.iotdb.metrics.micrometer.MicrometerMetricFactory
\ No newline at end of file
diff --git a/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricReporter b/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricReporter
new file mode 100644
index 0000000..a96ed11
--- /dev/null
+++ b/metrics/micrometer-metrics/src/main/resources/META-INF.services/org.apache.iotdb.metrics.micrometer.MicrometerMetricReporter
@@ -0,0 +1 @@
+org.apache.iotdb.metrics.micrometer.MicrometerMetricReporter
\ No newline at end of file
diff --git a/metrics/pom.xml b/metrics/pom.xml
index 7a73162..2ac4d14 100644
--- a/metrics/pom.xml
+++ b/metrics/pom.xml
@@ -34,6 +34,7 @@
<url>https://github.com/thulab/iotdb/tree/master/tsfile</url>
<modules>
<module>interface</module>
+ <module>micrometer-metrics</module>
</modules>
<dependencies/>
</project>
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index 44e4d3c..c0c8afc 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -41,8 +41,8 @@ import org.apache.iotdb.db.rescon.SystemInfo;
import org.apache.iotdb.db.rescon.TVListAllocator;
import org.apache.iotdb.db.sync.receiver.SyncServerManager;
import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager;
-import org.apache.iotdb.metrics.MetricRegistry;
import org.apache.iotdb.metrics.MetricManager;
+import org.apache.iotdb.metrics.MetricService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,7 +58,7 @@ public class IoTDB implements IoTDBMBean {
return IoTDBHolder.INSTANCE;
}
- public static MetricRegistry serverMetricRegistry = MetricManager.getMetric("iotdb");
+ public static MetricManager serverMetricManager = MetricService.getMetric("iotdb");
public static void main(String[] args) {
if (args.length > 0) {
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index a92d3d2..ba3515f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -106,6 +106,7 @@ import org.apache.iotdb.db.tools.watermark.WatermarkEncoder;
import org.apache.iotdb.db.utils.FilePathUtils;
import org.apache.iotdb.db.utils.QueryDataSetUtils;
import org.apache.iotdb.db.utils.SchemaUtils;
+import org.apache.iotdb.metrics.type.Counter;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.service.rpc.thrift.ServerProperties;
@@ -208,6 +209,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
private QueryTimeManager queryTimeManager = QueryTimeManager.getInstance();
+ Counter counter = IoTDB.serverMetricManager.counter("request_total", "user", "root");
+
public TSServiceImpl() throws QueryProcessException {
processor = new Planner();
executor = new PlanExecutor();
@@ -1090,6 +1093,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
.debug("Session {} insertRecords, first device {}, first time {}", currSessionId.get(),
req.deviceIds.get(0), req.getTimestamps().get(0));
}
+ counter.inc();
List<TSStatus> statusList = new ArrayList<>();