@nsshunt/stsappframework 2.19.281 → 2.19.283
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/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/influxdb/influxDBManager.js +334 -0
- package/dist/influxdb/influxDBManager.js.map +1 -0
- package/dist/influxdb/influxDBManagerAgent.js +211 -0
- package/dist/influxdb/influxDBManagerAgent.js.map +1 -0
- package/dist/influxdb/influxDBManagerBase.js +97 -0
- package/dist/influxdb/influxDBManagerBase.js.map +1 -0
- package/dist/influxdb/influxDBManagerService.js +240 -0
- package/dist/influxdb/influxDBManagerService.js.map +1 -0
- package/dist/kafka/IMKafkaManager.js +103 -0
- package/dist/kafka/IMKafkaManager.js.map +1 -0
- package/dist/processbase.js +6 -3
- package/dist/processbase.js.map +1 -1
- package/package.json +3 -2
- package/src/commonTypes.ts +15 -0
- package/src/index.ts +5 -0
- package/src/influxdb/influxDBManager.ts +359 -0
- package/src/influxdb/influxDBManagerAgent.ts +227 -0
- package/src/influxdb/influxDBManagerBase.ts +119 -0
- package/src/influxdb/influxDBManagerService.ts +257 -0
- package/src/kafka/IMKafkaManager.ts +119 -0
- package/src/processbase.ts +5 -3
- package/types/commonTypes.d.ts +14 -0
- package/types/commonTypes.d.ts.map +1 -1
- package/types/index.d.ts +5 -0
- package/types/index.d.ts.map +1 -1
- package/types/influxdb/influxDBManager.d.ts +18 -0
- package/types/influxdb/influxDBManager.d.ts.map +1 -0
- package/types/influxdb/influxDBManagerAgent.d.ts +27 -0
- package/types/influxdb/influxDBManagerAgent.d.ts.map +1 -0
- package/types/influxdb/influxDBManagerBase.d.ts +19 -0
- package/types/influxdb/influxDBManagerBase.d.ts.map +1 -0
- package/types/influxdb/influxDBManagerService.d.ts +27 -0
- package/types/influxdb/influxDBManagerService.d.ts.map +1 -0
- package/types/kafka/IMKafkaManager.d.ts +11 -0
- package/types/kafka/IMKafkaManager.d.ts.map +1 -0
- package/types/processbase.d.ts.map +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { InfluxDB, Point, WriteApi, QueryApi, flux } from '@influxdata/influxdb-client'
|
|
3
|
+
import { Agent } from 'http'
|
|
4
|
+
|
|
5
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels'
|
|
6
|
+
import { Gauge, InstrumentVelocity } from '@nsshunt/stsinstrumentation'
|
|
7
|
+
|
|
8
|
+
import { IInfluxDBManagerOptions } from './../commonTypes'
|
|
9
|
+
|
|
10
|
+
import { $Options } from '@nsshunt/stsconfig'
|
|
11
|
+
import { JSONObject } from '@nsshunt/stsutils'
|
|
12
|
+
|
|
13
|
+
const goptions = $Options()
|
|
14
|
+
|
|
15
|
+
const _logPrefix = 'InfluxDBManager:'
|
|
16
|
+
|
|
17
|
+
export class InfluxDBManagerBase
|
|
18
|
+
{
|
|
19
|
+
#queryApi: QueryApi;
|
|
20
|
+
#writeClient: WriteApi;
|
|
21
|
+
#shuttingDown: boolean = false;
|
|
22
|
+
#options: IInfluxDBManagerOptions;
|
|
23
|
+
|
|
24
|
+
constructor(options: IInfluxDBManagerOptions, queryApi: QueryApi, writeClient: WriteApi) {
|
|
25
|
+
this.#queryApi = queryApi;
|
|
26
|
+
this.#writeClient = writeClient;
|
|
27
|
+
this.#options = options;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get options() {
|
|
31
|
+
return this.#options;
|
|
32
|
+
}
|
|
33
|
+
get queryApi() {
|
|
34
|
+
return this.#queryApi;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get writeClient() {
|
|
38
|
+
return this.#writeClient;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
get shuttingDown() {
|
|
42
|
+
return this.#shuttingDown;
|
|
43
|
+
}
|
|
44
|
+
set shuttingDown(val: boolean) {
|
|
45
|
+
this.#shuttingDown = val;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
get modelType(): string {
|
|
49
|
+
throw new Error('modelType(): Must override in sub-class')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Helpers --------------------------------------------------------------------------------------------------------
|
|
53
|
+
async ProcessInfluxDBResults(promArray: Promise<any>[], fields: string[]) {
|
|
54
|
+
try {
|
|
55
|
+
const promRetVal: any[] = await Promise.all(promArray).catch(error => {
|
|
56
|
+
console.error(error)
|
|
57
|
+
}) as any[];
|
|
58
|
+
|
|
59
|
+
const stscount: any[] = promRetVal[0];
|
|
60
|
+
const stsquantile: any[] = promRetVal[1];
|
|
61
|
+
const stshisto: any[] = promRetVal[2];
|
|
62
|
+
|
|
63
|
+
const combinedResults: any = { };
|
|
64
|
+
|
|
65
|
+
stscount.forEach((countRecord) => {
|
|
66
|
+
const values: any[] = fields.map(field => countRecord[field])
|
|
67
|
+
const { _field, _value } = countRecord;
|
|
68
|
+
this.CreateNestedObject(combinedResults, values)[_field] = _value;
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
stsquantile.forEach((stsquantileRecord) => {
|
|
72
|
+
const values: any[] = fields.map(field => stsquantileRecord[field])
|
|
73
|
+
const { _field, quantile, _value} = stsquantileRecord;
|
|
74
|
+
const useField = _field + '_quantile'
|
|
75
|
+
this.CreateNestedObject(combinedResults, [...values, useField])[quantile] = _value;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
stshisto.forEach((stshistoRecord) => {
|
|
79
|
+
const values: any[] = fields.map(field => stshistoRecord[field])
|
|
80
|
+
const { _field, le, _value} = stshistoRecord;
|
|
81
|
+
const useField = _field + '_histo'
|
|
82
|
+
this.CreateNestedObject(combinedResults, [...values, useField])[le] = _value;
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
return combinedResults;
|
|
86
|
+
} catch (error) {
|
|
87
|
+
console.error(`${_logPrefix}ProcessInfluxDBResults: Error: [${error}]`.red);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
CreateGlobalCountModel = (stscount: any[]) => {
|
|
92
|
+
try {
|
|
93
|
+
const results: any = { };
|
|
94
|
+
stscount.forEach((o: any) => {
|
|
95
|
+
results[o._field] = o._value;
|
|
96
|
+
});
|
|
97
|
+
return results;
|
|
98
|
+
} catch (error) {
|
|
99
|
+
console.error(`${_logPrefix}#CreateGlobalCountModel: Error: [${error}]`.red);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
CreateNestedObject(combinedResults: JSONObject, keyList: string[]): JSONObject {
|
|
104
|
+
let workingObject = combinedResults;
|
|
105
|
+
keyList.forEach((key) => {
|
|
106
|
+
if (!workingObject[key]) {
|
|
107
|
+
workingObject[key] = { };
|
|
108
|
+
}
|
|
109
|
+
workingObject = workingObject[key];
|
|
110
|
+
});
|
|
111
|
+
return workingObject;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Agent context payload
|
|
115
|
+
// {"nid":"somehost@e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent|MainProcess|0","id":"somehost@e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent|MainProcess|0","hostName":"somehost","agentName":"e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent","threadId":"MainProcess","asyncRunnerId":"0"}
|
|
116
|
+
async OutputInfluxDB(instrumentPayload: InstrumentPayload): Promise<boolean> {
|
|
117
|
+
throw new Error('Must override in sub-class');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { Point, WriteApi, QueryApi } from '@influxdata/influxdb-client'
|
|
3
|
+
|
|
4
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels'
|
|
5
|
+
import { Gauge, InstrumentVelocity } from '@nsshunt/stsinstrumentation'
|
|
6
|
+
|
|
7
|
+
import { InfluxDBManagerBase } from './influxDBManagerBase'
|
|
8
|
+
|
|
9
|
+
import { IInfluxDBManagerOptions } from './../commonTypes'
|
|
10
|
+
|
|
11
|
+
const _logPrefix = 'InfluxDBManagerService:'
|
|
12
|
+
|
|
13
|
+
export class InfluxDBManagerService extends InfluxDBManagerBase
|
|
14
|
+
{
|
|
15
|
+
constructor(options: IInfluxDBManagerOptions, queryApi: QueryApi, writeClient: WriteApi) {
|
|
16
|
+
super(options, queryApi, writeClient);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override get modelType(): string {
|
|
20
|
+
return 'service'
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Queries --------------------------------------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
// Counter metrics
|
|
26
|
+
#GetSTSCountGenericService = async (filterClause: string, groupClause: string, showOutput: boolean = false): Promise<any> => {
|
|
27
|
+
try {
|
|
28
|
+
const query = `dostscountex = (q, d) =>
|
|
29
|
+
from(bucket: "${this.options.bucket}")
|
|
30
|
+
|> range(start: d)
|
|
31
|
+
|> filter(fn: (r) => r["_measurement"] == "all" and r["modelType"] == "service" ${filterClause})
|
|
32
|
+
|> filter(fn: (r) => r["_field"] == q)
|
|
33
|
+
|> last()
|
|
34
|
+
|> ${groupClause}
|
|
35
|
+
|> sum()
|
|
36
|
+
|
|
37
|
+
dogetmemory = () =>
|
|
38
|
+
from(bucket: "${this.options.bucket}")
|
|
39
|
+
|> range(start: -5s)
|
|
40
|
+
|> filter(fn: (r) => r["_measurement"] == "all" and r["modelType"] == "service" ${filterClause})
|
|
41
|
+
|> filter(fn: (r) => r["_field"] == "memory")
|
|
42
|
+
|> last()
|
|
43
|
+
|
|
44
|
+
dostscount = (d) =>
|
|
45
|
+
union(tables: [
|
|
46
|
+
dostscountex(q: "requestCount", d: d),
|
|
47
|
+
dostscountex(q: "errorCount", d: d),
|
|
48
|
+
dostscountex(q: "retryCount", d: d),
|
|
49
|
+
dostscountex(q: "authenticationCount", d: d),
|
|
50
|
+
dostscountex(q: "activeRequestCount", d: d),
|
|
51
|
+
dostscountex(q: "connectionCount", d: d),
|
|
52
|
+
dostscountex(q: "connectionPoolCount", d: d),
|
|
53
|
+
dostscountex(q: "connectionIdleCount", d: d),
|
|
54
|
+
dostscountex(q: "connectionWaitingCount", d: d),
|
|
55
|
+
dostscountex(q: "coreCount", d: d),
|
|
56
|
+
dostscountex(q: "cpu", d: d),
|
|
57
|
+
dostscountex(q: "systemcpu", d: d),
|
|
58
|
+
dostscountex(q: "velocity", d: d),
|
|
59
|
+
dostscountex(q: "timer", d: d),
|
|
60
|
+
dostscountex(q: "duration", d: d),
|
|
61
|
+
dostscountex(q: "latency", d: d),
|
|
62
|
+
dogetmemory()
|
|
63
|
+
])
|
|
64
|
+
dostscount(d: -5s)`;
|
|
65
|
+
|
|
66
|
+
if (showOutput) {
|
|
67
|
+
console.log(query);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return this.queryApi.collectRows(query)
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error(`${_logPrefix}#GetSTSCountGeneric: Error: [${error}]`.red);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Histo metrics
|
|
77
|
+
#GetSTSHistoGenericService = async (modelType: string, filterClause: string, groupClause: string): Promise<any> => {
|
|
78
|
+
try {
|
|
79
|
+
const query = `import "math"
|
|
80
|
+
|
|
81
|
+
dostshistoex = (q, d) =>
|
|
82
|
+
from(bucket: "${this.options.bucket}")
|
|
83
|
+
|> range(start: d)
|
|
84
|
+
|> filter(fn: (r) => r["_measurement"] == "all")
|
|
85
|
+
|> filter(fn: (r) => r["_field"] == q and r["modelType"] == "${modelType}" ${filterClause})
|
|
86
|
+
|> ${groupClause}
|
|
87
|
+
|> histogram(bins: [0.0, 10.0, 20.0, 50.0, 100.0, 1000.0, 50000.0, math.mInf(sign: 1) ])
|
|
88
|
+
|> difference()
|
|
89
|
+
|
|
90
|
+
dostshisto = (d) =>
|
|
91
|
+
union(tables: [
|
|
92
|
+
dostshistoex(q: "latency", d: d),
|
|
93
|
+
dostshistoex(q: "duration", d: d)
|
|
94
|
+
])
|
|
95
|
+
|
|
96
|
+
dostshisto(d: -10m)`;
|
|
97
|
+
return this.queryApi.collectRows(query)
|
|
98
|
+
} catch (error) {
|
|
99
|
+
console.error(`${_logPrefix}#GetSTSHistoGeneric: Error: [${error}]`.red);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Quantile metrics
|
|
104
|
+
#GetSTSQuantileGenericService = async (modelType: string, filterClause: string, groupClause: string): Promise<any> => {
|
|
105
|
+
try {
|
|
106
|
+
const query = `dostsquantileex = (q, d, i, f) =>
|
|
107
|
+
from(bucket: "${this.options.bucket}")
|
|
108
|
+
|> range(start: d)
|
|
109
|
+
|> filter(fn: (r) => r["_measurement"] == "all")
|
|
110
|
+
|> filter(fn: (r) => r["_field"] == f and r["modelType"] == "${modelType}" ${filterClause})
|
|
111
|
+
|> ${groupClause}
|
|
112
|
+
|> aggregateWindow(every: i, fn: max, createEmpty: false)
|
|
113
|
+
|> quantile(q: q, method: "estimate_tdigest", compression: 1000.0)
|
|
114
|
+
|> set(key: "quantile", value: string(v:q))
|
|
115
|
+
|> group(columns: ["LatencyType","quantile"])
|
|
116
|
+
|
|
117
|
+
dostsquantile = (d, i, f) =>
|
|
118
|
+
union(tables: [
|
|
119
|
+
dostsquantileex(q: 0.5, d: d, i: i, f: f),
|
|
120
|
+
dostsquantileex(q: 0.8, d: d, i: i, f: f),
|
|
121
|
+
dostsquantileex(q: 0.9, d: d, i: i, f: f),
|
|
122
|
+
dostsquantileex(q: 0.95, d: d, i: i, f: f),
|
|
123
|
+
dostsquantileex(q: 0.99, d: d, i: i, f: f)
|
|
124
|
+
])
|
|
125
|
+
|
|
126
|
+
union(tables: [
|
|
127
|
+
dostsquantile(d: -10m, i: 5s, f: "latency"),
|
|
128
|
+
dostsquantile(d: -10m, i: 5s, f: "duration")
|
|
129
|
+
dostsquantile(d: -10m, i: 5s, f: "cpu")
|
|
130
|
+
dostsquantile(d: -10m, i: 5s, f: "systemcpu")
|
|
131
|
+
])`;
|
|
132
|
+
|
|
133
|
+
return this.queryApi.collectRows(query)
|
|
134
|
+
} catch (error) {
|
|
135
|
+
console.error(`${_logPrefix}#GetSTSQuantileGeneric: Error: [${error}]`.red);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Metric queries -------------------------------------------------------------------------------------------------
|
|
140
|
+
// Root level metrics
|
|
141
|
+
async GetInfluxDBResultsRootService() {
|
|
142
|
+
try {
|
|
143
|
+
const combinedResults = await this.ProcessInfluxDBResults([
|
|
144
|
+
this.#GetSTSCountGenericService('', 'group(columns: ["_field"])'),
|
|
145
|
+
this.#GetSTSQuantileGenericService(`service`, '', 'group(columns: ["_field"])'),
|
|
146
|
+
this.#GetSTSHistoGenericService('service', '', 'group(columns: ["_field"])')],
|
|
147
|
+
[ ])
|
|
148
|
+
|
|
149
|
+
return { SubscriptionType: "ID_", data: combinedResults };
|
|
150
|
+
} catch (error) {
|
|
151
|
+
console.error(`${_logPrefix}GetInfluxDBResultsRoot: Error: [${error}]`.red);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Service level metrics
|
|
156
|
+
async GetInfluxDBResultsService() {
|
|
157
|
+
try {
|
|
158
|
+
const combinedResults = await this.ProcessInfluxDBResults([
|
|
159
|
+
this.#GetSTSCountGenericService('', 'group(columns: ["serviceId", "_field"])'),
|
|
160
|
+
this.#GetSTSQuantileGenericService(`service`, '', 'group(columns: ["serviceId", "_field"])'),
|
|
161
|
+
this.#GetSTSHistoGenericService('service', '', 'group(columns: ["serviceId", "_field"])')],
|
|
162
|
+
['serviceId'])
|
|
163
|
+
|
|
164
|
+
return { SubscriptionType: "ID_Service", data: combinedResults};
|
|
165
|
+
} catch (error) {
|
|
166
|
+
console.error(`${_logPrefix}GetInfluxDBResultsService: Error: [${error}]`.red);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Service instance metrics for a particular service type
|
|
171
|
+
async GetInfluxDBResultsServiceInstances(serviceId: string) {
|
|
172
|
+
try {
|
|
173
|
+
const combinedResults = await this.ProcessInfluxDBResults([
|
|
174
|
+
this.#GetSTSCountGenericService(`and r["serviceId"] == "${serviceId}"`, `group(columns: ["serviceId", "serviceInstanceId", "_field"])`),
|
|
175
|
+
this.#GetSTSQuantileGenericService(`service`, `and r["serviceId"] == "${serviceId}"`, 'group(columns: ["serviceId", "serviceInstanceId", "_field"])'),
|
|
176
|
+
this.#GetSTSHistoGenericService('service', `and r["serviceId"] == "${serviceId}"`, 'group(columns: ["serviceId", "serviceInstanceId", "_field"])')],
|
|
177
|
+
['serviceId', 'serviceInstanceId'])
|
|
178
|
+
|
|
179
|
+
return { SubscriptionType: `ID_ServiceInstances_${serviceId}`, data: combinedResults};
|
|
180
|
+
} catch (error) {
|
|
181
|
+
console.error(`${_logPrefix}GetInfluxDBResultsServiceInstances: Error: [${error}]`.red);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Service instance thread metrics for a particular service instance
|
|
186
|
+
async GetInfluxDBResultsServiceInstance(serviceInstanceId: string) {
|
|
187
|
+
try {
|
|
188
|
+
const combinedResults = await this.ProcessInfluxDBResults([
|
|
189
|
+
this.#GetSTSCountGenericService(`and r["serviceInstanceId"] == "${serviceInstanceId}"`, `group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])`),
|
|
190
|
+
this.#GetSTSQuantileGenericService(`service`, `and r["serviceInstanceId"] == "${serviceInstanceId}"`, 'group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])'),
|
|
191
|
+
this.#GetSTSHistoGenericService('service', `and r["serviceInstanceId"] == "${serviceInstanceId}"`, 'group(columns: ["serviceId", "serviceInstanceId", "serviceInstanceProcessId", "_field"])')],
|
|
192
|
+
['serviceId', 'serviceInstanceId', 'serviceInstanceProcessId'])
|
|
193
|
+
|
|
194
|
+
return { SubscriptionType: `ID_ServiceInstance_${serviceInstanceId}`, data: combinedResults};
|
|
195
|
+
} catch (error) {
|
|
196
|
+
console.error(`${_logPrefix}GetInfluxDBResultsServiceInstance: Error: [${error}]`.red);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Write data points ----------------------------------------------------------------------------------------------
|
|
201
|
+
// Agent context payload
|
|
202
|
+
// {"nid":"somehost@e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent|MainProcess|0","id":"somehost@e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent|MainProcess|0","hostName":"somehost","agentName":"e58f5d75-6ff6-4e04-92a4-f2bcd722fec0-someuseragent","threadId":"MainProcess","asyncRunnerId":"0"}
|
|
203
|
+
async OutputInfluxDB(instrumentPayload: InstrumentPayload): Promise<boolean> {
|
|
204
|
+
try {
|
|
205
|
+
if (this.shuttingDown) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const { serviceId, serviceInstanceId, hostName, serviceInstanceProcessId,
|
|
210
|
+
pid, ppid, isMaster, isWorker, serviceName, serviceVersion } = instrumentPayload.context;
|
|
211
|
+
|
|
212
|
+
let systemcpu = 0.0;
|
|
213
|
+
if (instrumentPayload.instruments[Gauge.CPU_SYSTEM_LOAD_GAUGE]) {
|
|
214
|
+
systemcpu = (instrumentPayload.instruments[Gauge.CPU_SYSTEM_LOAD_GAUGE].val as number);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const point = new Point('all')
|
|
218
|
+
// Context settings
|
|
219
|
+
.tag('serviceId', serviceId as string)
|
|
220
|
+
.tag('serviceName', serviceName as string)
|
|
221
|
+
.tag('serviceVersion', serviceVersion as string)
|
|
222
|
+
.tag('serviceInstanceId', serviceInstanceId as string)
|
|
223
|
+
.tag('serviceInstanceProcessId', serviceInstanceProcessId as string)
|
|
224
|
+
.tag('hostName', hostName as string)
|
|
225
|
+
.tag('pid', (pid as number).toString())
|
|
226
|
+
.tag('ppid', (ppid as number).toString())
|
|
227
|
+
.tag('isMaster', (isMaster as boolean).toString())
|
|
228
|
+
.tag('isWorker', (isWorker as boolean).toString())
|
|
229
|
+
.tag('modelType', 'service')
|
|
230
|
+
// Data fields
|
|
231
|
+
.intField('requestCount', instrumentPayload.instruments[Gauge.REQUEST_COUNT_GAUGE].val)
|
|
232
|
+
.intField('errorCount', instrumentPayload.instruments[Gauge.ERROR_COUNT_GAUGE].val)
|
|
233
|
+
.intField('retryCount', instrumentPayload.instruments[Gauge.RETRY_COUNT_GAUGE].val)
|
|
234
|
+
.intField('authenticationCount', instrumentPayload.instruments[Gauge.AUTHENTICATION_COUNT_GAUGE].val)
|
|
235
|
+
.floatField('velocity', (instrumentPayload.instruments[Gauge.VELOCITY_GAUGE] as InstrumentVelocity).va)
|
|
236
|
+
.floatField('cpu', instrumentPayload.instruments[Gauge.CPU_LOAD_GAUGE].val)
|
|
237
|
+
.intField('activeRequestCount', instrumentPayload.instruments[Gauge.ACTIVE_REQUEST_GAUGE].val)
|
|
238
|
+
.intField('connectionCount', instrumentPayload.instruments[Gauge.CONNECTION_COUNT_GAUGE].val)
|
|
239
|
+
.intField('connectionPoolCount', instrumentPayload.instruments[Gauge.CONNECTION_POOL_TOTAL_GAUGE].val)
|
|
240
|
+
.intField('connectionIdleCount', instrumentPayload.instruments[Gauge.CONNECTION_POOL_IDLE_GAUGE].val)
|
|
241
|
+
.intField('connectionWaitingCount', instrumentPayload.instruments[Gauge.CONNECTION_POOL_WAITING_GAUGE].val)
|
|
242
|
+
.intField('coreCount', instrumentPayload.instruments[Gauge.CORE_COUNT_GAUGE].val)
|
|
243
|
+
.floatField('timer', instrumentPayload.instruments[Gauge.TIMER_GAUGE].val)
|
|
244
|
+
.floatField('duration', instrumentPayload.instruments[Gauge.DURATION_GAUGE].val)
|
|
245
|
+
.floatField('latency', instrumentPayload.instruments[Gauge.LATENCY_GAUGE].val)
|
|
246
|
+
.floatField('systemcpu', systemcpu)
|
|
247
|
+
.stringField('memory', JSON.stringify(instrumentPayload.instruments[Gauge.OBJECT_GAUGE].val))
|
|
248
|
+
|
|
249
|
+
this.writeClient.writePoint(point);
|
|
250
|
+
return true;
|
|
251
|
+
} catch (error: any) {
|
|
252
|
+
console.error(`${_logPrefix}OutputInfluxDB: Could not write data point: [${error}]`.red);
|
|
253
|
+
console.error(`${JSON.stringify(instrumentPayload.context)}`.red);
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels'
|
|
3
|
+
import { Gauge } from '@nsshunt/stsinstrumentation'
|
|
4
|
+
|
|
5
|
+
import { KafkaManager, IKafkaManagerConfig } from './kafkamanager'
|
|
6
|
+
import { KafkaProducer } from './kafkaproducer'
|
|
7
|
+
|
|
8
|
+
import { JSONObject } from '@nsshunt/stsutils'
|
|
9
|
+
|
|
10
|
+
import { $Options } from '@nsshunt/stsconfig'
|
|
11
|
+
const goptions = $Options()
|
|
12
|
+
|
|
13
|
+
const _logPrefix = 'IMKafkaManager.'
|
|
14
|
+
|
|
15
|
+
// Manage the publication of InstrumentPayload to Kafka
|
|
16
|
+
export class IMKafkaManager {
|
|
17
|
+
#shuttingDown: boolean = false;
|
|
18
|
+
#producer: KafkaProducer | null = null;
|
|
19
|
+
|
|
20
|
+
#km: KafkaManager;
|
|
21
|
+
#topics: JSONObject = { }
|
|
22
|
+
|
|
23
|
+
constructor()
|
|
24
|
+
{
|
|
25
|
+
//super(options);
|
|
26
|
+
|
|
27
|
+
const kmc: IKafkaManagerConfig = {
|
|
28
|
+
clientId: goptions.kafka_clientId,
|
|
29
|
+
brokers: goptions.kafka_brokers.split(','),
|
|
30
|
+
keepAlive: goptions.kafka_keep_alive,
|
|
31
|
+
adminTimeout: goptions.kafka_admin_timeout,
|
|
32
|
+
connectionTimeout: goptions.kafka_connection_timeout,
|
|
33
|
+
logLevel: goptions.kafka_log_level,
|
|
34
|
+
useSSL: goptions.kafka_use_ssl,
|
|
35
|
+
requestTimeout: goptions.kafka_request_timeout
|
|
36
|
+
}
|
|
37
|
+
if (goptions.kafka_use_ssl) {
|
|
38
|
+
kmc.ssl = {
|
|
39
|
+
rejectUnauthorized: goptions.kafka_ssl_rejectUnauthorized,
|
|
40
|
+
cafile: goptions.kafka_ssl_cafile,
|
|
41
|
+
certfileFile: goptions.kafka_ssl_certfile,
|
|
42
|
+
keyfile: goptions.kafka_ssl_keyfile
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.#km = new KafkaManager(kmc);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
get km(): KafkaManager {
|
|
50
|
+
return this.#km;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Start = async (): Promise<void> => {
|
|
54
|
+
this.#producer = this.#km.CreateProducer();
|
|
55
|
+
await this.#producer.Connect()
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Terminate = async (): Promise<void> => {
|
|
59
|
+
try {
|
|
60
|
+
if (this.#shuttingDown) {
|
|
61
|
+
console.log(`IMKafkaManager:Terminate: Terminate already called. Ignoring.`.yellow);
|
|
62
|
+
} else {
|
|
63
|
+
this.#shuttingDown = true;
|
|
64
|
+
console.log(`ProducerDisconnect`.yellow);
|
|
65
|
+
if (this.#producer) {
|
|
66
|
+
await this.#producer.Disconnect();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error(`${_logPrefix}#Terminate: Error: [${error}]`.red);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async OutputLogs(instrumentPayload: InstrumentPayload): Promise<boolean> {
|
|
75
|
+
try {
|
|
76
|
+
if (this.#shuttingDown) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let topic: string = '';
|
|
81
|
+
|
|
82
|
+
if (instrumentPayload.context.agentName) {
|
|
83
|
+
const { agentName, threadId, asyncRunnerId } = instrumentPayload.context;
|
|
84
|
+
|
|
85
|
+
topic = `${agentName}_${threadId}_${asyncRunnerId}`.replace(/@/g, '_');
|
|
86
|
+
topic = topic.replace(/\|/g, '_')
|
|
87
|
+
} else {
|
|
88
|
+
const { serviceInstanceId, serviceInstanceProcessId } = instrumentPayload.context;
|
|
89
|
+
topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!this.#topics[topic]) {
|
|
93
|
+
console.log(`Setting up kafka topic: [${topic}]`.red);
|
|
94
|
+
await this.#km.CreateTopic(topic, 1);
|
|
95
|
+
this.#topics[topic] = true;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (instrumentPayload.instruments[Gauge.LOGGER]) {
|
|
99
|
+
const loggerMessages = [ ...instrumentPayload.instruments[Gauge.LOGGER].val as string[] ]
|
|
100
|
+
if (loggerMessages.length > 0) {
|
|
101
|
+
|
|
102
|
+
const messages: JSONObject[] = [ ];
|
|
103
|
+
loggerMessages.forEach((m) => {
|
|
104
|
+
messages.push({key: topic, value: m})
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Don't wait for these to return ...
|
|
108
|
+
if (this.#producer) {
|
|
109
|
+
this.#producer.SendMessages(topic, messages as any);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
} catch (error: any) {
|
|
115
|
+
console.error(`${_logPrefix}OutputLogs: Could not output log data to kafka: [${error}]`.red);
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
package/src/processbase.ts
CHANGED
|
@@ -183,9 +183,11 @@ export abstract class ProcessBase extends STSOptionsBase implements IProcessBase
|
|
|
183
183
|
useInstrumentationWorkers: this.options.useInstrumentationWorkers
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
186
|
+
if (goptions.observabilityProcessingMode.localeCompare('STANDARD') === 0) {
|
|
187
|
+
this.#instrumentController = new PublishInstrumentControllerV2(instrumentControllerOptions);
|
|
188
|
+
} else {
|
|
189
|
+
this.#instrumentController = new PublishInstrumentController(instrumentControllerOptions);
|
|
190
|
+
}
|
|
189
191
|
}
|
|
190
192
|
|
|
191
193
|
GetAdditionalInstruments(): InstrumentDefinitions {
|
package/types/commonTypes.d.ts
CHANGED
|
@@ -127,4 +127,18 @@ export interface ISocketIoServerHelper<ClientToServerEvents extends STSDefaultCl
|
|
|
127
127
|
DisconnectSockets: () => void;
|
|
128
128
|
SetupEvent(event: ClientToServerEvents, eventCb: ServerEventCb): ISocketIoServerHelper<ClientToServerEvents, ServerToClientEvents>;
|
|
129
129
|
}
|
|
130
|
+
export interface IInfluxDBManagerOptions {
|
|
131
|
+
token: string;
|
|
132
|
+
url: string;
|
|
133
|
+
org: string;
|
|
134
|
+
bucket: string;
|
|
135
|
+
agent?: {
|
|
136
|
+
influxDB_keepAlive: boolean;
|
|
137
|
+
influxDB_maxSockets?: number;
|
|
138
|
+
influxDB_maxTotalSockets?: number;
|
|
139
|
+
influxDB_maxFreeSockets?: number;
|
|
140
|
+
influxDB_timeout?: number;
|
|
141
|
+
influxDB_rejectUnauthorized?: boolean;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
130
144
|
//# sourceMappingURL=commonTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"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"}
|
package/types/index.d.ts
CHANGED
|
@@ -13,4 +13,9 @@ export * from './stslatencyroute';
|
|
|
13
13
|
export * from './kafka/kafkamanager';
|
|
14
14
|
export * from './kafka/kafkaproducer';
|
|
15
15
|
export * from './kafka/kafkaconsumer';
|
|
16
|
+
export * from './kafka/IMKafkaManager';
|
|
17
|
+
export * from './influxdb/influxDBManager';
|
|
18
|
+
export * from './influxdb/influxDBManagerBase';
|
|
19
|
+
export * from './influxdb/influxDBManagerService';
|
|
20
|
+
export * from './influxdb/influxDBManagerAgent';
|
|
16
21
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels';
|
|
2
|
+
import { JSONObject } from '@nsshunt/stsutils';
|
|
3
|
+
import { InfluxDBManagerService } from './influxDBManagerService';
|
|
4
|
+
import { InfluxDBManagerAgent } from './influxDBManagerAgent';
|
|
5
|
+
import { IInfluxDBManagerOptions } from './../commonTypes';
|
|
6
|
+
export declare class InfluxDBManager {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(options: IInfluxDBManagerOptions);
|
|
9
|
+
CreateInfluxDBManagerClient(modelType: string): void;
|
|
10
|
+
get serviceManager(): InfluxDBManagerService;
|
|
11
|
+
get agentManager(): InfluxDBManagerAgent;
|
|
12
|
+
Start: () => Promise<void>;
|
|
13
|
+
Terminate: () => Promise<void>;
|
|
14
|
+
CreateGlobalCountModel: (stscount: any[]) => any;
|
|
15
|
+
CreateNestedObject(combinedResults: JSONObject, keyList: string[]): JSONObject;
|
|
16
|
+
OutputInfluxDB(instrumentPayload: InstrumentPayload): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=influxDBManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"influxDBManager.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,OAAO,EAAE,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAqL1D,qBAAa,eAAe;;gBAiBZ,OAAO,EAAE,uBAAuB;IAkD5C,2BAA2B,CAAC,SAAS,EAAE,MAAM;IAa7C,IAAI,cAAc,IAAI,sBAAsB,CAE3C;IAED,IAAI,YAAY,IAAI,oBAAoB,CAEvC;IAED,KAAK,sBAEJ;IAED,SAAS,sBAuBR;IAQD,sBAAsB,aAAc,GAAG,EAAE,SAUxC;IAGD,kBAAkB,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAaxE,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAe/E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { WriteApi, QueryApi } from '@influxdata/influxdb-client';
|
|
2
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels';
|
|
3
|
+
import { InfluxDBManagerBase } from './influxDBManagerBase';
|
|
4
|
+
import { IInfluxDBManagerOptions } from './../commonTypes';
|
|
5
|
+
export declare class InfluxDBManagerAgent extends InfluxDBManagerBase {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(options: IInfluxDBManagerOptions, queryApi: QueryApi, writeClient: WriteApi);
|
|
8
|
+
get modelType(): string;
|
|
9
|
+
GetInfluxDBResultsRootAgent(): Promise<{
|
|
10
|
+
SubscriptionType: string;
|
|
11
|
+
data: any;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
GetInfluxDBResultsAgent(): Promise<{
|
|
14
|
+
SubscriptionType: string;
|
|
15
|
+
data: any;
|
|
16
|
+
} | undefined>;
|
|
17
|
+
GetInfluxDBResultsAgentThreads(agentName: string): Promise<{
|
|
18
|
+
SubscriptionType: string;
|
|
19
|
+
data: any;
|
|
20
|
+
} | undefined>;
|
|
21
|
+
GetInfluxDBResultsAgentThread(agentName: string, threadId: string): Promise<{
|
|
22
|
+
SubscriptionType: string;
|
|
23
|
+
data: any;
|
|
24
|
+
} | undefined>;
|
|
25
|
+
OutputInfluxDB(instrumentPayload: InstrumentPayload): Promise<boolean>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=influxDBManagerAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"influxDBManagerAgent.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerAgent.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAI1D,qBAAa,oBAAqB,SAAQ,mBAAmB;;gBAE7C,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;IAIvF,IAAa,SAAS,IAAI,MAAM,CAE/B;IAwGK,2BAA2B;;;;IAe3B,uBAAuB;;;;IAevB,8BAA8B,CAAC,SAAS,EAAE,MAAM;;;;IAkBhD,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;IAiBjE,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAqC/E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { WriteApi, QueryApi } from '@influxdata/influxdb-client';
|
|
2
|
+
import { InstrumentPayload } from '@nsshunt/stsmodels';
|
|
3
|
+
import { IInfluxDBManagerOptions } from './../commonTypes';
|
|
4
|
+
import { JSONObject } from '@nsshunt/stsutils';
|
|
5
|
+
export declare class InfluxDBManagerBase {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(options: IInfluxDBManagerOptions, queryApi: QueryApi, writeClient: WriteApi);
|
|
8
|
+
get options(): IInfluxDBManagerOptions;
|
|
9
|
+
get queryApi(): QueryApi;
|
|
10
|
+
get writeClient(): WriteApi;
|
|
11
|
+
get shuttingDown(): boolean;
|
|
12
|
+
set shuttingDown(val: boolean);
|
|
13
|
+
get modelType(): string;
|
|
14
|
+
ProcessInfluxDBResults(promArray: Promise<any>[], fields: string[]): Promise<any>;
|
|
15
|
+
CreateGlobalCountModel: (stscount: any[]) => any;
|
|
16
|
+
CreateNestedObject(combinedResults: JSONObject, keyList: string[]): JSONObject;
|
|
17
|
+
OutputInfluxDB(instrumentPayload: InstrumentPayload): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=influxDBManagerBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"influxDBManagerBase.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManagerBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,QAAQ,EAAE,QAAQ,EAAQ,MAAM,6BAA6B,CAAA;AAGvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAM9C,qBAAa,mBAAmB;;gBAOhB,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;IAMvF,IAAI,OAAO,4BAEV;IACD,IAAI,QAAQ,aAEX;IAED,IAAI,WAAW,aAEd;IAED,IAAI,YAAY,IAGM,OAAO,CAD5B;IACD,IAAI,YAAY,CAAC,GAAG,EAAE,OAAO,EAE5B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAGK,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAsCxE,sBAAsB,aAAc,GAAG,EAAE,SAUxC;IAED,kBAAkB,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAaxE,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAG/E"}
|