@nsshunt/stsappframework 3.3.183 → 3.3.186
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +300 -319
- package/dist/commonTypes.js +11 -11
- package/dist/commonTypes.js.map +1 -1
- package/dist/logger/stsTransportLoggerSocket.js +6 -0
- package/dist/logger/stsTransportLoggerSocket.js.map +1 -1
- package/dist/process/appConfig.js +103 -0
- package/dist/process/appConfig.js.map +1 -0
- package/dist/process/masterprocessbase.js +1 -55
- package/dist/process/masterprocessbase.js.map +1 -1
- package/dist/process/plugins/plugintypes.js +2 -0
- package/dist/process/plugins/plugintypes.js.map +1 -0
- package/dist/process/plugins/stsconfigplugin.js +16 -0
- package/dist/process/plugins/stsconfigplugin.js.map +1 -0
- package/dist/process/plugins/stsloggerplugin.js +26 -0
- package/dist/process/plugins/stsloggerplugin.js.map +1 -0
- package/dist/process/plugins/stsmetricsplugin.js +89 -0
- package/dist/process/plugins/stsmetricsplugin.js.map +1 -0
- package/dist/process/plugins/ststestplugin.js +26 -0
- package/dist/process/plugins/ststestplugin.js.map +1 -0
- package/dist/process/processbase.js +0 -3
- package/dist/process/processbase.js.map +1 -1
- package/dist/process/server.js +4 -0
- package/dist/process/server.js.map +1 -0
- package/dist/process/serverprocessbase.js +9 -6
- package/dist/process/serverprocessbase.js.map +1 -1
- package/dist/process/singleprocessbase.js +1 -14
- package/dist/process/singleprocessbase.js.map +1 -1
- package/dist/process/stsapp.js +48 -0
- package/dist/process/stsapp.js.map +1 -0
- package/package.json +13 -13
- package/types/commonTypes.d.ts +1 -2
- package/types/commonTypes.d.ts.map +1 -1
- package/types/logger/stsTransportLoggerSocket.d.ts +1 -0
- package/types/logger/stsTransportLoggerSocket.d.ts.map +1 -1
- package/types/process/appConfig.d.ts +3 -0
- package/types/process/appConfig.d.ts.map +1 -0
- package/types/process/masterprocessbase.d.ts +0 -2
- package/types/process/masterprocessbase.d.ts.map +1 -1
- package/types/process/plugins/plugintypes.d.ts +7 -0
- package/types/process/plugins/plugintypes.d.ts.map +1 -0
- package/types/process/plugins/stsconfigplugin.d.ts +10 -0
- package/types/process/plugins/stsconfigplugin.d.ts.map +1 -0
- package/types/process/plugins/stsloggerplugin.d.ts +14 -0
- package/types/process/plugins/stsloggerplugin.d.ts.map +1 -0
- package/types/process/plugins/stsmetricsplugin.d.ts +19 -0
- package/types/process/plugins/stsmetricsplugin.d.ts.map +1 -0
- package/types/process/plugins/ststestplugin.d.ts +10 -0
- package/types/process/plugins/ststestplugin.d.ts.map +1 -0
- package/types/process/processbase.d.ts +0 -2
- package/types/process/processbase.d.ts.map +1 -1
- package/types/process/server.d.ts +5 -0
- package/types/process/server.d.ts.map +1 -0
- package/types/process/serverprocessbase.d.ts.map +1 -1
- package/types/process/singleprocessbase.d.ts +0 -2
- package/types/process/singleprocessbase.d.ts.map +1 -1
- package/types/process/stsapp.d.ts +12 -0
- package/types/process/stsapp.d.ts.map +1 -0
- package/dist/validation/errors.js +0 -7
- package/dist/validation/errors.js.map +0 -1
- package/types/validation/errors.d.ts +0 -7
- package/types/validation/errors.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# stsappframework
|
|
2
2
|
|
|
3
|
+
const readonly app = createSTSApp();
|
|
4
|
+
|
|
5
|
+
// Example for the master process
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
app
|
|
9
|
+
.use(configManager, configManagerOptions)
|
|
10
|
+
.use(clusterManager, clusterManagementOptions)
|
|
11
|
+
.use(metrics, metricsOptions)
|
|
12
|
+
.use(logger, loggerOptions)
|
|
13
|
+
.Start()
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
// Example for the worker process
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
app
|
|
20
|
+
.use(configManager, configManagerOptions)
|
|
21
|
+
.use(metrics, metricsOptions)
|
|
22
|
+
.use(logger, loggerOptions)
|
|
23
|
+
.use(server, serverOptions)
|
|
24
|
+
.use(socketIoserver, socketIoserverOptions)
|
|
25
|
+
.use(latencyController, latencyControllerOptions)
|
|
26
|
+
.use(promtheusProvider, promtheusProviderOptions)
|
|
27
|
+
.use(appController01, appController01Options)
|
|
28
|
+
.use(appController02, appController02Options)
|
|
29
|
+
.Start()
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
// Example for a single process
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
app
|
|
36
|
+
.use(configManager, configManagerOptions)
|
|
37
|
+
.use(metrics, metricsOptions)
|
|
38
|
+
.use(logger, loggerOptions)
|
|
39
|
+
.use(server, serverOptions)
|
|
40
|
+
.Start()
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
export const STSInstrumentControllerPluginKey: InjectionKey<PublishInstrumentController> =
|
|
45
|
+
Symbol("STSInstrumentControllerPlugin");
|
|
46
|
+
|
|
47
|
+
export const STSInstrumentControllerPlugin = {
|
|
48
|
+
install: (app: App, options: IPublishInstrumentControllerOptions): void => {
|
|
49
|
+
app.provide(
|
|
50
|
+
STSInstrumentControllerPluginKey,
|
|
51
|
+
new PublishInstrumentController(options)
|
|
52
|
+
);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
```
|
|
56
|
+
|
|
3
57
|
TODO
|
|
4
58
|
|
|
5
59
|
Candidate options for @decorators
|
|
@@ -12,46 +66,42 @@ ipc message manager
|
|
|
12
66
|
master logger
|
|
13
67
|
instrumentation
|
|
14
68
|
|
|
15
|
-
|
|
16
69
|
the DI container will hold
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
70
|
+
database
|
|
71
|
+
redis
|
|
72
|
+
agent manager
|
|
73
|
+
master logger
|
|
74
|
+
instrumentation
|
|
75
|
+
publish instrument controller
|
|
76
|
+
ipc message manager
|
|
25
77
|
|
|
26
78
|
these (processbase)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
79
|
+
#options: ProcessOptions;
|
|
80
|
+
#instrumentController: PublishInstrumentController | null = null;
|
|
81
|
+
#systemInformationInterval: NodeJS.Timeout | null = null;
|
|
82
|
+
//@@#socketIoServerHelper: ISocketIoServerHelper<STSDefaultClientToServerEvents, STSDefaultServerToClientEvents> | null = null;
|
|
83
|
+
#accessLayer: IDBAccessLayer | null = null;
|
|
84
|
+
#instrumentControllerAgentManager: IAgentManager;
|
|
33
85
|
|
|
34
86
|
serverprocessbase
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
87
|
+
#masterProcessExitTime = goptions.masterProcessExitTime;
|
|
88
|
+
#io: Server | null = null;
|
|
89
|
+
//#redisClient: RedisClientType | Redis | null = null;
|
|
90
|
+
#redisClient: Redis | null = null;
|
|
91
|
+
#httpServer: any = null;
|
|
92
|
+
#expressServer: STSExpressServer | null = null;
|
|
93
|
+
#sockets: net.Socket[] = [ ];
|
|
94
|
+
#shuttingDown = false;
|
|
95
|
+
#CORE_DOMAIN = 'stscore.stsmda.org';
|
|
44
96
|
|
|
97
|
+
1. Create working RAFT (sRAFT for STS RAFT) for cluster management
|
|
45
98
|
|
|
46
|
-
|
|
47
|
-
1. Create working RAFT (sRAFT for STS RAFT) for cluster management
|
|
48
|
-
|
|
49
|
-
2. Create a REDIS STREAM service to request data from all REDIS cluster clients
|
|
99
|
+
2. Create a REDIS STREAM service to request data from all REDIS cluster clients
|
|
50
100
|
|
|
51
101
|
example use case: stsinstrumentmanager;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
102
|
+
get all socket.io namespaces and socket details for all workers across all instances
|
|
103
|
+
get all redis listeners for all workers across all instances
|
|
104
|
+
get all RAFT details for all workers across all instances
|
|
55
105
|
|
|
56
106
|
using STSServiceController below
|
|
57
107
|
1. query STSServiceController for all stsinstrumentmanager worker instances
|
|
@@ -64,11 +114,8 @@ serverprocessbase
|
|
|
64
114
|
6. if all responses, send responses with OK status
|
|
65
115
|
7. if timeout, send responses with TIMEOUT status
|
|
66
116
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
117
|
New Service: STSServiceController
|
|
71
|
-
|
|
118
|
+
Eventually, this will need to use RAFT for a cluster configuration
|
|
72
119
|
|
|
73
120
|
Single instance in cluster mode
|
|
74
121
|
main thread to hold all STSServiceData
|
|
@@ -83,148 +130,101 @@ New Service: STSServiceController
|
|
|
83
130
|
|
|
84
131
|
services can query the STSServiceController to get service information for all sts services and apps
|
|
85
132
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
Influx DB Notes
|
|
105
|
-
-----------------------------
|
|
133
|
+
## Influx DB Notes
|
|
106
134
|
|
|
107
135
|
|> histogram(bins: [0.0, 10.0, 20.0, 50.0, 100.0, 1000.0, 50000.0, math.mInf(sign: 1) ])
|
|
108
136
|
|
|
109
|
-
|> histogramQuantile(quantile: 0.99999)
|
|
110
|
-
|
|
137
|
+
|> histogramQuantile(quantile: 0.99999)
|
|
111
138
|
|
|
112
139
|
option task = {name: "downsample-daily", every: 1d}
|
|
113
140
|
|
|
114
|
-
|
|
115
141
|
option task = {name: "downsample-daily", every: 1d}
|
|
116
142
|
|
|
117
143
|
from(bucket: "my-db/")
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
144
|
+
|> range(start: -task.every)
|
|
145
|
+
|> filter(fn: (r) => r.\_measurement == "example-measurement")
|
|
146
|
+
|> filter(fn: (r) => r.\_field == "example-field")
|
|
147
|
+
|> aggregateWindow(every: 1h, fn: mean)
|
|
148
|
+
|> set(key: "\_measurement", value: "average-example-measurement")
|
|
149
|
+
|> to(org: "example-org", bucket: "my-db/example-rp")
|
|
127
150
|
|
|
128
151
|
|> set(key: "_measurement", value: "sts01")
|
|
129
152
|
|> to(org: "my-org", bucket: "TestBucket01")
|
|
130
153
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|> last()
|
|
143
|
-
|> filter(fn: (r) => r["_measurement"] == "service")
|
|
144
|
-
|> filter(fn: (r) => r["_field"] != "memory")
|
|
145
|
-
|> group(columns: ["_field"])
|
|
146
|
-
|> sum()
|
|
147
|
-
|> map(
|
|
148
|
-
fn: (r) => ({r with _time: now(), _measurement: "sts01"}),
|
|
149
|
-
)
|
|
150
|
-
|> to(org: "my-org", bucket: "TestBucket01")
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
from(bucket: "TestBucket01")
|
|
155
|
+
|> range(start: -5s)
|
|
156
|
+
|> last()
|
|
157
|
+
|> filter(fn: (r) => r["_measurement"] == "service")
|
|
158
|
+
|> filter(fn: (r) => r["_field"] != "memory")
|
|
159
|
+
|> group(columns: ["_field"])
|
|
160
|
+
|> sum()
|
|
161
|
+
|> map(
|
|
162
|
+
fn: (r) => ({r with \_time: now(), \_measurement: "sts01"}),
|
|
163
|
+
)
|
|
164
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
154
165
|
|
|
155
166
|
group(columns: ["serviceId", "serviceInstanceId", "_field"])
|
|
156
167
|
|
|
157
|
-
|
|
158
168
|
option task = {name: "task-sts-stats-sum", every: 1s}
|
|
159
169
|
from(bucket: "TestBucket01")
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
170
|
+
|> range(start: -5s)
|
|
171
|
+
|> last()
|
|
172
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
173
|
+
|> group(columns: ["_field"])
|
|
174
|
+
|> sum()
|
|
175
|
+
|> toFloat()
|
|
176
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum"}))
|
|
177
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
168
178
|
|
|
169
179
|
option task = {name: "task-sts-stats-sum-byservice", every: 1s}
|
|
170
180
|
from(bucket: "TestBucket01")
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
181
|
+
|> range(start: -5s)
|
|
182
|
+
|> last()
|
|
183
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
184
|
+
|> group(columns: ["serviceId", "_field"])
|
|
185
|
+
|> sum()
|
|
186
|
+
|> toFloat()
|
|
187
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum-byservice"}))
|
|
188
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
179
189
|
|
|
180
190
|
option task = {name: "task-sts-stats-sum-byserviceinstance", every: 1s}
|
|
181
191
|
from(bucket: "TestBucket01")
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
|> range(start: -5s)
|
|
193
|
+
|> last()
|
|
194
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
195
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "_field"])
|
|
196
|
+
|> sum()
|
|
197
|
+
|> toFloat()
|
|
198
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum-byserviceinstance"}))
|
|
199
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
195
200
|
|
|
196
201
|
import "math"
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
202
|
+
from(bucket: "TestBucket01")
|
|
203
|
+
|> range(start: -10m)
|
|
204
|
+
|> filter(fn: (r) => r["_measurement"] == "sts-stats-sum-byservice" and r["serviceId"] == "STSBroker@1.0.0" and r["_field"] == "cpu")
|
|
205
|
+
|> histogram(bins: [0.0, 10.0, 20.0, 50.0, 100.0, 200.0, 250.0, 1000.0, 50000.0, math.mInf(sign: 1) ])
|
|
206
|
+
|> difference()
|
|
204
207
|
|
|
205
208
|
import "math"
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
209
|
+
from(bucket: "TestBucket01")
|
|
210
|
+
|> range(start: -10m)
|
|
211
|
+
|> filter(fn: (r) => r["_measurement"] == "sts-stats-sum" and r["_field"] == "cpu")
|
|
212
|
+
|> histogram(bins: [0.0, 10.0, 20.0, 50.0, 100.0, 200.0, 250.0, 1000.0, 50000.0, math.mInf(sign: 1) ])
|
|
213
|
+
|> difference()
|
|
213
214
|
|
|
215
|
+
/_ More accurate _/
|
|
214
216
|
|
|
215
|
-
|
|
217
|
+
data = from(bucket: "TestBucket01")
|
|
218
|
+
|> range(start: -10m)
|
|
219
|
+
|> filter(fn: (r) => r["_measurement"] == "sts-stats-sum-byservice" and r["serviceId"] == "STSBroker@1.0.0" and r["_field"] == "cpu")
|
|
220
|
+
|> aggregateWindow(every: 5s, fn: max, createEmpty: false)
|
|
216
221
|
|
|
217
|
-
data = from(bucket: "TestBucket01")
|
|
218
|
-
|> range(start: -10m)
|
|
219
|
-
|> filter(fn: (r) => r["_measurement"] == "sts-stats-sum-byservice" and r["serviceId"] == "STSBroker@1.0.0" and r["_field"] == "cpu")
|
|
220
|
-
|> aggregateWindow(every: 5s, fn: max, createEmpty: false)
|
|
221
|
-
|
|
222
222
|
dostsquantileex = (q) =>
|
|
223
223
|
data
|
|
224
224
|
|> quantile(q: q, method: "estimate_tdigest", compression: 1000.0)
|
|
225
225
|
|> set(key: "quantile", value: string(v:q))
|
|
226
226
|
|> group(columns: ["quantile"])
|
|
227
|
-
|
|
227
|
+
|
|
228
228
|
union(tables: [
|
|
229
229
|
dostsquantileex(q: 0.5),
|
|
230
230
|
dostsquantileex(q: 0.8),
|
|
@@ -233,15 +233,13 @@ data = from(bucket: "TestBucket01")
|
|
|
233
233
|
dostsquantileex(q: 0.99)
|
|
234
234
|
])
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
/* Less accurate */
|
|
236
|
+
/_ Less accurate _/
|
|
238
237
|
|
|
239
238
|
import "math"
|
|
240
|
-
data = from(bucket: "TestBucket01")
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
239
|
+
data = from(bucket: "TestBucket01")
|
|
240
|
+
|> range(start: -10m)
|
|
241
|
+
|> filter(fn: (r) => r["_measurement"] == "sts-stats-sum-byservice" and r["serviceId"] == "STSBroker@1.0.0" and r["_field"] == "cpu")
|
|
242
|
+
|> histogram(bins: [0.0, 10.0, 20.0, 50.0, 100.0, 200.0, 250.0, 1000.0, 50000.0, math.mInf(sign: 1) ])
|
|
245
243
|
|
|
246
244
|
dostsquantileex = (q) =>
|
|
247
245
|
data
|
|
@@ -250,238 +248,221 @@ data = from(bucket: "TestBucket01")
|
|
|
250
248
|
|> group(columns: ["quantile"])
|
|
251
249
|
|
|
252
250
|
union(tables: [
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
251
|
+
dostsquantileex(q: 0.5),
|
|
252
|
+
dostsquantileex(q: 0.8),
|
|
253
|
+
dostsquantileex(q: 0.9),
|
|
254
|
+
dostsquantileex(q: 0.95),
|
|
255
|
+
dostsquantileex(q: 0.99)
|
|
258
256
|
])
|
|
259
257
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
11 sts-stats-sum requestCount 4485612 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
279
|
-
12 sts-stats-sum retryCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
280
|
-
13 sts-stats-sum systemcpu
|
|
281
|
-
|
|
282
|
-
timer 72578365.22 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
283
|
-
15 sts-stats-sum velocity
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
258
|
+
activeRequestCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
259
|
+
1 sts-stats-sum authenticationCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
260
|
+
2 sts-stats-sum connectionCount 40 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
261
|
+
3 sts-stats-sum connectionIdleCount 12 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
262
|
+
4 sts-stats-sum connectionPoolCount 12 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
263
|
+
5 sts-stats-sum connectionWaitingCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
264
|
+
6 sts-stats-sum coreCount
|
|
265
|
+
|
|
266
|
+
cpu 50.91 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
267
|
+
8 sts-stats-sum duration 3.6900000000000004 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
268
|
+
9 sts-stats-sum errorCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
269
|
+
10 sts-stats-sum latency 22.82 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
270
|
+
11 sts-stats-sum requestCount 4485612 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
271
|
+
12 sts-stats-sum retryCount 0 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
272
|
+
13 sts-stats-sum systemcpu
|
|
273
|
+
|
|
274
|
+
timer 72578365.22 2023-11-11T06:23:52.761Z 2023-11-11T06:33:52.761Z 2023-11-11T06:33:52.000Z
|
|
275
|
+
15 sts-stats-sum velocity
|
|
288
276
|
|
|
289
277
|
Service OLD
|
|
290
278
|
|
|
291
|
-
option task = {
|
|
292
|
-
|
|
293
|
-
|
|
279
|
+
option task = {
|
|
280
|
+
name: "sts-service-old",
|
|
281
|
+
every: 1s,
|
|
294
282
|
}
|
|
295
283
|
|
|
296
284
|
from(bucket: "TestBucket01")
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
285
|
+
|> range(start: -5s)
|
|
286
|
+
|> last()
|
|
287
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
288
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])
|
|
289
|
+
|> sum()
|
|
290
|
+
|> toFloat()
|
|
291
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum-byserviceInstanceprocessid"}))
|
|
292
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
305
293
|
|
|
306
294
|
from(bucket: "TestBucket01")
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
295
|
+
|> range(start: -5s)
|
|
296
|
+
|> last()
|
|
297
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
298
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "_field"])
|
|
299
|
+
|> sum()
|
|
300
|
+
|> toFloat()
|
|
301
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum-byserviceinstance"}))
|
|
302
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
315
303
|
|
|
316
304
|
from(bucket: "TestBucket01")
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
305
|
+
|> range(start: -5s)
|
|
306
|
+
|> last()
|
|
307
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
308
|
+
|> group(columns: ["serviceId", "_field"])
|
|
309
|
+
|> sum()
|
|
310
|
+
|> toFloat()
|
|
311
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum-byservice"}))
|
|
312
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
325
313
|
|
|
326
314
|
from(bucket: "TestBucket01")
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
315
|
+
|> range(start: -5s)
|
|
316
|
+
|> last()
|
|
317
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
318
|
+
|> group(columns: ["_field"])
|
|
319
|
+
|> sum()
|
|
320
|
+
|> toFloat()
|
|
321
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-sum"}))
|
|
322
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
337
323
|
|
|
338
324
|
Service NEW
|
|
339
325
|
|
|
340
326
|
Note: The duration and latency > 0.0 is a problem becuase no data is returned for detailed drill in views
|
|
341
327
|
|
|
342
|
-
|
|
343
328
|
option task = {name: "task-sts-service-stats", every: 1s}
|
|
344
329
|
|
|
345
330
|
data =
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
331
|
+
from(bucket: "TestBucket01")
|
|
332
|
+
|> range(start: -5s)
|
|
333
|
+
|> last()
|
|
334
|
+
|> filter(fn: (r) => r["_measurement"] == "service" and r["_field"] != "memory")
|
|
350
335
|
|
|
351
336
|
r1 =
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
337
|
+
data
|
|
338
|
+
|> filter(
|
|
339
|
+
fn: (r) =>
|
|
340
|
+
r["_field"] == "requestCount" or r["_field"] == "errorCount" or r["_field"]
|
|
341
|
+
==
|
|
342
|
+
"retryCount" or r["_field"] == "authenticationCount" or r["_field"]
|
|
343
|
+
==
|
|
344
|
+
"activeRequestCount" or r["_field"] == "connectionCount" or r["_field"]
|
|
345
|
+
==
|
|
346
|
+
"connectionPoolCount" or r["_field"] == "connectionIdleCount" or r["_field"]
|
|
347
|
+
==
|
|
348
|
+
"connectionWaitingCount" or r["_field"] == "coreCount" or r["_field"] == "cpu"
|
|
349
|
+
or
|
|
350
|
+
r["_field"] == "systemcpu" or r["_field"] == "velocity" or r["_field"]
|
|
351
|
+
==
|
|
352
|
+
"timer",
|
|
353
|
+
)
|
|
369
354
|
|
|
370
355
|
r2 =
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
356
|
+
data
|
|
357
|
+
|> filter(
|
|
358
|
+
fn: (r) =>
|
|
359
|
+
float(v: r["_value"]) > 0.0 and (r["_field"] == "duration" or r["_field"]
|
|
360
|
+
==
|
|
361
|
+
"latency"),
|
|
362
|
+
)
|
|
378
363
|
|
|
379
364
|
serviceInstanceProcessSum =
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
365
|
+
r1
|
|
366
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])
|
|
367
|
+
|> sum()
|
|
368
|
+
|> toFloat()
|
|
384
369
|
|
|
385
370
|
serviceInstanceProcessMean =
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
371
|
+
r2
|
|
372
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])
|
|
373
|
+
|> mean()
|
|
374
|
+
|> toFloat()
|
|
390
375
|
|
|
391
376
|
union(tables: [serviceInstanceProcessSum, serviceInstanceProcessMean])
|
|
392
|
-
|
|
393
|
-
|
|
377
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-serviceinstanceprocess"}))
|
|
378
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
394
379
|
|
|
395
380
|
serviceInstanceSum =
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
381
|
+
r1
|
|
382
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "_field"])
|
|
383
|
+
|> sum()
|
|
384
|
+
|> toFloat()
|
|
400
385
|
|
|
401
386
|
serviceInstanceMean =
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
387
|
+
r2
|
|
388
|
+
|> group(columns: ["serviceId", "serviceInstanceId", "_field"])
|
|
389
|
+
|> mean()
|
|
390
|
+
|> toFloat()
|
|
406
391
|
|
|
407
392
|
union(tables: [serviceInstanceSum, serviceInstanceMean])
|
|
408
|
-
|
|
409
|
-
|
|
393
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-serviceinstance"}))
|
|
394
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
410
395
|
|
|
411
396
|
serviceSum =
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
397
|
+
r1
|
|
398
|
+
|> group(columns: ["serviceId", "_field"])
|
|
399
|
+
|> sum()
|
|
400
|
+
|> toFloat()
|
|
416
401
|
|
|
417
402
|
serviceMean =
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
403
|
+
r2
|
|
404
|
+
|> group(columns: ["serviceId", "_field"])
|
|
405
|
+
|> mean()
|
|
406
|
+
|> toFloat()
|
|
422
407
|
|
|
423
408
|
union(tables: [serviceSum, serviceMean])
|
|
424
|
-
|
|
425
|
-
|
|
409
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-service"}))
|
|
410
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
426
411
|
|
|
427
412
|
globalServiceSum =
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
413
|
+
r1
|
|
414
|
+
|> group(columns: ["_field"])
|
|
415
|
+
|> sum()
|
|
416
|
+
|> toFloat()
|
|
432
417
|
|
|
433
418
|
globalServiceMean =
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
419
|
+
r2
|
|
420
|
+
|> group(columns: ["_field"])
|
|
421
|
+
|> mean()
|
|
422
|
+
|> toFloat()
|
|
438
423
|
|
|
439
424
|
union(tables: [globalServiceSum, globalServiceMean])
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
425
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-globalservice"}))
|
|
426
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
446
427
|
|
|
447
428
|
--- Agents
|
|
448
429
|
|
|
449
430
|
option task = {name: "task-sts-agent-stats", every: 1s}
|
|
450
431
|
|
|
451
432
|
data =
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
433
|
+
from(bucket: "TestBucket01")
|
|
434
|
+
|> range(start: -5s)
|
|
435
|
+
|> last()
|
|
436
|
+
|> filter(fn: (r) => r["_measurement"] == "agent")
|
|
456
437
|
|
|
457
438
|
byagentthreadasyncunner =
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
439
|
+
data
|
|
440
|
+
|> group(columns: ["agentName", "threadId", "asyncRunnerId", "_field"])
|
|
441
|
+
|> sum()
|
|
442
|
+
|> toFloat()
|
|
443
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-agentthreadasyncunner"}))
|
|
444
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
464
445
|
|
|
465
446
|
byagentthread =
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
447
|
+
data
|
|
448
|
+
|> group(columns: ["agentName", "threadId", "_field"])
|
|
449
|
+
|> sum()
|
|
450
|
+
|> toFloat()
|
|
451
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-agentthread"}))
|
|
452
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
472
453
|
|
|
473
454
|
byagent =
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
455
|
+
data
|
|
456
|
+
|> group(columns: ["agentName", "_field"])
|
|
457
|
+
|> sum()
|
|
458
|
+
|> toFloat()
|
|
459
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-by-agent"}))
|
|
460
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|
|
480
461
|
|
|
481
462
|
globalagent =
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
463
|
+
data
|
|
464
|
+
|> group(columns: ["_field"])
|
|
465
|
+
|> sum()
|
|
466
|
+
|> toFloat()
|
|
467
|
+
|> map(fn: (r) => ({r with \_time: now(), \_measurement: "sts-stats-globalagent"}))
|
|
468
|
+
|> to(org: "my-org", bucket: "TestBucket01")
|