You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by zy...@apache.org on 2023/03/16 13:07:00 UTC
[iotdb] branch rel/1.1 updated: [To rel/1.1][IOTDB-5675] Metric of Schema Template (#9349)
This is an automated email from the ASF dual-hosted git repository.
zyk 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 23874ae25a [To rel/1.1][IOTDB-5675] Metric of Schema Template (#9349)
23874ae25a is described below
commit 23874ae25ade7b33d72be276b6ac644dd5372d44
Author: Chen YZ <43...@users.noreply.github.com>
AuthorDate: Thu Mar 16 21:06:52 2023 +0800
[To rel/1.1][IOTDB-5675] Metric of Schema Template (#9349)
---
.../Apache-IoTDB-DataNode-Dashboard.json | 920 +++++++++++++++------
docs/UserGuide/Monitor-Alert/Metric-Tool.md | 21 +-
docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md | 19 +-
.../db/metadata/metric/SchemaEngineMemMetric.java | 16 +-
.../db/metadata/metric/SchemaRegionMemMetric.java | 34 +
.../db/metadata/mtree/MTreeBelowSGCachedImpl.java | 26 +-
.../db/metadata/mtree/MTreeBelowSGMemoryImpl.java | 15 +-
.../mtree/snapshot/MemMTreeSnapshotUtil.java | 13 +-
.../db/metadata/mtree/store/MemMTreeStore.java | 4 +-
.../metadata/rescon/ISchemaEngineStatistics.java | 2 +
.../metadata/rescon/ISchemaRegionStatistics.java | 4 +
.../metadata/rescon/MemSchemaEngineStatistics.java | 26 +-
.../metadata/rescon/MemSchemaRegionStatistics.java | 36 +-
.../schemaregion/SchemaRegionMemoryImpl.java | 5 +
.../schemaregion/SchemaRegionSchemaFileImpl.java | 5 +
.../metadata/template/ClusterTemplateManager.java | 7 +
.../iotdb/db/metadata/template/Template.java | 4 +
.../schemaRegion/SchemaStatisticsTest.java | 106 +++
18 files changed, 977 insertions(+), 286 deletions(-)
diff --git a/docs/UserGuide/Monitor-Alert/Apache-IoTDB-DataNode-Dashboard.json b/docs/UserGuide/Monitor-Alert/Apache-IoTDB-DataNode-Dashboard.json
index 2b5ac95dda..673e00ba31 100644
--- a/docs/UserGuide/Monitor-Alert/Apache-IoTDB-DataNode-Dashboard.json
+++ b/docs/UserGuide/Monitor-Alert/Apache-IoTDB-DataNode-Dashboard.json
@@ -11,12 +11,24 @@
],
"__elements": {},
"__requires": [
+ {
+ "type": "panel",
+ "id": "bargauge",
+ "name": "Bar gauge",
+ "version": ""
+ },
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "9.3.1"
},
+ {
+ "type": "panel",
+ "id": "piechart",
+ "name": "Pie chart",
+ "version": ""
+ },
{
"type": "datasource",
"id": "prometheus",
@@ -66,6 +78,81 @@
"links": [],
"liveNow": false,
"panels": [
+ {
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "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"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 0
+ },
+ "id": 231,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "title": "Panel Title",
+ "type": "timeseries"
+ },
{
"collapsed": true,
"datasource": {
@@ -76,7 +163,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 0
+ "y": 8
},
"id": 1,
"panels": [
@@ -136,7 +223,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 41
+ "y": 49
},
"id": 2,
"options": {
@@ -225,7 +312,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 41
+ "y": 49
},
"id": 3,
"options": {
@@ -315,7 +402,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 41
+ "y": 49
},
"id": 4,
"options": {
@@ -371,7 +458,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 1
+ "y": 9
},
"id": 5,
"panels": [
@@ -432,7 +519,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 42
+ "y": 50
},
"id": 6,
"options": {
@@ -521,7 +608,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 42
+ "y": 50
},
"id": 55,
"options": {
@@ -610,7 +697,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 42
+ "y": 50
},
"id": 56,
"options": {
@@ -699,7 +786,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 50
+ "y": 58
},
"id": 9,
"options": {
@@ -789,7 +876,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 50
+ "y": 58
},
"id": 10,
"options": {
@@ -881,7 +968,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 50
+ "y": 58
},
"id": 11,
"options": {
@@ -981,7 +1068,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 58
+ "y": 66
},
"id": 12,
"options": {
@@ -1069,7 +1156,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 58
+ "y": 66
},
"id": 13,
"options": {
@@ -1125,7 +1212,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 2
+ "y": 10
},
"id": 14,
"panels": [
@@ -1185,7 +1272,7 @@
"h": 8,
"w": 12,
"x": 0,
- "y": 3
+ "y": 11
},
"id": 15,
"options": {
@@ -1275,7 +1362,7 @@
"h": 8,
"w": 12,
"x": 12,
- "y": 3
+ "y": 11
},
"id": 16,
"options": {
@@ -1365,7 +1452,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 11
+ "y": 19
},
"id": 17,
"options": {
@@ -1467,7 +1554,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 11
+ "y": 19
},
"id": 18,
"options": {
@@ -1557,7 +1644,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 11
+ "y": 19
},
"id": 19,
"options": {
@@ -1674,7 +1761,7 @@
"h": 8,
"w": 12,
"x": 0,
- "y": 19
+ "y": 27
},
"id": 169,
"options": {
@@ -1797,7 +1884,7 @@
"h": 8,
"w": 12,
"x": 12,
- "y": 19
+ "y": 27
},
"id": 171,
"options": {
@@ -1851,7 +1938,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 3
+ "y": 11
},
"id": 58,
"panels": [
@@ -1912,7 +1999,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 4
+ "y": 12
},
"id": 80,
"options": {
@@ -2000,7 +2087,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 4
+ "y": 12
},
"id": 60,
"options": {
@@ -2088,7 +2175,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 4
+ "y": 12
},
"id": 61,
"options": {
@@ -2176,7 +2263,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 4
+ "y": 12
},
"id": 62,
"options": {
@@ -2264,7 +2351,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 12
+ "y": 20
},
"id": 63,
"options": {
@@ -2352,7 +2439,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 12
+ "y": 20
},
"id": 81,
"options": {
@@ -2440,7 +2527,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 12
+ "y": 20
},
"id": 64,
"options": {
@@ -2528,7 +2615,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 12
+ "y": 20
},
"id": 65,
"options": {
@@ -2616,7 +2703,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 20
+ "y": 28
},
"id": 83,
"options": {
@@ -2704,7 +2791,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 20
+ "y": 28
},
"id": 66,
"options": {
@@ -2792,7 +2879,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 20
+ "y": 28
},
"id": 67,
"options": {
@@ -2880,7 +2967,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 20
+ "y": 28
},
"id": 68,
"options": {
@@ -2968,7 +3055,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 28
+ "y": 36
},
"id": 82,
"options": {
@@ -3056,7 +3143,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 28
+ "y": 36
},
"id": 69,
"options": {
@@ -3144,7 +3231,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 28
+ "y": 36
},
"id": 70,
"options": {
@@ -3232,7 +3319,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 28
+ "y": 36
},
"id": 71,
"options": {
@@ -3320,7 +3407,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 36
+ "y": 44
},
"id": 72,
"options": {
@@ -3408,7 +3495,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 36
+ "y": 44
},
"id": 84,
"options": {
@@ -3496,7 +3583,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 36
+ "y": 44
},
"id": 73,
"options": {
@@ -3584,7 +3671,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 36
+ "y": 44
},
"id": 74,
"options": {
@@ -3672,7 +3759,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 44
+ "y": 52
},
"id": 131,
"options": {
@@ -3761,7 +3848,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 44
+ "y": 52
},
"id": 132,
"options": {
@@ -3850,7 +3937,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 44
+ "y": 52
},
"id": 133,
"options": {
@@ -3940,7 +4027,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 44
+ "y": 52
},
"id": 134,
"options": {
@@ -4029,7 +4116,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 52
+ "y": 60
},
"id": 76,
"options": {
@@ -4117,7 +4204,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 52
+ "y": 60
},
"id": 128,
"options": {
@@ -4205,7 +4292,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 52
+ "y": 60
},
"id": 129,
"options": {
@@ -4293,7 +4380,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 52
+ "y": 60
},
"id": 130,
"options": {
@@ -4381,7 +4468,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 60
+ "y": 68
},
"id": 135,
"options": {
@@ -4469,7 +4556,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 60
+ "y": 68
},
"id": 136,
"options": {
@@ -4557,7 +4644,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 60
+ "y": 68
},
"id": 137,
"options": {
@@ -4645,7 +4732,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 60
+ "y": 68
},
"id": 138,
"options": {
@@ -4733,7 +4820,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 68
+ "y": 76
},
"id": 139,
"options": {
@@ -4821,7 +4908,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 68
+ "y": 76
},
"id": 140,
"options": {
@@ -4909,7 +4996,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 68
+ "y": 76
},
"id": 167,
"options": {
@@ -4998,7 +5085,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 76
+ "y": 84
},
"id": 163,
"options": {
@@ -5087,7 +5174,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 76
+ "y": 84
},
"id": 164,
"options": {
@@ -5176,7 +5263,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 76
+ "y": 84
},
"id": 165,
"options": {
@@ -5265,7 +5352,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 76
+ "y": 84
},
"id": 166,
"options": {
@@ -5320,7 +5407,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 4
+ "y": 12
},
"id": 100,
"panels": [
@@ -5381,7 +5468,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 5
+ "y": 13
},
"id": 75,
"options": {
@@ -5469,7 +5556,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 5
+ "y": 13
},
"id": 85,
"options": {
@@ -5557,7 +5644,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 5
+ "y": 13
},
"id": 77,
"options": {
@@ -5645,7 +5732,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 5
+ "y": 13
},
"id": 78,
"options": {
@@ -5733,7 +5820,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 13
+ "y": 21
},
"id": 86,
"options": {
@@ -5821,7 +5908,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 13
+ "y": 21
},
"id": 87,
"options": {
@@ -5909,7 +5996,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 13
+ "y": 21
},
"id": 88,
"options": {
@@ -5997,7 +6084,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 13
+ "y": 21
},
"id": 89,
"options": {
@@ -6085,7 +6172,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 21
+ "y": 29
},
"id": 90,
"options": {
@@ -6173,7 +6260,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 21
+ "y": 29
},
"id": 91,
"options": {
@@ -6261,7 +6348,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 21
+ "y": 29
},
"id": 92,
"options": {
@@ -6349,7 +6436,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 21
+ "y": 29
},
"id": 93,
"options": {
@@ -6437,7 +6524,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 29
+ "y": 37
},
"id": 94,
"options": {
@@ -6525,7 +6612,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 29
+ "y": 37
},
"id": 95,
"options": {
@@ -6613,7 +6700,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 29
+ "y": 37
},
"id": 96,
"options": {
@@ -6701,7 +6788,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 29
+ "y": 37
},
"id": 97,
"options": {
@@ -6789,7 +6876,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 37
+ "y": 45
},
"id": 98,
"options": {
@@ -6878,7 +6965,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 37
+ "y": 45
},
"id": 101,
"options": {
@@ -6967,7 +7054,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 37
+ "y": 45
},
"id": 102,
"options": {
@@ -7056,7 +7143,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 37
+ "y": 45
},
"id": 103,
"options": {
@@ -7144,7 +7231,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 45
+ "y": 53
},
"id": 104,
"options": {
@@ -7233,7 +7320,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 45
+ "y": 53
},
"id": 105,
"options": {
@@ -7322,7 +7409,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 45
+ "y": 53
},
"id": 106,
"options": {
@@ -7411,7 +7498,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 45
+ "y": 53
},
"id": 107,
"options": {
@@ -7499,7 +7586,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 53
+ "y": 61
},
"id": 108,
"options": {
@@ -7588,7 +7675,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 53
+ "y": 61
},
"id": 109,
"options": {
@@ -7677,7 +7764,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 53
+ "y": 61
},
"id": 110,
"options": {
@@ -7766,7 +7853,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 53
+ "y": 61
},
"id": 111,
"options": {
@@ -7852,7 +7939,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 61
+ "y": 69
},
"id": 112,
"options": {
@@ -7939,7 +8026,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 61
+ "y": 69
},
"id": 113,
"options": {
@@ -8026,7 +8113,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 61
+ "y": 69
},
"id": 114,
"options": {
@@ -8113,7 +8200,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 61
+ "y": 69
},
"id": 115,
"options": {
@@ -8199,7 +8286,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 69
+ "y": 77
},
"id": 116,
"options": {
@@ -8286,7 +8373,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 69
+ "y": 77
},
"id": 117,
"options": {
@@ -8373,7 +8460,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 69
+ "y": 77
},
"id": 118,
"options": {
@@ -8460,7 +8547,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 69
+ "y": 77
},
"id": 119,
"options": {
@@ -8546,7 +8633,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 77
+ "y": 85
},
"id": 120,
"options": {
@@ -8633,7 +8720,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 77
+ "y": 85
},
"id": 121,
"options": {
@@ -8720,7 +8807,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 77
+ "y": 85
},
"id": 122,
"options": {
@@ -8807,7 +8894,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 77
+ "y": 85
},
"id": 123,
"options": {
@@ -8893,7 +8980,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 85
+ "y": 93
},
"id": 124,
"options": {
@@ -8980,7 +9067,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 85
+ "y": 93
},
"id": 125,
"options": {
@@ -9067,7 +9154,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 85
+ "y": 93
},
"id": 126,
"options": {
@@ -9154,7 +9241,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 85
+ "y": 93
},
"id": 127,
"options": {
@@ -9208,7 +9295,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 5
+ "y": 13
},
"id": 142,
"panels": [
@@ -9269,7 +9356,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 6
+ "y": 14
},
"id": 143,
"options": {
@@ -9357,7 +9444,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 6
+ "y": 14
},
"id": 144,
"options": {
@@ -9445,7 +9532,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 6
+ "y": 14
},
"id": 145,
"options": {
@@ -9533,7 +9620,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 6
+ "y": 14
},
"id": 146,
"options": {
@@ -9621,7 +9708,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 14
+ "y": 22
},
"id": 147,
"options": {
@@ -9709,7 +9796,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 14
+ "y": 22
},
"id": 148,
"options": {
@@ -9797,7 +9884,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 14
+ "y": 22
},
"id": 149,
"options": {
@@ -9885,7 +9972,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 14
+ "y": 22
},
"id": 150,
"options": {
@@ -9973,7 +10060,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 22
+ "y": 30
},
"id": 151,
"options": {
@@ -10061,7 +10148,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 22
+ "y": 30
},
"id": 152,
"options": {
@@ -10149,7 +10236,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 22
+ "y": 30
},
"id": 153,
"options": {
@@ -10237,7 +10324,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 22
+ "y": 30
},
"id": 154,
"options": {
@@ -10325,7 +10412,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 30
+ "y": 38
},
"id": 155,
"options": {
@@ -10413,7 +10500,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 30
+ "y": 38
},
"id": 156,
"options": {
@@ -10501,7 +10588,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 30
+ "y": 38
},
"id": 157,
"options": {
@@ -10589,7 +10676,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 30
+ "y": 38
},
"id": 158,
"options": {
@@ -10677,7 +10764,7 @@
"h": 8,
"w": 6,
"x": 0,
- "y": 38
+ "y": 46
},
"id": 159,
"options": {
@@ -10765,7 +10852,7 @@
"h": 8,
"w": 6,
"x": 6,
- "y": 38
+ "y": 46
},
"id": 160,
"options": {
@@ -10853,7 +10940,7 @@
"h": 8,
"w": 6,
"x": 12,
- "y": 38
+ "y": 46
},
"id": 161,
"options": {
@@ -10941,7 +11028,7 @@
"h": 8,
"w": 6,
"x": 18,
- "y": 38
+ "y": 46
},
"id": 162,
"options": {
@@ -10995,7 +11082,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 6
+ "y": 14
},
"id": 20,
"panels": [
@@ -11056,7 +11143,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 7
+ "y": 15
},
"id": 21,
"options": {
@@ -11174,7 +11261,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 7
+ "y": 15
},
"id": 22,
"options": {
@@ -11265,7 +11352,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 7
+ "y": 15
},
"id": 23,
"options": {
@@ -11371,7 +11458,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 15
+ "y": 23
},
"id": 24,
"options": {
@@ -11492,7 +11579,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 15
+ "y": 23
},
"id": 25,
"options": {
@@ -11608,7 +11695,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 15
+ "y": 23
},
"id": 26,
"options": {
@@ -11698,7 +11785,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 23
+ "y": 31
},
"id": 27,
"options": {
@@ -11788,7 +11875,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 23
+ "y": 31
},
"id": 175,
"options": {
@@ -11878,7 +11965,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 23
+ "y": 31
},
"id": 29,
"options": {
@@ -11969,7 +12056,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 31
+ "y": 39
},
"id": 30,
"options": {
@@ -12062,7 +12149,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 31
+ "y": 39
},
"id": 31,
"options": {
@@ -12156,7 +12243,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 31
+ "y": 39
},
"id": 32,
"options": {
@@ -12249,7 +12336,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 39
+ "y": 47
},
"id": 28,
"options": {
@@ -12339,7 +12426,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 39
+ "y": 47
},
"id": 173,
"options": {
@@ -12395,7 +12482,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 7
+ "y": 15
},
"id": 33,
"panels": [
@@ -12426,7 +12513,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 16
+ "y": 24
},
"id": 34,
"options": {
@@ -12521,7 +12608,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 16
+ "y": 24
},
"id": 35,
"options": {
@@ -12625,7 +12712,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 16
+ "y": 24
},
"id": 40,
"options": {
@@ -12717,7 +12804,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 24
+ "y": 32
},
"id": 41,
"options": {
@@ -12833,7 +12920,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 24
+ "y": 32
},
"id": 42,
"options": {
@@ -12937,7 +13024,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 24
+ "y": 32
},
"id": 43,
"options": {
@@ -13051,7 +13138,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 32
+ "y": 40
},
"id": 44,
"options": {
@@ -13175,7 +13262,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 32
+ "y": 40
},
"id": 45,
"options": {
@@ -13276,7 +13363,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 32
+ "y": 40
},
"id": 46,
"options": {
@@ -13379,7 +13466,7 @@
"h": 7,
"w": 8,
"x": 0,
- "y": 40
+ "y": 48
},
"id": 47,
"options": {
@@ -13481,7 +13568,7 @@
"h": 7,
"w": 8,
"x": 8,
- "y": 40
+ "y": 48
},
"id": 48,
"options": {
@@ -13580,7 +13667,7 @@
"h": 7,
"w": 8,
"x": 16,
- "y": 40
+ "y": 48
},
"id": 49,
"options": {
@@ -13680,7 +13767,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 47
+ "y": 55
},
"id": 50,
"options": {
@@ -13816,7 +13903,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 47
+ "y": 55
},
"id": 51,
"options": {
@@ -13950,7 +14037,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 47
+ "y": 55
},
"id": 52,
"options": {
@@ -14041,7 +14128,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 55
+ "y": 63
},
"id": 53,
"options": {
@@ -14132,7 +14219,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 55
+ "y": 63
},
"id": 54,
"options": {
@@ -14200,7 +14287,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 8
+ "y": 16
},
"id": 177,
"panels": [
@@ -14271,7 +14358,7 @@
"h": 8,
"w": 12,
"x": 0,
- "y": 87
+ "y": 95
},
"id": 179,
"options": {
@@ -14362,7 +14449,7 @@
"h": 8,
"w": 12,
"x": 12,
- "y": 87
+ "y": 95
},
"id": 181,
"options": {
@@ -14453,7 +14540,7 @@
"h": 8,
"w": 12,
"x": 0,
- "y": 95
+ "y": 103
},
"id": 183,
"options": {
@@ -14546,7 +14633,7 @@
"h": 8,
"w": 12,
"x": 12,
- "y": 95
+ "y": 103
},
"id": 185,
"options": {
@@ -14635,7 +14722,7 @@
"h": 8,
"w": 8,
"x": 0,
- "y": 103
+ "y": 111
},
"id": 187,
"options": {
@@ -14728,7 +14815,7 @@
"h": 8,
"w": 8,
"x": 8,
- "y": 103
+ "y": 111
},
"id": 189,
"options": {
@@ -14819,7 +14906,7 @@
"h": 8,
"w": 8,
"x": 16,
- "y": 103
+ "y": 111
},
"id": 193,
"options": {
@@ -14913,7 +15000,7 @@
"h": 8,
"w": 12,
"x": 0,
- "y": 111
+ "y": 119
},
"id": 191,
"options": {
@@ -15003,7 +15090,7 @@
"h": 8,
"w": 12,
"x": 12,
- "y": 111
+ "y": 119
},
"id": 195,
"options": {
@@ -15055,7 +15142,7 @@
"h": 1,
"w": 24,
"x": 0,
- "y": 9
+ "y": 17
},
"id": 197,
"panels": [],
@@ -15102,13 +15189,13 @@
},
"gridPos": {
"h": 4,
- "w": 4,
+ "w": 8,
"x": 0,
- "y": 10
+ "y": 18
},
"id": 224,
"options": {
- "colorMode": "value",
+ "colorMode": "none",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
@@ -15140,6 +15227,250 @@
"title": "Schema Engine Mode",
"type": "stat"
},
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "index": 0,
+ "text": "RatisConsensus"
+ },
+ "1": {
+ "index": 1,
+ "text": "SimpleConsensus"
+ }
+ },
+ "type": "value"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 8,
+ "x": 8,
+ "y": 18
+ },
+ "id": 225,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "value"
+ },
+ "pluginVersion": "9.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "schema_engine{name=\"schema_region_consensus\",instance=~\"$instance\"}",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Schema Consensus Protocol",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 8,
+ "x": 16,
+ "y": 18
+ },
+ "id": 219,
+ "options": {
+ "colorMode": "none",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "auto"
+ },
+ "pluginVersion": "9.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "schema_engine{name=\"schema_region_number\",instance=~\"$instance\"}",
+ "instant": false,
+ "legendFormat": "{{name}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Schema Region Number",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ }
+ },
+ "mappings": [],
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 0,
+ "y": 22
+ },
+ "id": 235,
+ "options": {
+ "displayLabels": [],
+ "legend": {
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true,
+ "values": []
+ },
+ "pieType": "pie",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "9.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "sum(quantity{name=\"timeSeries\", instance=~\"$instance\"})-\nsum(quantity{name=\"template_series_cnt\", instance=~\"$instance\"})",
+ "format": "time_series",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Normal",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "quantity{name=\"template_series_cnt\", instance=~\"$instance\"}",
+ "hide": false,
+ "legendFormat": "Template",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Series Type",
+ "transformations": [
+ {
+ "id": "calculateField",
+ "options": {
+ "alias": "normal series",
+ "binary": {
+ "left": "{__name__=\"quantity\", cluster=\"defaultCluster\", instance=\"localhost:9093\", job=\"datanode\", name=\"timeSeries\", nodeId=\"-1\", nodeType=\"DATANODE\"}",
+ "operator": "-",
+ "reducer": "sum",
+ "right": "{__name__=\"quantity\", cluster=\"defaultCluster\", instance=\"localhost:9093\", job=\"datanode\", name=\"template_series_num\", nodeId=\"-1\", nodeType=\"DATANODE\"}"
+ },
+ "mode": "binary",
+ "reduce": {
+ "reducer": "sum"
+ },
+ "replaceFields": false
+ }
+ }
+ ],
+ "type": "piechart"
+ },
{
"datasource": {
"type": "prometheus",
@@ -15168,9 +15499,9 @@
"h": 4,
"w": 4,
"x": 4,
- "y": 10
+ "y": 22
},
- "id": 219,
+ "id": 222,
"options": {
"colorMode": "value",
"graphMode": "area",
@@ -15194,14 +15525,14 @@
},
"editorMode": "code",
"exemplar": false,
- "expr": "schema_engine{name=\"schema_region_number\",instance=~\"$instance\"}",
+ "expr": "quantity{name=\"timeSeries\",instance=~\"$instance\"}",
"instant": false,
"legendFormat": "{{name}}",
"range": true,
"refId": "A"
}
],
- "title": "Schema Region Number",
+ "title": "Time Series Number",
"type": "stat"
},
{
@@ -15320,7 +15651,7 @@
"h": 8,
"w": 16,
"x": 8,
- "y": 10
+ "y": 22
},
"id": 217,
"options": {
@@ -15361,21 +15692,7 @@
"color": {
"mode": "thresholds"
},
- "mappings": [
- {
- "options": {
- "0": {
- "index": 0,
- "text": "RatisConsensus"
- },
- "1": {
- "index": 1,
- "text": "SimpleConsensus"
- }
- },
- "type": "value"
- }
- ],
+ "mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
@@ -15392,13 +15709,13 @@
"gridPos": {
"h": 4,
"w": 4,
- "x": 0,
- "y": 14
+ "x": 4,
+ "y": 26
},
- "id": 225,
+ "id": 236,
"options": {
"colorMode": "value",
- "graphMode": "none",
+ "graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
@@ -15419,14 +15736,14 @@
},
"editorMode": "code",
"exemplar": false,
- "expr": "schema_engine{name=\"schema_region_consensus\",instance=~\"$instance\"}",
+ "expr": "quantity{name=\"template_series_cnt\",instance=~\"$instance\"}",
"instant": false,
"legendFormat": "{{name}}",
"range": true,
"refId": "A"
}
],
- "title": "Schema Consensus Protocol",
+ "title": "Template Series Number",
"type": "stat"
},
{
@@ -15434,10 +15751,41 @@
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
+ "description": "",
"fieldConfig": {
"defaults": {
"color": {
- "mode": "thresholds"
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 1,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
},
"mappings": [],
"thresholds": {
@@ -15446,35 +15794,35 @@
{
"color": "green",
"value": null
+ },
+ {
+ "color": "red",
+ "value": 80
}
]
- },
- "unit": "none"
+ }
},
"overrides": []
},
"gridPos": {
- "h": 4,
- "w": 4,
- "x": 4,
- "y": 14
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 30
},
- "id": 222,
+ "id": 233,
"options": {
- "colorMode": "value",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
},
- "textMode": "value"
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
@@ -15482,23 +15830,20 @@
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
- "exemplar": false,
- "expr": "quantity{name=\"timeSeries\",instance=~\"$instance\"}",
- "instant": false,
- "legendFormat": "{{name}}",
+ "expr": "schema_region{name=\"schema_region_series_cnt\",instance=~\"$instance\"}",
+ "legendFormat": "{{region}}",
"range": true,
"refId": "A"
}
],
- "title": "Time Series Number",
- "type": "stat"
+ "title": "Timeseries Count per SchemaRegion",
+ "type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
- "description": "",
"fieldConfig": {
"defaults": {
"color": {
@@ -15547,17 +15892,18 @@
"value": 80
}
]
- }
+ },
+ "unit": "bytes"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
- "x": 0,
- "y": 18
+ "x": 12,
+ "y": 30
},
- "id": 215,
+ "id": 213,
"options": {
"legend": {
"calcs": [],
@@ -15577,13 +15923,13 @@
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
- "expr": "schema_region{name=\"schema_region_series_cnt\",instance=~\"$instance\"}",
+ "expr": "schema_region{name=\"schema_region_mem_usage\",instance=~\"$instance\"}",
"legendFormat": "{{region}}",
"range": true,
"refId": "A"
}
],
- "title": "Timeseries Count per SchemaRegion",
+ "title": "Memory Usgae per SchemaRegion",
"type": "timeseries"
},
{
@@ -15591,6 +15937,73 @@
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 37
+ },
+ "id": 215,
+ "options": {
+ "displayMode": "gradient",
+ "minVizHeight": 10,
+ "minVizWidth": 0,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true
+ },
+ "pluginVersion": "9.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "editorMode": "code",
+ "expr": "schema_region{name=\"activated_template_cnt\",instance=~\"$instance\"}",
+ "legendFormat": "{{region}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Activated Template Count per SchemaRegion",
+ "type": "bargauge"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "description": "",
"fieldConfig": {
"defaults": {
"color": {
@@ -15639,8 +16052,7 @@
"value": 80
}
]
- },
- "unit": "bytes"
+ }
},
"overrides": []
},
@@ -15648,9 +16060,9 @@
"h": 7,
"w": 12,
"x": 12,
- "y": 18
+ "y": 37
},
- "id": 213,
+ "id": 232,
"options": {
"legend": {
"calcs": [],
@@ -15670,13 +16082,13 @@
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
- "expr": "schema_region{name=\"schema_region_mem_usage\",instance=~\"$instance\"}",
+ "expr": "schema_region{name=\"template_series_cnt\",instance=~\"$instance\"}",
"legendFormat": "{{region}}",
"range": true,
"refId": "A"
}
],
- "title": "Memory Usgae per SchemaRegion",
+ "title": "Template Series Count per SchemaRegion",
"type": "timeseries"
},
{
@@ -15740,7 +16152,7 @@
"h": 7,
"w": 6,
"x": 0,
- "y": 25
+ "y": 44
},
"id": 199,
"options": {
@@ -15836,7 +16248,7 @@
"h": 7,
"w": 6,
"x": 6,
- "y": 25
+ "y": 44
},
"id": 203,
"options": {
@@ -15928,7 +16340,7 @@
"h": 7,
"w": 6,
"x": 12,
- "y": 25
+ "y": 44
},
"id": 209,
"options": {
@@ -16021,7 +16433,7 @@
"h": 7,
"w": 6,
"x": 18,
- "y": 25
+ "y": 44
},
"id": 211,
"options": {
@@ -16113,7 +16525,7 @@
"h": 7,
"w": 6,
"x": 0,
- "y": 32
+ "y": 51
},
"id": 201,
"options": {
@@ -16207,7 +16619,7 @@
"h": 7,
"w": 6,
"x": 6,
- "y": 32
+ "y": 51
},
"id": 205,
"options": {
@@ -16299,7 +16711,7 @@
"h": 7,
"w": 6,
"x": 12,
- "y": 32
+ "y": 51
},
"id": 207,
"options": {
@@ -16391,7 +16803,7 @@
"h": 7,
"w": 6,
"x": 18,
- "y": 32
+ "y": 51
},
"id": 220,
"options": {
@@ -16483,7 +16895,7 @@
"h": 7,
"w": 6,
"x": 0,
- "y": 39
+ "y": 58
},
"id": 221,
"options": {
@@ -16575,7 +16987,7 @@
"h": 7,
"w": 6,
"x": 6,
- "y": 39
+ "y": 58
},
"id": 223,
"options": {
@@ -16668,7 +17080,7 @@
"h": 7,
"w": 6,
"x": 12,
- "y": 39
+ "y": 58
},
"id": 229,
"options": {
@@ -16761,7 +17173,7 @@
"h": 7,
"w": 6,
"x": 18,
- "y": 39
+ "y": 58
},
"id": 228,
"options": {
@@ -16850,8 +17262,8 @@
]
},
"time": {
- "from": "now-20m",
- "to": "now-10m"
+ "from": "now-5m",
+ "to": "now"
},
"timepicker": {
"refresh_intervals": [
@@ -16866,6 +17278,6 @@
"timezone": "browser",
"title": "Apache IoTDB DataNode Dashboard",
"uid": "TbEVYRw7A",
- "version": 20,
+ "version": 5,
"weekStart": ""
}
\ No newline at end of file
diff --git a/docs/UserGuide/Monitor-Alert/Metric-Tool.md b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
index e8145023c1..21f91a2a9c 100644
--- a/docs/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -422,15 +422,18 @@ carefully evaluated. The current Core-level metrics are as follows:
#### 4.2.16 Schema Engine
-| Metric | Tags | Type | Description |
-| ------------- | ------------------------------------------------------------------ | --------- | -------------------------------------- |
-| schema_engine | name="schema_region_total_mem_usage" | AutoGauge | Memory usgae for all SchemaRegion |
-| schema_engine | name="schema_region_mem_capacity" | AutoGauge | Memory capacity for all SchemaRegion |
-| schema_engine | name="schema_engine_mode" | Gauge | Mode of SchemaEngine |
-| schema_engine | name="schema_region_consensus" | Gauge | Consensus protocol of SchemaRegion |
-| schema_engine | name="schema_region_number" | AutoGauge | Number of SchemaRegion |
-| schema_region | name="schema_region_mem_usage", region="SchemaRegion[{regionId}]" | AutoGauge | Memory usgae for each SchemaRegion |
-| schema_region | name="schema_region_series_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | Timeseries count for each SchemaRegion |
+| Metric | Tags | Type | Description |
+| ------------- | ------------------------------------------------------------ | --------- | -------------------------------------------------- |
+| schema_engine | name="schema_region_total_mem_usage" | AutoGauge | Memory usgae for all SchemaRegion |
+| schema_engine | name="schema_region_mem_capacity" | AutoGauge | Memory capacity for all SchemaRegion |
+| schema_engine | name="schema_engine_mode" | Gauge | Mode of SchemaEngine |
+| schema_engine | name="schema_region_consensus" | Gauge | Consensus protocol of SchemaRegion |
+| schema_engine | name="schema_region_number" | AutoGauge | Number of SchemaRegion |
+| quantity | name="template_series_cnt" | AutoGauge | Number of template series |
+| schema_region | name="schema_region_mem_usage", region="SchemaRegion[{regionId}]" | AutoGauge | Memory usgae for each SchemaRegion |
+| schema_region | name="schema_region_series_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | Number of total timeseries for each SchemaRegion |
+| schema_region | name="activated_template_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | Number of Activated template for each SchemaRegion |
+| schema_region | name="template_series_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | Number of template series for each SchemaRegion |
#### 4.2.17 Write Performance
diff --git a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
index e09b74ac4b..6e9fdf309c 100644
--- a/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
+++ b/docs/zh/UserGuide/Monitor-Alert/Metric-Tool.md
@@ -401,15 +401,18 @@ Core 级别的监控指标在系统运行中默认开启,每一个 Core 级别
#### 4.2.16 元数据引擎统计
-| Metric | Tags | Type | Description |
-| ------------- | ------------------------------------------------------------------ | --------- | ---------------------------------- |
-| schema_engine | name="schema_region_total_mem_usage" | AutoGauge | SchemaRegion 全局内存使用量 |
-| schema_engine | name="schema_region_mem_capacity" | AutoGauge | SchemaRegion 全局可用内存 |
-| schema_engine | name="schema_engine_mode" | Gauge | SchemaEngine 模式 |
-| schema_engine | name="schema_region_consensus" | Gauge | 元数据管理引擎共识协议 |
-| schema_engine | name="schema_region_number" | AutoGauge | SchemaRegion 个数 |
-| schema_region | name="schema_region_mem_usage", region="SchemaRegion[{regionId}]" | AutoGauge | 每个 SchemaRegion 分别的内存使用量 |
+| Metric | Tags | Type | Description |
+| ------------- | ------------------------------------------------------------ | --------- | ---------------------------------- |
+| schema_engine | name="schema_region_total_mem_usage" | AutoGauge | SchemaRegion 全局内存使用量 |
+| schema_engine | name="schema_region_mem_capacity" | AutoGauge | SchemaRegion 全局可用内存 |
+| schema_engine | name="schema_engine_mode" | Gauge | SchemaEngine 模式 |
+| schema_engine | name="schema_region_consensus" | Gauge | 元数据管理引擎共识协议 |
+| schema_engine | name="schema_region_number" | AutoGauge | SchemaRegion 个数 |
+| quantity | name="template_series_cnt" | AutoGauge | 模板序列数 |
+| schema_region | name="schema_region_mem_usage", region="SchemaRegion[{regionId}]" | AutoGauge | 每个 SchemaRegion 分别的内存使用量 |
| schema_region | name="schema_region_series_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | 每个 SchemaRegion 分别的时间序列数 |
+| schema_region | name="activated_template_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | 每个 SchemaRegion 激活的模板数 |
+| schema_region | name="template_series_cnt", region="SchemaRegion[{regionId}]" | AutoGauge | 每个 SchemaRegion 的模板序列数 |
### 4.3. Normal 级别监控指标
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaEngineMemMetric.java b/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaEngineMemMetric.java
index 8d56139e63..54f282fbb2 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaEngineMemMetric.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaEngineMemMetric.java
@@ -39,6 +39,8 @@ public class SchemaEngineMemMetric implements ISchemaEngineMetric {
private static final String SCHEMA_CONSENSUS = "schema_region_consensus";
private static final String SCHEMA_ENGINE_MODE = "schema_engine_mode";
+ private static final String TEMPLATE_SERIES_CNT = "template_series_cnt";
+
private final MemSchemaEngineStatistics engineStatistics;
public SchemaEngineMemMetric(MemSchemaEngineStatistics engineStatistics) {
@@ -54,6 +56,13 @@ public class SchemaEngineMemMetric implements ISchemaEngineMetric {
ISchemaEngineStatistics::getTotalSeriesNumber,
Tag.NAME.toString(),
TIME_SERES_CNT);
+ metricService.createAutoGauge(
+ Metric.QUANTITY.toString(),
+ MetricLevel.IMPORTANT,
+ engineStatistics,
+ ISchemaEngineStatistics::getTemplateSeriesNumber,
+ Tag.NAME.toString(),
+ TEMPLATE_SERIES_CNT);
metricService.createAutoGauge(
Metric.MEM.toString(),
MetricLevel.IMPORTANT,
@@ -100,7 +109,12 @@ public class SchemaEngineMemMetric implements ISchemaEngineMetric {
@Override
public void unbindFrom(AbstractMetricService metricService) {
metricService.remove(
- MetricType.AUTO_GAUGE, Metric.QUANTITY.toString(), Tag.NAME.toString(), "timeSeries");
+ MetricType.AUTO_GAUGE, Metric.QUANTITY.toString(), Tag.NAME.toString(), TIME_SERES_CNT);
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.QUANTITY.toString(),
+ Tag.NAME.toString(),
+ TEMPLATE_SERIES_CNT);
metricService.remove(
MetricType.AUTO_GAUGE,
Metric.MEM.toString(),
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaRegionMemMetric.java b/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaRegionMemMetric.java
index a7475537d4..1fc4f4dd63 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaRegionMemMetric.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/metric/SchemaRegionMemMetric.java
@@ -29,6 +29,8 @@ public class SchemaRegionMemMetric implements ISchemaRegionMetric {
private static final String MEM_USAGE = "schema_region_mem_usage";
private static final String SERIES_CNT = "schema_region_series_cnt";
+ private static final String TEMPLATE_CNT = "activated_template_cnt";
+ private static final String TEMPLATE_SERIES_CNT = "template_series_cnt";
private final MemSchemaRegionStatistics regionStatistics;
private final String regionTagValue;
@@ -58,6 +60,24 @@ public class SchemaRegionMemMetric implements ISchemaRegionMetric {
SERIES_CNT,
Tag.REGION.toString(),
regionTagValue);
+ metricService.createAutoGauge(
+ Metric.SCHEMA_REGION.toString(),
+ MetricLevel.IMPORTANT,
+ regionStatistics,
+ MemSchemaRegionStatistics::getTemplateActivatedNumber,
+ Tag.NAME.toString(),
+ TEMPLATE_CNT,
+ Tag.REGION.toString(),
+ regionTagValue);
+ metricService.createAutoGauge(
+ Metric.SCHEMA_REGION.toString(),
+ MetricLevel.IMPORTANT,
+ regionStatistics,
+ MemSchemaRegionStatistics::getTemplateSeriesNumber,
+ Tag.NAME.toString(),
+ TEMPLATE_SERIES_CNT,
+ Tag.REGION.toString(),
+ regionTagValue);
}
@Override
@@ -76,5 +96,19 @@ public class SchemaRegionMemMetric implements ISchemaRegionMetric {
SERIES_CNT,
Tag.REGION.toString(),
regionTagValue);
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.SCHEMA_REGION.toString(),
+ Tag.NAME.toString(),
+ TEMPLATE_CNT,
+ Tag.REGION.toString(),
+ regionTagValue);
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.SCHEMA_REGION.toString(),
+ Tag.NAME.toString(),
+ TEMPLATE_SERIES_CNT,
+ Tag.REGION.toString(),
+ regionTagValue);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
index 60d70848da..a0644e00cb 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGCachedImpl.java
@@ -108,6 +108,7 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
private final IMNode rootNode;
private final Function<IMeasurementMNode, Map<String, String>> tagGetter;
private final int levelOfSG;
+ private final CachedSchemaRegionStatistics regionStatistics;
// region MTree initialization, clear and serialization
public MTreeBelowSGCachedImpl(
@@ -119,6 +120,7 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
CachedSchemaRegionStatistics regionStatistics)
throws MetadataException, IOException {
this.tagGetter = tagGetter;
+ this.regionStatistics = regionStatistics;
store = new CachedMTreeStore(storageGroupPath, schemaRegionId, regionStatistics, flushCallback);
this.storageGroupMNode = store.getRoot().getAsStorageGroupMNode();
this.storageGroupMNode.setParent(storageGroupMNode.getParent());
@@ -145,21 +147,28 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
PartialPath storageGroupPath,
CachedMTreeStore store,
Consumer<IMeasurementMNode> measurementProcess,
- Function<IMeasurementMNode, Map<String, String>> tagGetter)
+ Consumer<IEntityMNode> deviceProcess,
+ Function<IMeasurementMNode, Map<String, String>> tagGetter,
+ CachedSchemaRegionStatistics regionStatistics)
throws MetadataException {
this.store = store;
+ this.regionStatistics = regionStatistics;
this.storageGroupMNode = store.getRoot().getAsStorageGroupMNode();
this.rootNode = store.generatePrefix(storageGroupPath);
levelOfSG = storageGroupMNode.getPartialPath().getNodeLength() - 1;
this.tagGetter = tagGetter;
// recover measurement
- try (MeasurementCollector<?> collector =
- new MeasurementCollector<Void>(
+ try (MNodeCollector<?> collector =
+ new MNodeCollector<Void>(
this.rootNode, new PartialPath(storageGroupMNode.getFullPath()), this.store, true) {
@Override
- protected Void collectMeasurement(IMeasurementMNode node) {
- measurementProcess.accept(node);
+ protected Void collectMNode(IMNode node) {
+ if (node.isMeasurement()) {
+ measurementProcess.accept(node.getAsMeasurementMNode());
+ } else if (node.isEntity()) {
+ deviceProcess.accept(node.getAsEntityMNode());
+ }
return null;
}
}) {
@@ -189,6 +198,7 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
int schemaRegionId,
CachedSchemaRegionStatistics regionStatistics,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
Function<IMeasurementMNode, Map<String, String>> tagGetter,
Runnable flushCallback)
throws IOException, MetadataException {
@@ -197,7 +207,9 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
CachedMTreeStore.loadFromSnapshot(
snapshotDir, storageGroupFullPath, schemaRegionId, regionStatistics, flushCallback),
measurementProcess,
- tagGetter);
+ deviceProcess,
+ tagGetter,
+ regionStatistics);
}
// endregion
@@ -837,6 +849,7 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
entityMNode.setSchemaTemplateId(template.getId());
store.updateMNode(entityMNode);
+ regionStatistics.activateTemplate(template.getId());
} finally {
unPinPath(cur);
}
@@ -902,6 +915,7 @@ public class MTreeBelowSGCachedImpl implements IMTreeBelowSG {
&& node.isPreDeactivateTemplate()) {
resultTemplateSetInfo.put(
node.getPartialPath(), Collections.singletonList(node.getSchemaTemplateId()));
+ regionStatistics.deactivateTemplate(node.getSchemaTemplateId());
node.deactivateTemplate();
store.updateMNode(node);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
index 7d1c397104..465468e24b 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTreeBelowSGMemoryImpl.java
@@ -109,6 +109,7 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
private final IMNode rootNode;
private final Function<IMeasurementMNode, Map<String, String>> tagGetter;
private final int levelOfSG;
+ private final MemSchemaRegionStatistics regionStatistics;
// region MTree initialization, clear and serialization
public MTreeBelowSGMemoryImpl(
@@ -116,6 +117,7 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
Function<IMeasurementMNode, Map<String, String>> tagGetter,
MemSchemaRegionStatistics regionStatistics) {
store = new MemMTreeStore(storageGroupPath, true, regionStatistics);
+ this.regionStatistics = regionStatistics;
this.storageGroupMNode = store.getRoot().getAsStorageGroupMNode();
this.rootNode = store.generatePrefix(storageGroupPath);
levelOfSG = storageGroupPath.getNodeLength() - 1;
@@ -125,8 +127,10 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
private MTreeBelowSGMemoryImpl(
PartialPath storageGroupPath,
MemMTreeStore store,
- Function<IMeasurementMNode, Map<String, String>> tagGetter) {
+ Function<IMeasurementMNode, Map<String, String>> tagGetter,
+ MemSchemaRegionStatistics regionStatistics) {
this.store = store;
+ this.regionStatistics = regionStatistics;
this.storageGroupMNode = store.getRoot().getAsStorageGroupMNode();
this.rootNode = store.generatePrefix(storageGroupPath);
levelOfSG = storageGroupPath.getNodeLength() - 1;
@@ -154,12 +158,15 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
String storageGroupFullPath,
MemSchemaRegionStatistics regionStatistics,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
Function<IMeasurementMNode, Map<String, String>> tagGetter)
throws IOException, IllegalPathException {
return new MTreeBelowSGMemoryImpl(
new PartialPath(storageGroupFullPath),
- MemMTreeStore.loadFromSnapshot(snapshotDir, measurementProcess, regionStatistics),
- tagGetter);
+ MemMTreeStore.loadFromSnapshot(
+ snapshotDir, measurementProcess, deviceProcess, regionStatistics),
+ tagGetter,
+ regionStatistics);
}
// endregion
@@ -719,6 +726,7 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
}
entityMNode.setUseTemplate(true);
entityMNode.setSchemaTemplateId(template.getId());
+ regionStatistics.activateTemplate(template.getId());
}
@Override
@@ -780,6 +788,7 @@ public class MTreeBelowSGMemoryImpl implements IMTreeBelowSG {
&& node.isPreDeactivateTemplate()) {
resultTemplateSetInfo.put(
node.getPartialPath(), Collections.singletonList(node.getSchemaTemplateId()));
+ regionStatistics.deactivateTemplate(node.getSchemaTemplateId());
node.deactivateTemplate();
deleteEmptyInternalMNode(node);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
index b650dc710c..af48f0d2ce 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.metadata.mtree.snapshot;
import org.apache.iotdb.commons.file.SystemFileFactory;
import org.apache.iotdb.db.metadata.MetadataConstant;
import org.apache.iotdb.db.metadata.mnode.EntityMNode;
+import org.apache.iotdb.db.metadata.mnode.IEntityMNode;
import org.apache.iotdb.db.metadata.mnode.IMNode;
import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
import org.apache.iotdb.db.metadata.mnode.InternalMNode;
@@ -107,12 +108,13 @@ public class MemMTreeSnapshotUtil {
public static IMNode loadSnapshot(
File snapshotDir,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
MemSchemaRegionStatistics regionStatistics)
throws IOException {
File snapshot =
SystemFileFactory.INSTANCE.getFile(snapshotDir, MetadataConstant.MTREE_SNAPSHOT);
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(snapshot))) {
- return deserializeFrom(inputStream, measurementProcess, regionStatistics);
+ return deserializeFrom(inputStream, measurementProcess, deviceProcess, regionStatistics);
} catch (Throwable e) {
// This method is only invoked during recovery. If failed, the memory usage should be cleared
// since the loaded schema will not be used.
@@ -157,15 +159,17 @@ public class MemMTreeSnapshotUtil {
private static IMNode deserializeFrom(
InputStream inputStream,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
MemSchemaRegionStatistics regionStatistics)
throws IOException {
byte version = ReadWriteIOUtils.readByte(inputStream);
- return inorderDeserialize(inputStream, measurementProcess, regionStatistics);
+ return inorderDeserialize(inputStream, measurementProcess, deviceProcess, regionStatistics);
}
private static IMNode inorderDeserialize(
InputStream inputStream,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
MemSchemaRegionStatistics regionStatistics)
throws IOException {
MNodeDeserializer deserializer = new MNodeDeserializer();
@@ -177,6 +181,7 @@ public class MemMTreeSnapshotUtil {
deserializer,
inputStream,
measurementProcess,
+ deviceProcess,
regionStatistics);
int childrenNum;
IMNode root = ancestors.peek();
@@ -192,6 +197,7 @@ public class MemMTreeSnapshotUtil {
deserializer,
inputStream,
measurementProcess,
+ deviceProcess,
regionStatistics);
}
}
@@ -204,6 +210,7 @@ public class MemMTreeSnapshotUtil {
MNodeDeserializer deserializer,
InputStream inputStream,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
MemSchemaRegionStatistics regionStatistics)
throws IOException {
byte type = ReadWriteIOUtils.readByte(inputStream);
@@ -221,10 +228,12 @@ public class MemMTreeSnapshotUtil {
case ENTITY_MNODE_TYPE:
childrenNum = ReadWriteIOUtils.readInt(inputStream);
node = deserializer.deserializeEntityMNode(inputStream);
+ deviceProcess.accept(node.getAsEntityMNode());
break;
case STORAGE_GROUP_ENTITY_MNODE_TYPE:
childrenNum = ReadWriteIOUtils.readInt(inputStream);
node = deserializer.deserializeStorageGroupEntityMNode(inputStream);
+ deviceProcess.accept(node.getAsEntityMNode());
break;
case MEASUREMENT_MNODE_TYPE:
childrenNum = 0;
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
index 49b92f7861..791eb17e57 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/store/MemMTreeStore.java
@@ -229,10 +229,12 @@ public class MemMTreeStore implements IMTreeStore {
public static MemMTreeStore loadFromSnapshot(
File snapshotDir,
Consumer<IMeasurementMNode> measurementProcess,
+ Consumer<IEntityMNode> deviceProcess,
MemSchemaRegionStatistics regionStatistics)
throws IOException {
return new MemMTreeStore(
- MemMTreeSnapshotUtil.loadSnapshot(snapshotDir, measurementProcess, regionStatistics),
+ MemMTreeSnapshotUtil.loadSnapshot(
+ snapshotDir, measurementProcess, deviceProcess, regionStatistics),
regionStatistics);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaEngineStatistics.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaEngineStatistics.java
index 5109c7a083..88189f68b1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaEngineStatistics.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaEngineStatistics.java
@@ -32,6 +32,8 @@ public interface ISchemaEngineStatistics {
int getSchemaRegionNumber();
+ long getTemplateSeriesNumber();
+
MemSchemaEngineStatistics getAsMemSchemaEngineStatistics();
CachedSchemaEngineStatistics getAsCachedSchemaEngineStatistics();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaRegionStatistics.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaRegionStatistics.java
index a03d229b70..6dade84995 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaRegionStatistics.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/ISchemaRegionStatistics.java
@@ -28,6 +28,10 @@ public interface ISchemaRegionStatistics {
long getSeriesNumber();
+ int getTemplateActivatedNumber();
+
+ long getTemplateSeriesNumber();
+
MemSchemaRegionStatistics getAsMemSchemaRegionStatistics();
CachedSchemaRegionStatistics getAsCachedSchemaRegionStatistics();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaEngineStatistics.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaEngineStatistics.java
index 7fad2d55e5..a683e343dc 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaEngineStatistics.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaEngineStatistics.java
@@ -20,10 +20,13 @@ package org.apache.iotdb.db.metadata.rescon;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
+import org.apache.iotdb.db.metadata.template.ClusterTemplateManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
/** This class is used to record the global statistics of SchemaEngine in Memory mode */
@@ -39,6 +42,8 @@ public class MemSchemaEngineStatistics implements ISchemaEngineStatistics {
private final AtomicLong totalSeriesNumber = new AtomicLong(0);
+ private final Map<Integer, Integer> templateUsage = new ConcurrentHashMap<>();
+
private volatile boolean allowToCreateNewSeries = true;
@Override
@@ -82,7 +87,7 @@ public class MemSchemaEngineStatistics implements ISchemaEngineStatistics {
@Override
public long getTotalSeriesNumber() {
- return totalSeriesNumber.get();
+ return totalSeriesNumber.get() + getTemplateSeriesNumber();
}
@Override
@@ -90,6 +95,25 @@ public class MemSchemaEngineStatistics implements ISchemaEngineStatistics {
return SchemaEngine.getInstance().getSchemaRegionNumber();
}
+ @Override
+ public long getTemplateSeriesNumber() {
+ ClusterTemplateManager clusterTemplateManager = ClusterTemplateManager.getInstance();
+ return templateUsage.entrySet().stream()
+ .mapToLong(
+ i ->
+ (long) clusterTemplateManager.getTemplate(i.getKey()).getMeasurementNumber()
+ * i.getValue())
+ .sum();
+ }
+
+ public void activateTemplate(int templateId) {
+ templateUsage.compute(templateId, (k, v) -> (v == null) ? 1 : v + 1);
+ }
+
+ public void deactivateTemplate(int templateId, int cnt) {
+ templateUsage.compute(templateId, (k, v) -> (v == null || v <= cnt) ? null : v - cnt);
+ }
+
public void addTimeseries(long addedNum) {
totalSeriesNumber.addAndGet(addedNum);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaRegionStatistics.java b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaRegionStatistics.java
index 96f1895334..c8747d3b07 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaRegionStatistics.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rescon/MemSchemaRegionStatistics.java
@@ -18,6 +18,10 @@
*/
package org.apache.iotdb.db.metadata.rescon;
+import org.apache.iotdb.db.metadata.template.ClusterTemplateManager;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
/** This class is used to record statistics within the SchemaRegion in Memory mode */
@@ -27,6 +31,7 @@ public class MemSchemaRegionStatistics implements ISchemaRegionStatistics {
private final int schemaRegionId;
private final AtomicLong memoryUsage = new AtomicLong(0);
private final AtomicLong seriesNumber = new AtomicLong(0);
+ private final Map<Integer, Integer> templateUsage = new ConcurrentHashMap<>();
private long mLogLength = 0;
@@ -52,7 +57,7 @@ public class MemSchemaRegionStatistics implements ISchemaRegionStatistics {
@Override
public long getSeriesNumber() {
- return seriesNumber.get();
+ return seriesNumber.get() + getTemplateSeriesNumber();
}
public void addTimeseries(long addedNum) {
@@ -65,6 +70,32 @@ public class MemSchemaRegionStatistics implements ISchemaRegionStatistics {
schemaEngineStatistics.deleteTimeseries(deletedNum);
}
+ @Override
+ public int getTemplateActivatedNumber() {
+ return templateUsage.size();
+ }
+
+ @Override
+ public long getTemplateSeriesNumber() {
+ ClusterTemplateManager clusterTemplateManager = ClusterTemplateManager.getInstance();
+ return templateUsage.entrySet().stream()
+ .mapToLong(
+ i ->
+ (long) clusterTemplateManager.getTemplate(i.getKey()).getMeasurementNumber()
+ * i.getValue())
+ .sum();
+ }
+
+ public void activateTemplate(int templateId) {
+ templateUsage.compute(templateId, (k, v) -> (v == null) ? 1 : v + 1);
+ schemaEngineStatistics.activateTemplate(templateId);
+ }
+
+ public void deactivateTemplate(int templateId) {
+ templateUsage.compute(templateId, (k, v) -> (v == null || v == 1) ? null : v - 1);
+ schemaEngineStatistics.deactivateTemplate(templateId, 1);
+ }
+
@Override
public long getRegionMemoryUsage() {
return memoryUsage.get();
@@ -99,5 +130,8 @@ public class MemSchemaRegionStatistics implements ISchemaRegionStatistics {
schemaEngineStatistics.deleteTimeseries(seriesNumber.get());
memoryUsage.getAndSet(0);
seriesNumber.getAndSet(0);
+ templateUsage.forEach(
+ (templateId, cnt) -> schemaEngineStatistics.deactivateTemplate(templateId, cnt));
+ templateUsage.clear();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
index 59383c6f01..fb9d0e8dc5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionMemoryImpl.java
@@ -476,6 +476,11 @@ public class SchemaRegionMemoryImpl implements ISchemaRegion {
schemaRegionId);
}
},
+ deviceMNode -> {
+ if (deviceMNode.getSchemaTemplateIdWithState() >= 0) {
+ regionStatistics.activateTemplate(deviceMNode.getSchemaTemplateId());
+ }
+ },
tagManager::readTags);
logger.info(
"MTree snapshot loading of schemaRegion {} costs {}ms.",
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
index dbf2e59185..7968407c14 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/schemaregion/SchemaRegionSchemaFileImpl.java
@@ -516,6 +516,11 @@ public class SchemaRegionSchemaFileImpl implements ISchemaRegion {
schemaRegionId);
}
},
+ deviceMNode -> {
+ if (deviceMNode.getSchemaTemplateIdWithState() >= 0) {
+ regionStatistics.activateTemplate(deviceMNode.getSchemaTemplateId());
+ }
+ },
tagManager::readTags,
this::flushCallback);
logger.info(
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/template/ClusterTemplateManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/template/ClusterTemplateManager.java
index 1350a07a04..1eb2d28477 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/template/ClusterTemplateManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/template/ClusterTemplateManager.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.commons.consensus.ConfigRegionId;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.exception.IoTDBException;
import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.confignode.rpc.thrift.TCreateSchemaTemplateReq;
import org.apache.iotdb.confignode.rpc.thrift.TGetAllTemplatesResp;
import org.apache.iotdb.confignode.rpc.thrift.TGetPathsSetTemplatesResp;
@@ -365,4 +366,10 @@ public class ClusterTemplateManager implements ITemplateManager {
readWriteLock.writeLock().unlock();
}
}
+
+ @TestOnly
+ public void putTemplate(Template template) {
+ templateIdMap.put(template.getId(), template);
+ templateNameMap.put(template.getName(), template.getId());
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
index a2a2130cce..1b2a831f84 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
@@ -170,6 +170,10 @@ public class Template implements Serializable {
return isDirectAligned;
}
+ public int getMeasurementNumber() {
+ return schemaMap.size();
+ }
+
// region construct template tree
/** Construct aligned measurements, checks prefix equality, path duplication and conflict */
private void constructTemplateTree(String[] alignedPaths, IMeasurementSchema[] schemas)
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
index 6e1383275f..c494b55b47 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaStatisticsTest.java
@@ -30,11 +30,14 @@ import org.apache.iotdb.db.metadata.mnode.StorageGroupMNode;
import org.apache.iotdb.db.metadata.mnode.estimator.BasicMNodSizeEstimator;
import org.apache.iotdb.db.metadata.mnode.estimator.IMNodeSizeEstimator;
import org.apache.iotdb.db.metadata.mtree.store.disk.memcontrol.CachedMNodeSizeEstimator;
+import org.apache.iotdb.db.metadata.plan.schemaregion.impl.write.SchemaRegionWritePlanFactory;
import org.apache.iotdb.db.metadata.rescon.CachedSchemaEngineStatistics;
import org.apache.iotdb.db.metadata.rescon.CachedSchemaRegionStatistics;
import org.apache.iotdb.db.metadata.rescon.ISchemaEngineStatistics;
import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
import org.apache.iotdb.db.metadata.schemaregion.SchemaEngine;
+import org.apache.iotdb.db.metadata.template.ClusterTemplateManager;
+import org.apache.iotdb.db.metadata.template.Template;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -44,6 +47,10 @@ import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
public class SchemaStatisticsTest extends AbstractSchemaRegionTest {
@@ -248,4 +255,103 @@ public class SchemaStatisticsTest extends AbstractSchemaRegionTest {
engineStatistics.getUnpinnedMemorySize());
}
}
+
+ @Test
+ public void testTemplateStatistics() throws Exception {
+ ISchemaEngineStatistics engineStatistics =
+ SchemaEngine.getInstance().getSchemaEngineStatistics();
+ ISchemaRegion schemaRegion1 = getSchemaRegion("root.sg1", 0);
+ ISchemaRegion schemaRegion2 = getSchemaRegion("root.sg2", 1);
+ schemaRegion1.createTimeseries(
+ SchemaRegionWritePlanFactory.getCreateTimeSeriesPlan(
+ new PartialPath("root.sg.wf01.wt01.status"),
+ TSDataType.BOOLEAN,
+ TSEncoding.PLAIN,
+ CompressionType.SNAPPY,
+ null,
+ null,
+ null,
+ null),
+ -1);
+ Template template1 =
+ new Template(
+ "t1",
+ Arrays.asList(
+ Collections.singletonList("s1"),
+ Collections.singletonList("s2"),
+ Collections.singletonList("s3")),
+ Arrays.asList(
+ Collections.singletonList(TSDataType.DOUBLE),
+ Collections.singletonList(TSDataType.INT32),
+ Collections.singletonList(TSDataType.BOOLEAN)),
+ Arrays.asList(
+ Collections.singletonList(TSEncoding.RLE),
+ Collections.singletonList(TSEncoding.RLE),
+ Collections.singletonList(TSEncoding.RLE)),
+ Arrays.asList(
+ Collections.singletonList(CompressionType.SNAPPY),
+ Collections.singletonList(CompressionType.SNAPPY),
+ Collections.singletonList(CompressionType.SNAPPY)));
+ template1.setId(1);
+ Template template2 =
+ new Template(
+ "t2",
+ Arrays.asList(
+ Collections.singletonList("temperature"), Collections.singletonList("status")),
+ Arrays.asList(
+ Collections.singletonList(TSDataType.DOUBLE),
+ Collections.singletonList(TSDataType.INT32)),
+ Arrays.asList(
+ Collections.singletonList(TSEncoding.RLE),
+ Collections.singletonList(TSEncoding.RLE)),
+ Arrays.asList(
+ Collections.singletonList(CompressionType.SNAPPY),
+ Collections.singletonList(CompressionType.SNAPPY)));
+ template2.setId(2);
+ ClusterTemplateManager.getInstance().putTemplate(template1);
+ ClusterTemplateManager.getInstance().putTemplate(template2);
+ for (int i = 0; i < 4; i++) {
+ schemaRegion1.activateSchemaTemplate(
+ SchemaRegionWritePlanFactory.getActivateTemplateInClusterPlan(
+ new PartialPath("root.sg1.d" + i), 2, 1),
+ template1);
+ schemaRegion2.activateSchemaTemplate(
+ SchemaRegionWritePlanFactory.getActivateTemplateInClusterPlan(
+ new PartialPath("root.sg2.d" + i), 2, 1),
+ template1);
+ }
+ schemaRegion2.activateSchemaTemplate(
+ SchemaRegionWritePlanFactory.getActivateTemplateInClusterPlan(
+ new PartialPath("root.sg2.wf01.wt02"), 3, 2),
+ template2);
+
+ // check template statistic
+ Assert.assertEquals(26, engineStatistics.getTemplateSeriesNumber());
+ Assert.assertEquals(27, engineStatistics.getTotalSeriesNumber());
+ Assert.assertEquals(13, schemaRegion1.getSchemaRegionStatistics().getSeriesNumber());
+ Assert.assertEquals(12, schemaRegion1.getSchemaRegionStatistics().getTemplateSeriesNumber());
+ Assert.assertEquals(14, schemaRegion2.getSchemaRegionStatistics().getSeriesNumber());
+ Assert.assertEquals(14, schemaRegion2.getSchemaRegionStatistics().getTemplateSeriesNumber());
+
+ // deactivate template
+ // construct schema blacklist with template on root.sg.wf01.wt01 and root.sg.wf02
+ Map<PartialPath, List<Integer>> allDeviceTemplateMap = new HashMap<>();
+ allDeviceTemplateMap.put(new PartialPath("root.**.d0"), Arrays.asList(1, 2));
+ schemaRegion1.constructSchemaBlackListWithTemplate(
+ SchemaRegionWritePlanFactory.getPreDeactivateTemplatePlan(allDeviceTemplateMap));
+ schemaRegion2.constructSchemaBlackListWithTemplate(
+ SchemaRegionWritePlanFactory.getPreDeactivateTemplatePlan(allDeviceTemplateMap));
+ schemaRegion1.deactivateTemplateInBlackList(
+ SchemaRegionWritePlanFactory.getDeactivateTemplatePlan(allDeviceTemplateMap));
+ schemaRegion2.deactivateTemplateInBlackList(
+ SchemaRegionWritePlanFactory.getDeactivateTemplatePlan(allDeviceTemplateMap));
+
+ // check template statistic
+ Assert.assertEquals(20, engineStatistics.getTemplateSeriesNumber());
+ Assert.assertEquals(21, engineStatistics.getTotalSeriesNumber());
+ Assert.assertEquals(10, schemaRegion1.getSchemaRegionStatistics().getSeriesNumber());
+ Assert.assertEquals(9, schemaRegion1.getSchemaRegionStatistics().getTemplateSeriesNumber());
+ Assert.assertEquals(11, schemaRegion2.getSchemaRegionStatistics().getSeriesNumber());
+ Assert.assertEquals(11, schemaRegion2.getSchemaRegionStatistics().getTemplateSeriesNumber());
+ }
}