You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: iotdb-core/metrics/ReadMe.md
+39-77Lines changed: 39 additions & 77 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,30 +20,25 @@
20
20
-->
21
21
Metric Module
22
22
23
-
- In this project, we provide interface and its implementation
23
+
- In this project, we provide the metrics interface and its default implementation
24
24
- metrics-interface
25
25
- metrics-core
26
-
-In each implementation, you can use several types of reporter to report metric
27
-
-Jmx Reporter
26
+
-The built-in implementation supports the following reporters
27
+
-JMX Reporter
28
28
- Prometheus Reporter
29
29
- IoTDB Reporter
30
30
31
31
-[1. Design](#1-design)
32
-
-[2. Test Report](#2-test-report)
33
-
-[2.1. Test Environment](#21-test-environment)
34
-
-[2.2. Test Metrics](#22-test-metrics)
35
-
-[2.3. Test parameters](#23-test-parameters)
36
-
-[2.4. Test Result](#24-test-result)
37
-
-[3. How to use?](#3-how-to-use)
38
-
-[3.1. Configuration](#31-configuration)
39
-
-[3.2. Use Guide in IoTDB Server Module](#32-use-guide-in-iotdb-server-module)
40
-
-[4. How to implement your own metric framework?](#4-how-to-implement-your-own-metric-framework)
41
-
-[5. Some docs](#5-some-docs)
32
+
-[2. How to use?](#2-how-to-use)
33
+
-[2.1. Configuration](#21-configuration)
34
+
-[2.2. Use Guide in IoTDB Server Module](#22-use-guide-in-iotdb-server-module)
35
+
-[3. How to implement your own metric framework?](#3-how-to-implement-your-own-metric-framework)
36
+
-[4. Some docs](#4-some-docs)
42
37
43
38
# 1. Design
44
39
> The acquisition system consists of following four parts.
45
40
46
-
1. Metrics:Provide tools for collecting metric in different scenarios, including Counter, Gauge, Histogram, Timer and Rate, each with tags.
41
+
1. Metrics: Provide tools for collecting metrics in different scenarios, including Counter, AutoGauge, Gauge, Histogram, Timer and Rate, each with tags.
47
42
2. MetricManager
48
43
1. Provide functions such as create, query, update and remove metrics.
49
44
2. Provide its own start and stop methods.
@@ -57,76 +52,43 @@ Metric Module
57
52
3. Provide the ability to load metric sets.
58
53
4. Provide the access of metricManager and CompositeReporter.
59
54
60
-
# 2. Test Report
61
-
We implemented the monitoring framework mainly based on Micrometer, and tested the results as follows:
55
+
# 2. How to use?
62
56
63
-
## 2.1. Test Environment
64
-
1. Processor:Inter(R) Core(TM) i7-1065G7 CPU
65
-
2. RAM: 32G
57
+
## 2.1. Configuration
58
+
Configure the metrics module through `iotdb-system.properties`. The main options supported by the current code are listed below.
66
59
67
-
## 2.2. Test Metrics
68
-
1. We use a single thread to create counter and run the test cases. The test metrics as follows:
69
-
1. memory : Memory usage in MB.
70
-
2. create : The time required to create, in ms.
71
-
3. searchInorder : The time required for the sequential query, in ms.
72
-
4. searchDisorder : The time required for random queries in ms.
60
+
| properties | meaning | example |
61
+
| --- | --- | --- |
62
+
|`dn(cn)_metric_reporter_list`| Reporter list. The current implementation supports `JMX`, `PROMETHEUS` and `IOTDB`. |`JMX,PROMETHEUS`|
| dn(cn)_enable_metric | whether enable the module | true |
103
-
| dn(cn)_enable_performance_stat | Is stat performance of operation latency | true |
104
-
| dn(cn)_metric_reporter_list | the list of reporter | JMX, PROMETHEUS, IOTDB |
105
-
| dn(cn)_metric_level | the init level of metrics | ALL, NORMAL, IMPORTANT, CORE |
106
-
| dn(cn)_metric_async_collect_period | The period of the collection of some metrics in asynchronous way, such as tsfile size. | 5 |
107
-
108
-
3. More details, see User Doc.
109
-
110
-
## 3.2. Use Guide in IoTDB Server Module
111
-
1. Now, MetricService is registered as IService in server and confignode module, you can simple set properties: `dn(cn)_enable_metric=true` to use metric service.
112
-
2. In server module you can easily use these metric by `MetricService.getInstance()`, for example:
69
+
## 2.2. Use Guide in IoTDB Server Module
70
+
1.`MetricService` is registered as an `IService` in both DataNode and ConfigNode modules. Enable it with `dn(cn)_enable_metric=true`.
71
+
2. In server-side code you can use metrics through `MetricService.getInstance()`, for example:
1. You need to implement `reloadProperties` to reload properties when running.
121
-
2. implement your MetricManager
122
-
1. You need to implement your metric manager to manage the creation and deletion of your metrics
123
-
3. implement your reporter
124
-
1. You need to implement jmx reporter and prometheus reporter, notice that your jmx bean name should be unified as `org.apache.iotdb.metrics`
125
-
2. You need to create `src/main/resources/META-INF/services/org.apache.iotdb.metrics.Reporter`,and record your MetricManager class name in this file, such as `org.apache.iotdb.metrics.core.reporter.IoTDBJmxReporter`
126
-
4. implement your specific metric
127
-
1. They are counter, gauge, histogram, histogramSnapshot, rate and timer.
128
-
2. These metrics will be managed by your MetricManager, and reported by your reporter.
129
-
130
-
# 5. Some docs
77
+
3. If you want to bind or remove a metric set, use `addMetricSet(IMetricSet)` and `removeMetricSet(IMetricSet)`.
78
+
79
+
# 3. How to implement your own metric framework?
80
+
1. Implement your metric types and an `AbstractMetricManager`.
81
+
1. The built-in implementation provides Counter, AutoGauge, Gauge, Histogram, Rate and Timer.
82
+
2. Implement your reporters.
83
+
1. Implement `Reporter` for a general reporter.
84
+
2. Implement `JmxReporter` if you need JMX registration. The built-in JMX domain is `org.apache.iotdb.metrics`.
85
+
3. Wire your implementation into the server-side metric service.
86
+
1. The current `MetricService` directly loads `IoTDBMetricManager`, `IoTDBJmxReporter`, `PrometheusReporter` and `IoTDBSessionReporter` in `loadManager()` and `loadReporter()`.
87
+
2. If you replace the default framework, update the corresponding loading logic there.
88
+
4. Keep service descriptor files consistent if your packaging depends on them.
0 commit comments