@checkstack/collector-hardware-backend 0.1.14 → 0.1.15
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/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/src/collectors/cpu.test.ts +3 -3
- package/src/collectors/cpu.ts +27 -42
- package/src/collectors/disk.test.ts +2 -2
- package/src/collectors/disk.ts +23 -34
- package/src/collectors/memory.test.ts +3 -3
- package/src/collectors/memory.ts +25 -43
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -121,10 +121,10 @@ describe("CpuCollector", () => {
|
|
|
121
121
|
let aggregated = collector.mergeResult(undefined, runs[0]);
|
|
122
122
|
aggregated = collector.mergeResult(aggregated, runs[1]);
|
|
123
123
|
|
|
124
|
-
expect(aggregated.avgUsagePercent).toBe(50);
|
|
125
|
-
expect(aggregated.maxUsagePercent).toBe(75);
|
|
124
|
+
expect(aggregated.avgUsagePercent.avg).toBe(50);
|
|
125
|
+
expect(aggregated.maxUsagePercent.max).toBe(75);
|
|
126
126
|
// (1.0 + 2.0) / 2 = 1.5
|
|
127
|
-
expect(aggregated.avgLoadAvg1m).toBe(1.5);
|
|
127
|
+
expect(aggregated.avgLoadAvg1m.avg).toBe(1.5);
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
130
|
|
package/src/collectors/cpu.ts
CHANGED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
type CollectorStrategy,
|
|
7
7
|
mergeAverage,
|
|
8
8
|
mergeMinMax,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type
|
|
9
|
+
VersionedAggregated,
|
|
10
|
+
aggregatedAverage,
|
|
11
|
+
aggregatedMinMax,
|
|
12
|
+
type InferAggregatedResult,
|
|
13
13
|
} from "@checkstack/backend-api";
|
|
14
14
|
import { healthResultNumber } from "@checkstack/healthcheck-common";
|
|
15
15
|
import {
|
|
@@ -64,34 +64,28 @@ const cpuResultSchema = z.object({
|
|
|
64
64
|
|
|
65
65
|
export type CpuResult = z.infer<typeof cpuResultSchema>;
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
// Aggregated result fields definition
|
|
68
|
+
const cpuAggregatedFields = {
|
|
69
|
+
avgUsagePercent: aggregatedAverage({
|
|
69
70
|
"x-chart-type": "line",
|
|
70
71
|
"x-chart-label": "Avg CPU Usage",
|
|
71
72
|
"x-chart-unit": "%",
|
|
72
73
|
}),
|
|
73
|
-
maxUsagePercent:
|
|
74
|
+
maxUsagePercent: aggregatedMinMax({
|
|
74
75
|
"x-chart-type": "line",
|
|
75
76
|
"x-chart-label": "Max CPU Usage",
|
|
76
77
|
"x-chart-unit": "%",
|
|
77
78
|
}),
|
|
78
|
-
avgLoadAvg1m:
|
|
79
|
+
avgLoadAvg1m: aggregatedAverage({
|
|
79
80
|
"x-chart-type": "line",
|
|
80
81
|
"x-chart-label": "Avg Load (1m)",
|
|
81
82
|
}),
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const cpuAggregatedInternalSchema = z.object({
|
|
85
|
-
_usage: averageStateSchema.optional(),
|
|
86
|
-
_maxUsage: minMaxStateSchema.optional(),
|
|
87
|
-
_load: averageStateSchema.optional(),
|
|
88
|
-
});
|
|
83
|
+
};
|
|
89
84
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
export type CpuAggregatedResult = z.infer<typeof cpuAggregatedSchema>;
|
|
85
|
+
// Type inferred from field definitions
|
|
86
|
+
export type CpuAggregatedResult = InferAggregatedResult<
|
|
87
|
+
typeof cpuAggregatedFields
|
|
88
|
+
>;
|
|
95
89
|
|
|
96
90
|
// ============================================================================
|
|
97
91
|
// CPU COLLECTOR
|
|
@@ -111,7 +105,10 @@ export class CpuCollector implements CollectorStrategy<
|
|
|
111
105
|
|
|
112
106
|
config = new Versioned({ version: 1, schema: cpuConfigSchema });
|
|
113
107
|
result = new Versioned({ version: 1, schema: cpuResultSchema });
|
|
114
|
-
aggregatedResult = new
|
|
108
|
+
aggregatedResult = new VersionedAggregated({
|
|
109
|
+
version: 1,
|
|
110
|
+
fields: cpuAggregatedFields,
|
|
111
|
+
});
|
|
115
112
|
|
|
116
113
|
async execute({
|
|
117
114
|
config,
|
|
@@ -154,28 +151,16 @@ export class CpuCollector implements CollectorStrategy<
|
|
|
154
151
|
): CpuAggregatedResult {
|
|
155
152
|
const metadata = run.metadata;
|
|
156
153
|
|
|
157
|
-
const usageState = mergeAverage(
|
|
158
|
-
existing?._usage as AverageState | undefined,
|
|
159
|
-
metadata?.usagePercent,
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
const maxUsageState = mergeMinMax(
|
|
163
|
-
existing?._maxUsage as MinMaxState | undefined,
|
|
164
|
-
metadata?.usagePercent,
|
|
165
|
-
);
|
|
166
|
-
|
|
167
|
-
const loadState = mergeAverage(
|
|
168
|
-
existing?._load as AverageState | undefined,
|
|
169
|
-
metadata?.loadAvg1m,
|
|
170
|
-
);
|
|
171
|
-
|
|
172
154
|
return {
|
|
173
|
-
avgUsagePercent:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
155
|
+
avgUsagePercent: mergeAverage(
|
|
156
|
+
existing?.avgUsagePercent,
|
|
157
|
+
metadata?.usagePercent,
|
|
158
|
+
),
|
|
159
|
+
maxUsagePercent: mergeMinMax(
|
|
160
|
+
existing?.maxUsagePercent,
|
|
161
|
+
metadata?.usagePercent,
|
|
162
|
+
),
|
|
163
|
+
avgLoadAvg1m: mergeAverage(existing?.avgLoadAvg1m, metadata?.loadAvg1m),
|
|
179
164
|
};
|
|
180
165
|
}
|
|
181
166
|
|
|
@@ -105,8 +105,8 @@ describe("DiskCollector", () => {
|
|
|
105
105
|
let aggregated = collector.mergeResult(undefined, runs[0]);
|
|
106
106
|
aggregated = collector.mergeResult(aggregated, runs[1]);
|
|
107
107
|
|
|
108
|
-
expect(aggregated.avgUsedPercent).toBe(40);
|
|
109
|
-
expect(aggregated.maxUsedPercent).toBe(50);
|
|
108
|
+
expect(aggregated.avgUsedPercent.avg).toBe(40);
|
|
109
|
+
expect(aggregated.maxUsedPercent.max).toBe(50);
|
|
110
110
|
});
|
|
111
111
|
});
|
|
112
112
|
|
package/src/collectors/disk.ts
CHANGED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
type CollectorStrategy,
|
|
7
7
|
mergeAverage,
|
|
8
8
|
mergeMinMax,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type
|
|
9
|
+
VersionedAggregated,
|
|
10
|
+
aggregatedAverage,
|
|
11
|
+
aggregatedMinMax,
|
|
12
|
+
type InferAggregatedResult,
|
|
13
13
|
} from "@checkstack/backend-api";
|
|
14
14
|
import {
|
|
15
15
|
healthResultNumber,
|
|
@@ -70,29 +70,24 @@ const diskResultSchema = z.object({
|
|
|
70
70
|
|
|
71
71
|
export type DiskResult = z.infer<typeof diskResultSchema>;
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
// Aggregated result fields definition
|
|
74
|
+
const diskAggregatedFields = {
|
|
75
|
+
avgUsedPercent: aggregatedAverage({
|
|
75
76
|
"x-chart-type": "line",
|
|
76
77
|
"x-chart-label": "Avg Disk Usage",
|
|
77
78
|
"x-chart-unit": "%",
|
|
78
79
|
}),
|
|
79
|
-
maxUsedPercent:
|
|
80
|
+
maxUsedPercent: aggregatedMinMax({
|
|
80
81
|
"x-chart-type": "line",
|
|
81
82
|
"x-chart-label": "Max Disk Usage",
|
|
82
83
|
"x-chart-unit": "%",
|
|
83
84
|
}),
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const diskAggregatedInternalSchema = z.object({
|
|
87
|
-
_usage: averageStateSchema.optional(),
|
|
88
|
-
_maxUsage: minMaxStateSchema.optional(),
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
const diskAggregatedSchema = diskAggregatedDisplaySchema.merge(
|
|
92
|
-
diskAggregatedInternalSchema,
|
|
93
|
-
);
|
|
85
|
+
};
|
|
94
86
|
|
|
95
|
-
|
|
87
|
+
// Type inferred from field definitions
|
|
88
|
+
export type DiskAggregatedResult = InferAggregatedResult<
|
|
89
|
+
typeof diskAggregatedFields
|
|
90
|
+
>;
|
|
96
91
|
|
|
97
92
|
// ============================================================================
|
|
98
93
|
// DISK COLLECTOR
|
|
@@ -112,9 +107,9 @@ export class DiskCollector implements CollectorStrategy<
|
|
|
112
107
|
|
|
113
108
|
config = new Versioned({ version: 1, schema: diskConfigSchema });
|
|
114
109
|
result = new Versioned({ version: 1, schema: diskResultSchema });
|
|
115
|
-
aggregatedResult = new
|
|
110
|
+
aggregatedResult = new VersionedAggregated({
|
|
116
111
|
version: 1,
|
|
117
|
-
|
|
112
|
+
fields: diskAggregatedFields,
|
|
118
113
|
});
|
|
119
114
|
|
|
120
115
|
async execute({
|
|
@@ -138,21 +133,15 @@ export class DiskCollector implements CollectorStrategy<
|
|
|
138
133
|
): DiskAggregatedResult {
|
|
139
134
|
const metadata = run.metadata;
|
|
140
135
|
|
|
141
|
-
const usageState = mergeAverage(
|
|
142
|
-
existing?._usage as AverageState | undefined,
|
|
143
|
-
metadata?.usedPercent,
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
const maxUsageState = mergeMinMax(
|
|
147
|
-
existing?._maxUsage as MinMaxState | undefined,
|
|
148
|
-
metadata?.usedPercent,
|
|
149
|
-
);
|
|
150
|
-
|
|
151
136
|
return {
|
|
152
|
-
avgUsedPercent:
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
137
|
+
avgUsedPercent: mergeAverage(
|
|
138
|
+
existing?.avgUsedPercent,
|
|
139
|
+
metadata?.usedPercent,
|
|
140
|
+
),
|
|
141
|
+
maxUsedPercent: mergeMinMax(
|
|
142
|
+
existing?.maxUsedPercent,
|
|
143
|
+
metadata?.usedPercent,
|
|
144
|
+
),
|
|
156
145
|
};
|
|
157
146
|
}
|
|
158
147
|
|
|
@@ -111,9 +111,9 @@ Swap: 4096 512 3584`
|
|
|
111
111
|
let aggregated = collector.mergeResult(undefined, runs[0]);
|
|
112
112
|
aggregated = collector.mergeResult(aggregated, runs[1]);
|
|
113
113
|
|
|
114
|
-
expect(aggregated.avgUsedPercent).toBe(50);
|
|
115
|
-
expect(aggregated.maxUsedPercent).toBe(75);
|
|
116
|
-
expect(aggregated.avgUsedMb).toBe(8000);
|
|
114
|
+
expect(aggregated.avgUsedPercent.avg).toBe(50);
|
|
115
|
+
expect(aggregated.maxUsedPercent.max).toBe(75);
|
|
116
|
+
expect(aggregated.avgUsedMb.avg).toBe(8000);
|
|
117
117
|
});
|
|
118
118
|
});
|
|
119
119
|
|
package/src/collectors/memory.ts
CHANGED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
type CollectorStrategy,
|
|
7
7
|
mergeAverage,
|
|
8
8
|
mergeMinMax,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type
|
|
9
|
+
VersionedAggregated,
|
|
10
|
+
aggregatedAverage,
|
|
11
|
+
aggregatedMinMax,
|
|
12
|
+
type InferAggregatedResult,
|
|
13
13
|
} from "@checkstack/backend-api";
|
|
14
14
|
import { healthResultNumber } from "@checkstack/healthcheck-common";
|
|
15
15
|
import {
|
|
@@ -73,35 +73,29 @@ const memoryResultSchema = z.object({
|
|
|
73
73
|
|
|
74
74
|
export type MemoryResult = z.infer<typeof memoryResultSchema>;
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
// Aggregated result fields definition
|
|
77
|
+
const memoryAggregatedFields = {
|
|
78
|
+
avgUsedPercent: aggregatedAverage({
|
|
78
79
|
"x-chart-type": "line",
|
|
79
80
|
"x-chart-label": "Avg Memory Usage",
|
|
80
81
|
"x-chart-unit": "%",
|
|
81
82
|
}),
|
|
82
|
-
maxUsedPercent:
|
|
83
|
+
maxUsedPercent: aggregatedMinMax({
|
|
83
84
|
"x-chart-type": "line",
|
|
84
85
|
"x-chart-label": "Max Memory Usage",
|
|
85
86
|
"x-chart-unit": "%",
|
|
86
87
|
}),
|
|
87
|
-
avgUsedMb:
|
|
88
|
+
avgUsedMb: aggregatedAverage({
|
|
88
89
|
"x-chart-type": "line",
|
|
89
90
|
"x-chart-label": "Avg Memory Used",
|
|
90
91
|
"x-chart-unit": "MB",
|
|
91
92
|
}),
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const memoryAggregatedInternalSchema = z.object({
|
|
95
|
-
_usedPercent: averageStateSchema.optional(),
|
|
96
|
-
_maxUsedPercent: minMaxStateSchema.optional(),
|
|
97
|
-
_usedMb: averageStateSchema.optional(),
|
|
98
|
-
});
|
|
93
|
+
};
|
|
99
94
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
export type MemoryAggregatedResult = z.infer<typeof memoryAggregatedSchema>;
|
|
95
|
+
// Type inferred from field definitions
|
|
96
|
+
export type MemoryAggregatedResult = InferAggregatedResult<
|
|
97
|
+
typeof memoryAggregatedFields
|
|
98
|
+
>;
|
|
105
99
|
|
|
106
100
|
// ============================================================================
|
|
107
101
|
// MEMORY COLLECTOR
|
|
@@ -121,9 +115,9 @@ export class MemoryCollector implements CollectorStrategy<
|
|
|
121
115
|
|
|
122
116
|
config = new Versioned({ version: 1, schema: memoryConfigSchema });
|
|
123
117
|
result = new Versioned({ version: 1, schema: memoryResultSchema });
|
|
124
|
-
aggregatedResult = new
|
|
118
|
+
aggregatedResult = new VersionedAggregated({
|
|
125
119
|
version: 1,
|
|
126
|
-
|
|
120
|
+
fields: memoryAggregatedFields,
|
|
127
121
|
});
|
|
128
122
|
|
|
129
123
|
async execute({
|
|
@@ -159,28 +153,16 @@ export class MemoryCollector implements CollectorStrategy<
|
|
|
159
153
|
): MemoryAggregatedResult {
|
|
160
154
|
const metadata = run.metadata;
|
|
161
155
|
|
|
162
|
-
const usedPercentState = mergeAverage(
|
|
163
|
-
existing?._usedPercent as AverageState | undefined,
|
|
164
|
-
metadata?.usedPercent,
|
|
165
|
-
);
|
|
166
|
-
|
|
167
|
-
const maxUsedPercentState = mergeMinMax(
|
|
168
|
-
existing?._maxUsedPercent as MinMaxState | undefined,
|
|
169
|
-
metadata?.usedPercent,
|
|
170
|
-
);
|
|
171
|
-
|
|
172
|
-
const usedMbState = mergeAverage(
|
|
173
|
-
existing?._usedMb as AverageState | undefined,
|
|
174
|
-
metadata?.usedMb,
|
|
175
|
-
);
|
|
176
|
-
|
|
177
156
|
return {
|
|
178
|
-
avgUsedPercent:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
157
|
+
avgUsedPercent: mergeAverage(
|
|
158
|
+
existing?.avgUsedPercent,
|
|
159
|
+
metadata?.usedPercent,
|
|
160
|
+
),
|
|
161
|
+
maxUsedPercent: mergeMinMax(
|
|
162
|
+
existing?.maxUsedPercent,
|
|
163
|
+
metadata?.usedPercent,
|
|
164
|
+
),
|
|
165
|
+
avgUsedMb: mergeAverage(existing?.avgUsedMb, metadata?.usedMb),
|
|
184
166
|
};
|
|
185
167
|
}
|
|
186
168
|
|