@oneuptime/common 10.7.0 → 10.7.2

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.
@@ -0,0 +1,193 @@
1
+ import {
2
+ KubernetesAlertTemplate,
3
+ KubernetesAlertTemplateArgs,
4
+ getAllKubernetesAlertTemplates,
5
+ getKubernetesAlertTemplateById,
6
+ } from "../../../Types/Monitor/KubernetesAlertTemplates";
7
+ import MonitorStep from "../../../Types/Monitor/MonitorStep";
8
+ import MonitorStepKubernetesMonitor from "../../../Types/Monitor/MonitorStepKubernetesMonitor";
9
+ import MetricsAggregationType from "../../../Types/Metrics/MetricsAggregationType";
10
+ import ObjectID from "../../../Types/ObjectID";
11
+
12
+ /*
13
+ * These tests lock in the subtle, easy-to-regress decisions in the per-node
14
+ * ratio alert templates (request utilization + usage utilization):
15
+ *
16
+ * 1. Group-by uses the ClickHouse-stored `resource.`-prefixed attribute
17
+ * name (`resource.k8s.node.name`), not the bare `k8s.node.name`.
18
+ * OneUptime stamps OTel resource attributes with a `resource.` prefix
19
+ * at ingest, so the bare key would match nothing and collapse every
20
+ * node into one mislabeled series.
21
+ *
22
+ * 2. The aggregation differs by numerator shape:
23
+ * - Request utilization sums MANY container series per node, and both
24
+ * metrics come from the same `k8s_cluster` scrape, so `Sum` on both
25
+ * sides totals the containers and the scrape multiple cancels.
26
+ * - Usage utilization has ONE series per node, and numerator
27
+ * (kubeletstats) and denominator (k8s_cluster) come from different
28
+ * receivers, so `Avg` on both sides gives the correct per-minute
29
+ * ratio regardless of each receiver's scrape count.
30
+ *
31
+ * 3. The criteria reference the FORMULA alias (the computed percentage),
32
+ * not a raw query alias.
33
+ */
34
+
35
+ interface RatioTemplateCase {
36
+ id: string;
37
+ numerator: string;
38
+ denominator: string;
39
+ numAlias: string;
40
+ denAlias: string;
41
+ resultAlias: string;
42
+ aggregation: MetricsAggregationType;
43
+ threshold: number;
44
+ }
45
+
46
+ const RATIO_TEMPLATES: Array<RatioTemplateCase> = [
47
+ // Request utilization — Sum/Sum (numerator totals many containers per node).
48
+ {
49
+ id: "k8s-node-cpu-request-utilization",
50
+ numerator: "k8s.container.cpu_request",
51
+ denominator: "k8s.node.allocatable_cpu",
52
+ numAlias: "req_cpu",
53
+ denAlias: "alloc_cpu",
54
+ resultAlias: "node_cpu_request_utilization",
55
+ aggregation: MetricsAggregationType.Sum,
56
+ threshold: 90,
57
+ },
58
+ {
59
+ id: "k8s-node-memory-request-utilization",
60
+ numerator: "k8s.container.memory_request",
61
+ denominator: "k8s.node.allocatable_memory",
62
+ numAlias: "req_mem",
63
+ denAlias: "alloc_mem",
64
+ resultAlias: "node_memory_request_utilization",
65
+ aggregation: MetricsAggregationType.Sum,
66
+ threshold: 90,
67
+ },
68
+ // Usage utilization — Avg/Avg (one series per node, cross-receiver).
69
+ {
70
+ id: "k8s-high-cpu",
71
+ numerator: "k8s.node.cpu.usage",
72
+ denominator: "k8s.node.allocatable_cpu",
73
+ numAlias: "used_cpu",
74
+ denAlias: "alloc_cpu",
75
+ resultAlias: "node_cpu_utilization",
76
+ aggregation: MetricsAggregationType.Avg,
77
+ threshold: 90,
78
+ },
79
+ {
80
+ id: "k8s-high-memory",
81
+ numerator: "k8s.node.memory.usage",
82
+ denominator: "k8s.node.allocatable_memory",
83
+ numAlias: "used_mem",
84
+ denAlias: "alloc_mem",
85
+ resultAlias: "node_memory_utilization",
86
+ aggregation: MetricsAggregationType.Avg,
87
+ threshold: 85,
88
+ },
89
+ ];
90
+
91
+ function buildArgs(): KubernetesAlertTemplateArgs {
92
+ return {
93
+ clusterIdentifier: "prod-cluster",
94
+ onlineMonitorStatusId: ObjectID.generate(),
95
+ offlineMonitorStatusId: ObjectID.generate(),
96
+ defaultIncidentSeverityId: ObjectID.generate(),
97
+ defaultAlertSeverityId: ObjectID.generate(),
98
+ monitorName: "Test Monitor",
99
+ };
100
+ }
101
+
102
+ function getKubernetesMonitor(step: MonitorStep): MonitorStepKubernetesMonitor {
103
+ const kubernetesMonitor: MonitorStepKubernetesMonitor | undefined =
104
+ step.data?.kubernetesMonitor;
105
+ if (!kubernetesMonitor) {
106
+ throw new Error("kubernetesMonitor missing from monitor step");
107
+ }
108
+ return kubernetesMonitor;
109
+ }
110
+
111
+ describe("KubernetesAlertTemplates - per-node ratio templates", () => {
112
+ test("all four ratio templates are registered", () => {
113
+ const ids: Array<string> = getAllKubernetesAlertTemplates().map(
114
+ (t: KubernetesAlertTemplate) => {
115
+ return t.id;
116
+ },
117
+ );
118
+ for (const tc of RATIO_TEMPLATES) {
119
+ expect(ids).toContain(tc.id);
120
+ }
121
+ });
122
+
123
+ test.each(RATIO_TEMPLATES)(
124
+ "$id is a per-node ($aggregation/$aggregation) ratio keyed on resource.k8s.node.name",
125
+ (tc: RatioTemplateCase) => {
126
+ const template: KubernetesAlertTemplate | undefined =
127
+ getKubernetesAlertTemplateById(tc.id);
128
+ expect(template).toBeDefined();
129
+
130
+ const step: MonitorStep = template!.getMonitorStep(buildArgs());
131
+ const monitor: MonitorStepKubernetesMonitor = getKubernetesMonitor(step);
132
+
133
+ const queryConfigs: Array<any> = monitor.metricViewConfig
134
+ .queryConfigs as Array<any>;
135
+ const formulaConfigs: Array<any> = monitor.metricViewConfig
136
+ .formulaConfigs as Array<any>;
137
+
138
+ // Two queries (numerator + denominator) and one formula.
139
+ expect(queryConfigs).toHaveLength(2);
140
+ expect(formulaConfigs).toHaveLength(1);
141
+
142
+ const [numerator, denominator] = queryConfigs;
143
+
144
+ // Metric names.
145
+ expect(numerator.metricQueryData.filterData.metricName).toBe(
146
+ tc.numerator,
147
+ );
148
+ expect(denominator.metricQueryData.filterData.metricName).toBe(
149
+ tc.denominator,
150
+ );
151
+
152
+ /*
153
+ * Decision (2): both sides use the same aggregation — Sum for request
154
+ * utilization (totals containers, cancels scrape factor) or Avg for
155
+ * usage utilization (one series per node, cross-receiver).
156
+ */
157
+ expect(numerator.metricQueryData.filterData.aggegationType).toBe(
158
+ tc.aggregation,
159
+ );
160
+ expect(denominator.metricQueryData.filterData.aggegationType).toBe(
161
+ tc.aggregation,
162
+ );
163
+
164
+ /*
165
+ * Decision (1): group by the resource-prefixed node attribute on BOTH
166
+ * queries so the per-series fingerprints line up for the formula join.
167
+ */
168
+ expect(numerator.metricQueryData.groupByAttributeKeys).toEqual([
169
+ "resource.k8s.node.name",
170
+ ]);
171
+ expect(denominator.metricQueryData.groupByAttributeKeys).toEqual([
172
+ "resource.k8s.node.name",
173
+ ]);
174
+
175
+ // Formula divides numerator by denominator and scales to a percentage.
176
+ expect(formulaConfigs[0].metricFormulaData.metricFormula).toBe(
177
+ `(${tc.numAlias} / ${tc.denAlias}) * 100`,
178
+ );
179
+
180
+ /*
181
+ * Decision (3): the criteria must reference the FORMULA alias (not a
182
+ * raw query), so the threshold is evaluated against the computed
183
+ * percentage.
184
+ */
185
+ const offlineFilters: Array<any> = step.data?.monitorCriteria.data
186
+ ?.monitorCriteriaInstanceArray?.[0]?.data?.filters as Array<any>;
187
+ expect(offlineFilters[0].metricMonitorOptions.metricAlias).toBe(
188
+ tc.resultAlias,
189
+ );
190
+ expect(offlineFilters[0].value).toBe(tc.threshold);
191
+ },
192
+ );
193
+ });
@@ -236,7 +236,7 @@ describe("DuplicateModel", () => {
236
236
  );
237
237
  expect(
238
238
  within(errorDialog).getByTestId("confirm-modal-description")?.textContent,
239
- ).toBe("Error: Could not create Foo");
239
+ ).toBe("Could not create Foo");
240
240
  expect(
241
241
  within(errorDialog).getByTestId("modal-footer-submit-button")
242
242
  ?.textContent,
@@ -274,7 +274,7 @@ describe("DuplicateModel", () => {
274
274
  );
275
275
  expect(
276
276
  within(errorDialog).getByTestId("confirm-modal-description")?.textContent,
277
- ).toBe("Error: Could not find Foo with id foo");
277
+ ).toBe("Could not find Foo with id foo");
278
278
  expect(
279
279
  within(errorDialog).getByTestId("modal-footer-submit-button")
280
280
  ?.textContent,
@@ -221,6 +221,111 @@ export function buildKubernetesMonitorConfig(args: {
221
221
  };
222
222
  }
223
223
 
224
+ /**
225
+ * Build a per-series ratio monitor: `(numerator / denominator) * 100`,
226
+ * grouped by a single OpenTelemetry attribute so one incident fires per
227
+ * group (e.g. per node).
228
+ *
229
+ * Used for saturation metrics that aren't emitted as a single ready-made
230
+ * series — e.g. node request utilization (summed pod requests ÷ node
231
+ * allocatable) and node usage utilization (node usage ÷ node allocatable),
232
+ * neither of which the kubeletstats receiver exposes as a percentage.
233
+ *
234
+ * Aggregation (`aggregationType`, default `Sum`) — the per-series worker
235
+ * buckets raw rows by (group, minute) and applies this aggregation to
236
+ * EVERY row in the bucket, i.e. across both the grouped entities AND the
237
+ * scrapes in that minute. Pick it based on the numerator:
238
+ *
239
+ * - `Sum` when the numerator must be totalled across multiple series per
240
+ * group (e.g. summing every container's request on a node). The scrape
241
+ * multiple then has to cancel, so numerator and denominator must ride
242
+ * the SAME receiver/scrape — true for the request-utilization
243
+ * templates, where both metrics come from `k8s_cluster`:
244
+ * `(Σrequests × scrapes) / (allocatable × scrapes)`.
245
+ *
246
+ * - `Avg` when the numerator is already ONE series per group (e.g.
247
+ * `k8s.node.cpu.usage`). Avg yields the representative per-minute value
248
+ * independent of scrape count, so it stays correct even when numerator
249
+ * and denominator come from DIFFERENT receivers on independent scrape
250
+ * cycles (node usage is from the kubeletstats DaemonSet; allocatable is
251
+ * from the `k8s_cluster` Deployment). `Sum` there would only cancel if
252
+ * both reported the same row count every minute — fragile across
253
+ * restarts / missed scrapes / minute-boundary jitter.
254
+ *
255
+ * The group-by key is the ClickHouse-stored attribute name, which carries
256
+ * the `resource.` prefix for OTel resource attributes (see
257
+ * OtelMetricsIngestService — resource attributes are stamped with
258
+ * `prefixKeysWithString: "resource"`). So node grouping is
259
+ * `resource.k8s.node.name`, not the bare `k8s.node.name`.
260
+ */
261
+ export function buildKubernetesRatioMonitorConfig(args: {
262
+ clusterIdentifier: string;
263
+ numeratorMetricName: string;
264
+ denominatorMetricName: string;
265
+ groupByAttributeKey: string;
266
+ numeratorAlias: string;
267
+ denominatorAlias: string;
268
+ resultAlias: string;
269
+ resultLegend: string;
270
+ resourceScope: KubernetesResourceScope;
271
+ rollingTime: RollingTime;
272
+ aggregationType?: MetricsAggregationType | undefined;
273
+ }): MonitorStepKubernetesMonitor {
274
+ const aggregationType: MetricsAggregationType =
275
+ args.aggregationType || MetricsAggregationType.Sum;
276
+
277
+ const buildQueryConfig: (alias: string, metricName: string) => any = (
278
+ alias: string,
279
+ metricName: string,
280
+ ): any => {
281
+ return {
282
+ metricAliasData: {
283
+ metricVariable: alias,
284
+ title: alias,
285
+ description: alias,
286
+ legend: alias,
287
+ legendUnit: undefined,
288
+ },
289
+ metricQueryData: {
290
+ filterData: {
291
+ metricName: metricName,
292
+ attributes: {},
293
+ aggegationType: aggregationType,
294
+ aggregateBy: {},
295
+ },
296
+ groupByAttributeKeys: [args.groupByAttributeKey],
297
+ },
298
+ };
299
+ };
300
+
301
+ return {
302
+ clusterIdentifier: args.clusterIdentifier,
303
+ resourceScope: args.resourceScope,
304
+ resourceFilters: {},
305
+ metricViewConfig: {
306
+ queryConfigs: [
307
+ buildQueryConfig(args.numeratorAlias, args.numeratorMetricName),
308
+ buildQueryConfig(args.denominatorAlias, args.denominatorMetricName),
309
+ ],
310
+ formulaConfigs: [
311
+ {
312
+ metricAliasData: {
313
+ metricVariable: args.resultAlias,
314
+ title: args.resultLegend,
315
+ description: args.resultLegend,
316
+ legend: args.resultLegend,
317
+ legendUnit: "%",
318
+ },
319
+ metricFormulaData: {
320
+ metricFormula: `(${args.numeratorAlias} / ${args.denominatorAlias}) * 100`,
321
+ },
322
+ },
323
+ ],
324
+ },
325
+ rollingTime: args.rollingTime,
326
+ };
327
+ }
328
+
224
329
  // --- Template Definitions ---
225
330
 
226
331
  const crashLoopBackOffTemplate: KubernetesAlertTemplate = {
@@ -356,19 +461,31 @@ const nodeNotReadyTemplate: KubernetesAlertTemplate = {
356
461
  const highCpuTemplate: KubernetesAlertTemplate = {
357
462
  id: "k8s-high-cpu",
358
463
  name: "High Node CPU Utilization",
359
- description: "Alert when node CPU utilization exceeds 90% sustained.",
464
+ description:
465
+ "Alert when a node's average CPU usage exceeds 90% of its allocatable CPU. Computed per node as k8s.node.cpu.usage ÷ k8s.node.allocatable_cpu × 100 — both are cores, so this is a true percentage (the raw k8s.node.cpu.utilization metric is a misnamed cores gauge, not a percent).",
360
466
  category: "Node",
361
467
  severity: "Warning",
362
468
  getMonitorStep: (args: KubernetesAlertTemplateArgs): MonitorStep => {
363
- const metricAlias: string = "node_cpu";
469
+ const metricAlias: string = "node_cpu_utilization";
364
470
 
365
471
  return buildKubernetesMonitorStep({
366
- kubernetesMonitor: buildKubernetesMonitorConfig({
472
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
367
473
  clusterIdentifier: args.clusterIdentifier,
368
- metricName: "k8s.node.cpu.utilization",
369
- metricAlias,
474
+ numeratorMetricName: "k8s.node.cpu.usage",
475
+ denominatorMetricName: "k8s.node.allocatable_cpu",
476
+ groupByAttributeKey: "resource.k8s.node.name",
477
+ numeratorAlias: "used_cpu",
478
+ denominatorAlias: "alloc_cpu",
479
+ resultAlias: metricAlias,
480
+ resultLegend: "Node CPU Utilization (%)",
370
481
  resourceScope: KubernetesResourceScope.Node,
371
482
  rollingTime: RollingTime.Past5Minutes,
483
+ /*
484
+ * Single series per node from two DIFFERENT receivers (usage =
485
+ * kubeletstats, allocatable = k8s_cluster) — Avg keeps the per-minute
486
+ * ratio correct regardless of each receiver's scrape count. See
487
+ * buildKubernetesRatioMonitorConfig.
488
+ */
372
489
  aggregationType: MetricsAggregationType.Avg,
373
490
  }),
374
491
  offlineCriteriaInstance: buildOfflineCriteriaInstance({
@@ -380,10 +497,10 @@ const highCpuTemplate: KubernetesAlertTemplate = {
380
497
  filterType: FilterType.GreaterThan,
381
498
  value: 90,
382
499
  incidentTitle: `[K8s] High CPU Utilization (>90%) - ${args.monitorName}`,
383
- incidentDescription: `Node CPU utilization has exceeded 90% in the Kubernetes cluster. Sustained high CPU usage can cause pod throttling, increased latency, and potential node instability. Check the root cause for the specific node and top CPU-consuming workloads.`,
500
+ incidentDescription: `A node's average CPU usage has exceeded 90% of its allocatable CPU. Sustained high CPU usage can cause pod throttling, increased latency, and potential node instability. Check the root cause for the specific node and top CPU-consuming workloads.`,
384
501
  criteriaName: "High CPU - Utilization > 90%",
385
502
  criteriaDescription:
386
- "Triggers when average node CPU utilization exceeds 90% over the monitoring window.",
503
+ "Triggers when a node's average CPU usage exceeds 90% of its allocatable CPU over the monitoring window.",
387
504
  }),
388
505
  onlineCriteriaInstance: buildOnlineCriteriaInstance({
389
506
  onlineMonitorStatusId: args.onlineMonitorStatusId,
@@ -398,19 +515,31 @@ const highCpuTemplate: KubernetesAlertTemplate = {
398
515
  const highMemoryTemplate: KubernetesAlertTemplate = {
399
516
  id: "k8s-high-memory",
400
517
  name: "High Node Memory Utilization",
401
- description: "Alert when node memory utilization exceeds 85% sustained.",
518
+ description:
519
+ "Alert when a node's average memory usage exceeds 85% of its allocatable memory. Computed per node as k8s.node.memory.usage ÷ k8s.node.allocatable_memory × 100 — both are bytes, so this is a true percentage (the raw k8s.node.memory.usage metric is bytes, not a percent).",
402
520
  category: "Node",
403
521
  severity: "Warning",
404
522
  getMonitorStep: (args: KubernetesAlertTemplateArgs): MonitorStep => {
405
- const metricAlias: string = "node_memory";
523
+ const metricAlias: string = "node_memory_utilization";
406
524
 
407
525
  return buildKubernetesMonitorStep({
408
- kubernetesMonitor: buildKubernetesMonitorConfig({
526
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
409
527
  clusterIdentifier: args.clusterIdentifier,
410
- metricName: "k8s.node.memory.usage",
411
- metricAlias,
528
+ numeratorMetricName: "k8s.node.memory.usage",
529
+ denominatorMetricName: "k8s.node.allocatable_memory",
530
+ groupByAttributeKey: "resource.k8s.node.name",
531
+ numeratorAlias: "used_mem",
532
+ denominatorAlias: "alloc_mem",
533
+ resultAlias: metricAlias,
534
+ resultLegend: "Node Memory Utilization (%)",
412
535
  resourceScope: KubernetesResourceScope.Node,
413
536
  rollingTime: RollingTime.Past5Minutes,
537
+ /*
538
+ * Single series per node from two DIFFERENT receivers (usage =
539
+ * kubeletstats, allocatable = k8s_cluster) — Avg keeps the per-minute
540
+ * ratio correct regardless of each receiver's scrape count. See
541
+ * buildKubernetesRatioMonitorConfig.
542
+ */
414
543
  aggregationType: MetricsAggregationType.Avg,
415
544
  }),
416
545
  offlineCriteriaInstance: buildOfflineCriteriaInstance({
@@ -422,10 +551,10 @@ const highMemoryTemplate: KubernetesAlertTemplate = {
422
551
  filterType: FilterType.GreaterThan,
423
552
  value: 85,
424
553
  incidentTitle: `[K8s] High Memory Utilization (>85%) - ${args.monitorName}`,
425
- incidentDescription: `Node memory utilization has exceeded 85% in the Kubernetes cluster. High memory usage can lead to OOMKilled pods, node instability, and potential evictions. Check the root cause for the specific node and top memory-consuming workloads.`,
554
+ incidentDescription: `A node's average memory usage has exceeded 85% of its allocatable memory. High memory usage can lead to OOMKilled pods, node instability, and potential evictions. Check the root cause for the specific node and top memory-consuming workloads.`,
426
555
  criteriaName: "High Memory - Utilization > 85%",
427
556
  criteriaDescription:
428
- "Triggers when average node memory utilization exceeds 85% over the monitoring window.",
557
+ "Triggers when a node's average memory usage exceeds 85% of its allocatable memory over the monitoring window.",
429
558
  }),
430
559
  onlineCriteriaInstance: buildOnlineCriteriaInstance({
431
560
  onlineMonitorStatusId: args.onlineMonitorStatusId,
@@ -736,6 +865,100 @@ const daemonSetUnavailableTemplate: KubernetesAlertTemplate = {
736
865
  },
737
866
  };
738
867
 
868
+ const nodeCpuRequestUtilizationTemplate: KubernetesAlertTemplate = {
869
+ id: "k8s-node-cpu-request-utilization",
870
+ name: "High Node CPU Request Commitment",
871
+ description:
872
+ "Alert when a node's committed CPU requests exceed 90% of its allocatable CPU. Derived per node from summed container CPU requests over node allocatable CPU — both collected by default via the k8s_cluster receiver. A near-full node can't schedule new pods even if actual CPU usage is low.",
873
+ category: "Node",
874
+ severity: "Warning",
875
+ getMonitorStep: (args: KubernetesAlertTemplateArgs): MonitorStep => {
876
+ const metricAlias: string = "node_cpu_request_utilization";
877
+
878
+ return buildKubernetesMonitorStep({
879
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
880
+ clusterIdentifier: args.clusterIdentifier,
881
+ numeratorMetricName: "k8s.container.cpu_request",
882
+ denominatorMetricName: "k8s.node.allocatable_cpu",
883
+ groupByAttributeKey: "resource.k8s.node.name",
884
+ numeratorAlias: "req_cpu",
885
+ denominatorAlias: "alloc_cpu",
886
+ resultAlias: metricAlias,
887
+ resultLegend: "Node CPU Request Utilization (%)",
888
+ resourceScope: KubernetesResourceScope.Node,
889
+ rollingTime: RollingTime.Past5Minutes,
890
+ }),
891
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
892
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
893
+ incidentSeverityId: args.defaultIncidentSeverityId,
894
+ alertSeverityId: args.defaultAlertSeverityId,
895
+ monitorName: args.monitorName,
896
+ metricAlias,
897
+ filterType: FilterType.GreaterThan,
898
+ value: 90,
899
+ incidentTitle: `[K8s] High Node CPU Request Commitment (>90%) - ${args.monitorName}`,
900
+ incidentDescription: `A node's committed CPU requests have exceeded 90% of its allocatable CPU. The node is nearly full from a scheduling standpoint and may be unable to place new pods, even if current CPU usage is low. Check the root cause for the specific node and its top CPU-requesting workloads.`,
901
+ criteriaName: "High CPU Request Commitment - Utilization > 90%",
902
+ criteriaDescription:
903
+ "Triggers when any node's summed container CPU requests exceed 90% of its allocatable CPU.",
904
+ }),
905
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
906
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
907
+ metricAlias,
908
+ filterType: FilterType.LessThanOrEqualTo,
909
+ value: 90,
910
+ }),
911
+ });
912
+ },
913
+ };
914
+
915
+ const nodeMemoryRequestUtilizationTemplate: KubernetesAlertTemplate = {
916
+ id: "k8s-node-memory-request-utilization",
917
+ name: "High Node Memory Request Commitment",
918
+ description:
919
+ "Alert when a node's committed memory requests exceed 90% of its allocatable memory. Derived per node from summed container memory requests over node allocatable memory — both collected by default via the k8s_cluster receiver. A near-full node can't schedule new pods even if actual memory usage is low.",
920
+ category: "Node",
921
+ severity: "Warning",
922
+ getMonitorStep: (args: KubernetesAlertTemplateArgs): MonitorStep => {
923
+ const metricAlias: string = "node_memory_request_utilization";
924
+
925
+ return buildKubernetesMonitorStep({
926
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
927
+ clusterIdentifier: args.clusterIdentifier,
928
+ numeratorMetricName: "k8s.container.memory_request",
929
+ denominatorMetricName: "k8s.node.allocatable_memory",
930
+ groupByAttributeKey: "resource.k8s.node.name",
931
+ numeratorAlias: "req_mem",
932
+ denominatorAlias: "alloc_mem",
933
+ resultAlias: metricAlias,
934
+ resultLegend: "Node Memory Request Utilization (%)",
935
+ resourceScope: KubernetesResourceScope.Node,
936
+ rollingTime: RollingTime.Past5Minutes,
937
+ }),
938
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
939
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
940
+ incidentSeverityId: args.defaultIncidentSeverityId,
941
+ alertSeverityId: args.defaultAlertSeverityId,
942
+ monitorName: args.monitorName,
943
+ metricAlias,
944
+ filterType: FilterType.GreaterThan,
945
+ value: 90,
946
+ incidentTitle: `[K8s] High Node Memory Request Commitment (>90%) - ${args.monitorName}`,
947
+ incidentDescription: `A node's committed memory requests have exceeded 90% of its allocatable memory. The node is nearly full from a scheduling standpoint and may be unable to place new pods, even if current memory usage is low. Check the root cause for the specific node and its top memory-requesting workloads.`,
948
+ criteriaName: "High Memory Request Commitment - Utilization > 90%",
949
+ criteriaDescription:
950
+ "Triggers when any node's summed container memory requests exceed 90% of its allocatable memory.",
951
+ }),
952
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
953
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
954
+ metricAlias,
955
+ filterType: FilterType.LessThanOrEqualTo,
956
+ value: 90,
957
+ }),
958
+ });
959
+ },
960
+ };
961
+
739
962
  export function getAllKubernetesAlertTemplates(): Array<KubernetesAlertTemplate> {
740
963
  return [
741
964
  crashLoopBackOffTemplate,
@@ -750,6 +973,8 @@ export function getAllKubernetesAlertTemplates(): Array<KubernetesAlertTemplate>
750
973
  schedulerBacklogTemplate,
751
974
  highDiskUsageTemplate,
752
975
  daemonSetUnavailableTemplate,
976
+ nodeCpuRequestUtilizationTemplate,
977
+ nodeMemoryRequestUtilizationTemplate,
753
978
  ];
754
979
  }
755
980
 
@@ -0,0 +1,121 @@
1
+ import { getAllKubernetesAlertTemplates, getKubernetesAlertTemplateById, } from "../../../Types/Monitor/KubernetesAlertTemplates";
2
+ import MetricsAggregationType from "../../../Types/Metrics/MetricsAggregationType";
3
+ import ObjectID from "../../../Types/ObjectID";
4
+ const RATIO_TEMPLATES = [
5
+ // Request utilization — Sum/Sum (numerator totals many containers per node).
6
+ {
7
+ id: "k8s-node-cpu-request-utilization",
8
+ numerator: "k8s.container.cpu_request",
9
+ denominator: "k8s.node.allocatable_cpu",
10
+ numAlias: "req_cpu",
11
+ denAlias: "alloc_cpu",
12
+ resultAlias: "node_cpu_request_utilization",
13
+ aggregation: MetricsAggregationType.Sum,
14
+ threshold: 90,
15
+ },
16
+ {
17
+ id: "k8s-node-memory-request-utilization",
18
+ numerator: "k8s.container.memory_request",
19
+ denominator: "k8s.node.allocatable_memory",
20
+ numAlias: "req_mem",
21
+ denAlias: "alloc_mem",
22
+ resultAlias: "node_memory_request_utilization",
23
+ aggregation: MetricsAggregationType.Sum,
24
+ threshold: 90,
25
+ },
26
+ // Usage utilization — Avg/Avg (one series per node, cross-receiver).
27
+ {
28
+ id: "k8s-high-cpu",
29
+ numerator: "k8s.node.cpu.usage",
30
+ denominator: "k8s.node.allocatable_cpu",
31
+ numAlias: "used_cpu",
32
+ denAlias: "alloc_cpu",
33
+ resultAlias: "node_cpu_utilization",
34
+ aggregation: MetricsAggregationType.Avg,
35
+ threshold: 90,
36
+ },
37
+ {
38
+ id: "k8s-high-memory",
39
+ numerator: "k8s.node.memory.usage",
40
+ denominator: "k8s.node.allocatable_memory",
41
+ numAlias: "used_mem",
42
+ denAlias: "alloc_mem",
43
+ resultAlias: "node_memory_utilization",
44
+ aggregation: MetricsAggregationType.Avg,
45
+ threshold: 85,
46
+ },
47
+ ];
48
+ function buildArgs() {
49
+ return {
50
+ clusterIdentifier: "prod-cluster",
51
+ onlineMonitorStatusId: ObjectID.generate(),
52
+ offlineMonitorStatusId: ObjectID.generate(),
53
+ defaultIncidentSeverityId: ObjectID.generate(),
54
+ defaultAlertSeverityId: ObjectID.generate(),
55
+ monitorName: "Test Monitor",
56
+ };
57
+ }
58
+ function getKubernetesMonitor(step) {
59
+ var _a;
60
+ const kubernetesMonitor = (_a = step.data) === null || _a === void 0 ? void 0 : _a.kubernetesMonitor;
61
+ if (!kubernetesMonitor) {
62
+ throw new Error("kubernetesMonitor missing from monitor step");
63
+ }
64
+ return kubernetesMonitor;
65
+ }
66
+ describe("KubernetesAlertTemplates - per-node ratio templates", () => {
67
+ test("all four ratio templates are registered", () => {
68
+ const ids = getAllKubernetesAlertTemplates().map((t) => {
69
+ return t.id;
70
+ });
71
+ for (const tc of RATIO_TEMPLATES) {
72
+ expect(ids).toContain(tc.id);
73
+ }
74
+ });
75
+ test.each(RATIO_TEMPLATES)("$id is a per-node ($aggregation/$aggregation) ratio keyed on resource.k8s.node.name", (tc) => {
76
+ var _a, _b, _c, _d, _e;
77
+ const template = getKubernetesAlertTemplateById(tc.id);
78
+ expect(template).toBeDefined();
79
+ const step = template.getMonitorStep(buildArgs());
80
+ const monitor = getKubernetesMonitor(step);
81
+ const queryConfigs = monitor.metricViewConfig
82
+ .queryConfigs;
83
+ const formulaConfigs = monitor.metricViewConfig
84
+ .formulaConfigs;
85
+ // Two queries (numerator + denominator) and one formula.
86
+ expect(queryConfigs).toHaveLength(2);
87
+ expect(formulaConfigs).toHaveLength(1);
88
+ const [numerator, denominator] = queryConfigs;
89
+ // Metric names.
90
+ expect(numerator.metricQueryData.filterData.metricName).toBe(tc.numerator);
91
+ expect(denominator.metricQueryData.filterData.metricName).toBe(tc.denominator);
92
+ /*
93
+ * Decision (2): both sides use the same aggregation — Sum for request
94
+ * utilization (totals containers, cancels scrape factor) or Avg for
95
+ * usage utilization (one series per node, cross-receiver).
96
+ */
97
+ expect(numerator.metricQueryData.filterData.aggegationType).toBe(tc.aggregation);
98
+ expect(denominator.metricQueryData.filterData.aggegationType).toBe(tc.aggregation);
99
+ /*
100
+ * Decision (1): group by the resource-prefixed node attribute on BOTH
101
+ * queries so the per-series fingerprints line up for the formula join.
102
+ */
103
+ expect(numerator.metricQueryData.groupByAttributeKeys).toEqual([
104
+ "resource.k8s.node.name",
105
+ ]);
106
+ expect(denominator.metricQueryData.groupByAttributeKeys).toEqual([
107
+ "resource.k8s.node.name",
108
+ ]);
109
+ // Formula divides numerator by denominator and scales to a percentage.
110
+ expect(formulaConfigs[0].metricFormulaData.metricFormula).toBe(`(${tc.numAlias} / ${tc.denAlias}) * 100`);
111
+ /*
112
+ * Decision (3): the criteria must reference the FORMULA alias (not a
113
+ * raw query), so the threshold is evaluated against the computed
114
+ * percentage.
115
+ */
116
+ const offlineFilters = (_e = (_d = (_c = (_b = (_a = step.data) === null || _a === void 0 ? void 0 : _a.monitorCriteria.data) === null || _b === void 0 ? void 0 : _b.monitorCriteriaInstanceArray) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.filters;
117
+ expect(offlineFilters[0].metricMonitorOptions.metricAlias).toBe(tc.resultAlias);
118
+ expect(offlineFilters[0].value).toBe(tc.threshold);
119
+ });
120
+ });
121
+ //# sourceMappingURL=KubernetesAlertTemplates.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KubernetesAlertTemplates.test.js","sourceRoot":"","sources":["../../../../../Tests/Types/Monitor/KubernetesAlertTemplates.test.ts"],"names":[],"mappings":"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"}
@@ -173,7 +173,7 @@ describe("DuplicateModel", () => {
173
173
  await screen.findByText("Duplicate Error");
174
174
  const errorDialog = screen.getByRole("dialog");
175
175
  expect((_a = within(errorDialog).getByTestId("modal-title")) === null || _a === void 0 ? void 0 : _a.textContent).toBe("Duplicate Error");
176
- expect((_b = within(errorDialog).getByTestId("confirm-modal-description")) === null || _b === void 0 ? void 0 : _b.textContent).toBe("Error: Could not create Foo");
176
+ expect((_b = within(errorDialog).getByTestId("confirm-modal-description")) === null || _b === void 0 ? void 0 : _b.textContent).toBe("Could not create Foo");
177
177
  expect((_c = within(errorDialog).getByTestId("modal-footer-submit-button")) === null || _c === void 0 ? void 0 : _c.textContent).toBe("Close");
178
178
  });
179
179
  it("handles item not found error correctly", async () => {
@@ -196,7 +196,7 @@ describe("DuplicateModel", () => {
196
196
  await screen.findByText("Duplicate Error");
197
197
  const errorDialog = screen.getByRole("dialog");
198
198
  expect((_a = within(errorDialog).getByTestId("modal-title")) === null || _a === void 0 ? void 0 : _a.textContent).toBe("Duplicate Error");
199
- expect((_b = within(errorDialog).getByTestId("confirm-modal-description")) === null || _b === void 0 ? void 0 : _b.textContent).toBe("Error: Could not find Foo with id foo");
199
+ expect((_b = within(errorDialog).getByTestId("confirm-modal-description")) === null || _b === void 0 ? void 0 : _b.textContent).toBe("Could not find Foo with id foo");
200
200
  expect((_c = within(errorDialog).getByTestId("modal-footer-submit-button")) === null || _c === void 0 ? void 0 : _c.textContent).toBe("Close");
201
201
  });
202
202
  it("closes error dialog when close button is clicked", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DuplicateModel.test.js","sourceRoot":"","sources":["../../../../../Tests/UI/Components/DuplicateModel.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DuplicateModel.test.js","sourceRoot":"","sources":["../../../../../Tests/UI/Components/DuplicateModel.test.tsx"],"names":[],"mappings":"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"}
@@ -146,6 +146,92 @@ export function buildKubernetesMonitorConfig(args) {
146
146
  rollingTime: args.rollingTime,
147
147
  };
148
148
  }
149
+ /**
150
+ * Build a per-series ratio monitor: `(numerator / denominator) * 100`,
151
+ * grouped by a single OpenTelemetry attribute so one incident fires per
152
+ * group (e.g. per node).
153
+ *
154
+ * Used for saturation metrics that aren't emitted as a single ready-made
155
+ * series — e.g. node request utilization (summed pod requests ÷ node
156
+ * allocatable) and node usage utilization (node usage ÷ node allocatable),
157
+ * neither of which the kubeletstats receiver exposes as a percentage.
158
+ *
159
+ * Aggregation (`aggregationType`, default `Sum`) — the per-series worker
160
+ * buckets raw rows by (group, minute) and applies this aggregation to
161
+ * EVERY row in the bucket, i.e. across both the grouped entities AND the
162
+ * scrapes in that minute. Pick it based on the numerator:
163
+ *
164
+ * - `Sum` when the numerator must be totalled across multiple series per
165
+ * group (e.g. summing every container's request on a node). The scrape
166
+ * multiple then has to cancel, so numerator and denominator must ride
167
+ * the SAME receiver/scrape — true for the request-utilization
168
+ * templates, where both metrics come from `k8s_cluster`:
169
+ * `(Σrequests × scrapes) / (allocatable × scrapes)`.
170
+ *
171
+ * - `Avg` when the numerator is already ONE series per group (e.g.
172
+ * `k8s.node.cpu.usage`). Avg yields the representative per-minute value
173
+ * independent of scrape count, so it stays correct even when numerator
174
+ * and denominator come from DIFFERENT receivers on independent scrape
175
+ * cycles (node usage is from the kubeletstats DaemonSet; allocatable is
176
+ * from the `k8s_cluster` Deployment). `Sum` there would only cancel if
177
+ * both reported the same row count every minute — fragile across
178
+ * restarts / missed scrapes / minute-boundary jitter.
179
+ *
180
+ * The group-by key is the ClickHouse-stored attribute name, which carries
181
+ * the `resource.` prefix for OTel resource attributes (see
182
+ * OtelMetricsIngestService — resource attributes are stamped with
183
+ * `prefixKeysWithString: "resource"`). So node grouping is
184
+ * `resource.k8s.node.name`, not the bare `k8s.node.name`.
185
+ */
186
+ export function buildKubernetesRatioMonitorConfig(args) {
187
+ const aggregationType = args.aggregationType || MetricsAggregationType.Sum;
188
+ const buildQueryConfig = (alias, metricName) => {
189
+ return {
190
+ metricAliasData: {
191
+ metricVariable: alias,
192
+ title: alias,
193
+ description: alias,
194
+ legend: alias,
195
+ legendUnit: undefined,
196
+ },
197
+ metricQueryData: {
198
+ filterData: {
199
+ metricName: metricName,
200
+ attributes: {},
201
+ aggegationType: aggregationType,
202
+ aggregateBy: {},
203
+ },
204
+ groupByAttributeKeys: [args.groupByAttributeKey],
205
+ },
206
+ };
207
+ };
208
+ return {
209
+ clusterIdentifier: args.clusterIdentifier,
210
+ resourceScope: args.resourceScope,
211
+ resourceFilters: {},
212
+ metricViewConfig: {
213
+ queryConfigs: [
214
+ buildQueryConfig(args.numeratorAlias, args.numeratorMetricName),
215
+ buildQueryConfig(args.denominatorAlias, args.denominatorMetricName),
216
+ ],
217
+ formulaConfigs: [
218
+ {
219
+ metricAliasData: {
220
+ metricVariable: args.resultAlias,
221
+ title: args.resultLegend,
222
+ description: args.resultLegend,
223
+ legend: args.resultLegend,
224
+ legendUnit: "%",
225
+ },
226
+ metricFormulaData: {
227
+ metricFormula: `(${args.numeratorAlias} / ${args.denominatorAlias}) * 100`,
228
+ },
229
+ },
230
+ ],
231
+ },
232
+ rollingTime: args.rollingTime,
233
+ };
234
+ }
149
235
  // --- Template Definitions ---
150
236
  const crashLoopBackOffTemplate = {
151
237
  id: "k8s-crashloopbackoff",
@@ -268,18 +354,29 @@ const nodeNotReadyTemplate = {
268
354
  const highCpuTemplate = {
269
355
  id: "k8s-high-cpu",
270
356
  name: "High Node CPU Utilization",
271
- description: "Alert when node CPU utilization exceeds 90% sustained.",
357
+ description: "Alert when a node's average CPU usage exceeds 90% of its allocatable CPU. Computed per node as k8s.node.cpu.usage ÷ k8s.node.allocatable_cpu × 100 — both are cores, so this is a true percentage (the raw k8s.node.cpu.utilization metric is a misnamed cores gauge, not a percent).",
272
358
  category: "Node",
273
359
  severity: "Warning",
274
360
  getMonitorStep: (args) => {
275
- const metricAlias = "node_cpu";
361
+ const metricAlias = "node_cpu_utilization";
276
362
  return buildKubernetesMonitorStep({
277
- kubernetesMonitor: buildKubernetesMonitorConfig({
363
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
278
364
  clusterIdentifier: args.clusterIdentifier,
279
- metricName: "k8s.node.cpu.utilization",
280
- metricAlias,
365
+ numeratorMetricName: "k8s.node.cpu.usage",
366
+ denominatorMetricName: "k8s.node.allocatable_cpu",
367
+ groupByAttributeKey: "resource.k8s.node.name",
368
+ numeratorAlias: "used_cpu",
369
+ denominatorAlias: "alloc_cpu",
370
+ resultAlias: metricAlias,
371
+ resultLegend: "Node CPU Utilization (%)",
281
372
  resourceScope: KubernetesResourceScope.Node,
282
373
  rollingTime: RollingTime.Past5Minutes,
374
+ /*
375
+ * Single series per node from two DIFFERENT receivers (usage =
376
+ * kubeletstats, allocatable = k8s_cluster) — Avg keeps the per-minute
377
+ * ratio correct regardless of each receiver's scrape count. See
378
+ * buildKubernetesRatioMonitorConfig.
379
+ */
283
380
  aggregationType: MetricsAggregationType.Avg,
284
381
  }),
285
382
  offlineCriteriaInstance: buildOfflineCriteriaInstance({
@@ -291,9 +388,9 @@ const highCpuTemplate = {
291
388
  filterType: FilterType.GreaterThan,
292
389
  value: 90,
293
390
  incidentTitle: `[K8s] High CPU Utilization (>90%) - ${args.monitorName}`,
294
- incidentDescription: `Node CPU utilization has exceeded 90% in the Kubernetes cluster. Sustained high CPU usage can cause pod throttling, increased latency, and potential node instability. Check the root cause for the specific node and top CPU-consuming workloads.`,
391
+ incidentDescription: `A node's average CPU usage has exceeded 90% of its allocatable CPU. Sustained high CPU usage can cause pod throttling, increased latency, and potential node instability. Check the root cause for the specific node and top CPU-consuming workloads.`,
295
392
  criteriaName: "High CPU - Utilization > 90%",
296
- criteriaDescription: "Triggers when average node CPU utilization exceeds 90% over the monitoring window.",
393
+ criteriaDescription: "Triggers when a node's average CPU usage exceeds 90% of its allocatable CPU over the monitoring window.",
297
394
  }),
298
395
  onlineCriteriaInstance: buildOnlineCriteriaInstance({
299
396
  onlineMonitorStatusId: args.onlineMonitorStatusId,
@@ -307,18 +404,29 @@ const highCpuTemplate = {
307
404
  const highMemoryTemplate = {
308
405
  id: "k8s-high-memory",
309
406
  name: "High Node Memory Utilization",
310
- description: "Alert when node memory utilization exceeds 85% sustained.",
407
+ description: "Alert when a node's average memory usage exceeds 85% of its allocatable memory. Computed per node as k8s.node.memory.usage ÷ k8s.node.allocatable_memory × 100 — both are bytes, so this is a true percentage (the raw k8s.node.memory.usage metric is bytes, not a percent).",
311
408
  category: "Node",
312
409
  severity: "Warning",
313
410
  getMonitorStep: (args) => {
314
- const metricAlias = "node_memory";
411
+ const metricAlias = "node_memory_utilization";
315
412
  return buildKubernetesMonitorStep({
316
- kubernetesMonitor: buildKubernetesMonitorConfig({
413
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
317
414
  clusterIdentifier: args.clusterIdentifier,
318
- metricName: "k8s.node.memory.usage",
319
- metricAlias,
415
+ numeratorMetricName: "k8s.node.memory.usage",
416
+ denominatorMetricName: "k8s.node.allocatable_memory",
417
+ groupByAttributeKey: "resource.k8s.node.name",
418
+ numeratorAlias: "used_mem",
419
+ denominatorAlias: "alloc_mem",
420
+ resultAlias: metricAlias,
421
+ resultLegend: "Node Memory Utilization (%)",
320
422
  resourceScope: KubernetesResourceScope.Node,
321
423
  rollingTime: RollingTime.Past5Minutes,
424
+ /*
425
+ * Single series per node from two DIFFERENT receivers (usage =
426
+ * kubeletstats, allocatable = k8s_cluster) — Avg keeps the per-minute
427
+ * ratio correct regardless of each receiver's scrape count. See
428
+ * buildKubernetesRatioMonitorConfig.
429
+ */
322
430
  aggregationType: MetricsAggregationType.Avg,
323
431
  }),
324
432
  offlineCriteriaInstance: buildOfflineCriteriaInstance({
@@ -330,9 +438,9 @@ const highMemoryTemplate = {
330
438
  filterType: FilterType.GreaterThan,
331
439
  value: 85,
332
440
  incidentTitle: `[K8s] High Memory Utilization (>85%) - ${args.monitorName}`,
333
- incidentDescription: `Node memory utilization has exceeded 85% in the Kubernetes cluster. High memory usage can lead to OOMKilled pods, node instability, and potential evictions. Check the root cause for the specific node and top memory-consuming workloads.`,
441
+ incidentDescription: `A node's average memory usage has exceeded 85% of its allocatable memory. High memory usage can lead to OOMKilled pods, node instability, and potential evictions. Check the root cause for the specific node and top memory-consuming workloads.`,
334
442
  criteriaName: "High Memory - Utilization > 85%",
335
- criteriaDescription: "Triggers when average node memory utilization exceeds 85% over the monitoring window.",
443
+ criteriaDescription: "Triggers when a node's average memory usage exceeds 85% of its allocatable memory over the monitoring window.",
336
444
  }),
337
445
  onlineCriteriaInstance: buildOnlineCriteriaInstance({
338
446
  onlineMonitorStatusId: args.onlineMonitorStatusId,
@@ -616,6 +724,92 @@ const daemonSetUnavailableTemplate = {
616
724
  });
617
725
  },
618
726
  };
727
+ const nodeCpuRequestUtilizationTemplate = {
728
+ id: "k8s-node-cpu-request-utilization",
729
+ name: "High Node CPU Request Commitment",
730
+ description: "Alert when a node's committed CPU requests exceed 90% of its allocatable CPU. Derived per node from summed container CPU requests over node allocatable CPU — both collected by default via the k8s_cluster receiver. A near-full node can't schedule new pods even if actual CPU usage is low.",
731
+ category: "Node",
732
+ severity: "Warning",
733
+ getMonitorStep: (args) => {
734
+ const metricAlias = "node_cpu_request_utilization";
735
+ return buildKubernetesMonitorStep({
736
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
737
+ clusterIdentifier: args.clusterIdentifier,
738
+ numeratorMetricName: "k8s.container.cpu_request",
739
+ denominatorMetricName: "k8s.node.allocatable_cpu",
740
+ groupByAttributeKey: "resource.k8s.node.name",
741
+ numeratorAlias: "req_cpu",
742
+ denominatorAlias: "alloc_cpu",
743
+ resultAlias: metricAlias,
744
+ resultLegend: "Node CPU Request Utilization (%)",
745
+ resourceScope: KubernetesResourceScope.Node,
746
+ rollingTime: RollingTime.Past5Minutes,
747
+ }),
748
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
749
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
750
+ incidentSeverityId: args.defaultIncidentSeverityId,
751
+ alertSeverityId: args.defaultAlertSeverityId,
752
+ monitorName: args.monitorName,
753
+ metricAlias,
754
+ filterType: FilterType.GreaterThan,
755
+ value: 90,
756
+ incidentTitle: `[K8s] High Node CPU Request Commitment (>90%) - ${args.monitorName}`,
757
+ incidentDescription: `A node's committed CPU requests have exceeded 90% of its allocatable CPU. The node is nearly full from a scheduling standpoint and may be unable to place new pods, even if current CPU usage is low. Check the root cause for the specific node and its top CPU-requesting workloads.`,
758
+ criteriaName: "High CPU Request Commitment - Utilization > 90%",
759
+ criteriaDescription: "Triggers when any node's summed container CPU requests exceed 90% of its allocatable CPU.",
760
+ }),
761
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
762
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
763
+ metricAlias,
764
+ filterType: FilterType.LessThanOrEqualTo,
765
+ value: 90,
766
+ }),
767
+ });
768
+ },
769
+ };
770
+ const nodeMemoryRequestUtilizationTemplate = {
771
+ id: "k8s-node-memory-request-utilization",
772
+ name: "High Node Memory Request Commitment",
773
+ description: "Alert when a node's committed memory requests exceed 90% of its allocatable memory. Derived per node from summed container memory requests over node allocatable memory — both collected by default via the k8s_cluster receiver. A near-full node can't schedule new pods even if actual memory usage is low.",
774
+ category: "Node",
775
+ severity: "Warning",
776
+ getMonitorStep: (args) => {
777
+ const metricAlias = "node_memory_request_utilization";
778
+ return buildKubernetesMonitorStep({
779
+ kubernetesMonitor: buildKubernetesRatioMonitorConfig({
780
+ clusterIdentifier: args.clusterIdentifier,
781
+ numeratorMetricName: "k8s.container.memory_request",
782
+ denominatorMetricName: "k8s.node.allocatable_memory",
783
+ groupByAttributeKey: "resource.k8s.node.name",
784
+ numeratorAlias: "req_mem",
785
+ denominatorAlias: "alloc_mem",
786
+ resultAlias: metricAlias,
787
+ resultLegend: "Node Memory Request Utilization (%)",
788
+ resourceScope: KubernetesResourceScope.Node,
789
+ rollingTime: RollingTime.Past5Minutes,
790
+ }),
791
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
792
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
793
+ incidentSeverityId: args.defaultIncidentSeverityId,
794
+ alertSeverityId: args.defaultAlertSeverityId,
795
+ monitorName: args.monitorName,
796
+ metricAlias,
797
+ filterType: FilterType.GreaterThan,
798
+ value: 90,
799
+ incidentTitle: `[K8s] High Node Memory Request Commitment (>90%) - ${args.monitorName}`,
800
+ incidentDescription: `A node's committed memory requests have exceeded 90% of its allocatable memory. The node is nearly full from a scheduling standpoint and may be unable to place new pods, even if current memory usage is low. Check the root cause for the specific node and its top memory-requesting workloads.`,
801
+ criteriaName: "High Memory Request Commitment - Utilization > 90%",
802
+ criteriaDescription: "Triggers when any node's summed container memory requests exceed 90% of its allocatable memory.",
803
+ }),
804
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
805
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
806
+ metricAlias,
807
+ filterType: FilterType.LessThanOrEqualTo,
808
+ value: 90,
809
+ }),
810
+ });
811
+ },
812
+ };
619
813
  export function getAllKubernetesAlertTemplates() {
620
814
  return [
621
815
  crashLoopBackOffTemplate,
@@ -630,6 +824,8 @@ export function getAllKubernetesAlertTemplates() {
630
824
  schedulerBacklogTemplate,
631
825
  highDiskUsageTemplate,
632
826
  daemonSetUnavailableTemplate,
827
+ nodeCpuRequestUtilizationTemplate,
828
+ nodeMemoryRequestUtilizationTemplate,
633
829
  ];
634
830
  }
635
831
  export function getKubernetesAlertTemplatesByCategory(category) {
@@ -1 +1 @@
1
- {"version":3,"file":"KubernetesAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/KubernetesAlertTemplates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KubernetesAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/KubernetesAlertTemplates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "10.7.0",
3
+ "version": "10.7.2",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",