@oneuptime/common 10.0.34 → 10.0.36

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.
Files changed (130) hide show
  1. package/Models/DatabaseModels/Index.ts +3 -0
  2. package/Models/DatabaseModels/KubernetesCluster.ts +640 -0
  3. package/Server/API/IPWhitelistAPI.ts +31 -0
  4. package/Server/API/Index.ts +2 -0
  5. package/Server/EnvironmentConfig.ts +2 -0
  6. package/Server/Infrastructure/Postgres/SchemaMigrations/1774000000000-MigrationName.ts +80 -0
  7. package/Server/Infrastructure/Postgres/SchemaMigrations/1774000000001-MigrationName.ts +137 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  9. package/Server/Services/KubernetesClusterService.ts +109 -0
  10. package/Server/Services/UserService.ts +6 -0
  11. package/Server/Services/UserSessionService.ts +23 -0
  12. package/Server/Types/Markdown.ts +11 -3
  13. package/Server/Utils/Express.ts +0 -6
  14. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +4 -1
  15. package/Server/Utils/StartServer.ts +7 -3
  16. package/Server/Utils/VM/VMRunner.ts +3 -0
  17. package/Types/Code/CodeType.ts +1 -1
  18. package/Types/Icon/IconProp.ts +1 -0
  19. package/Types/Metrics/MetricQueryConfigData.ts +1 -0
  20. package/Types/Monitor/CriteriaFilter.ts +19 -0
  21. package/Types/Monitor/KubernetesAlertTemplates.ts +703 -0
  22. package/Types/Monitor/KubernetesMetricCatalog.ts +347 -0
  23. package/Types/Monitor/MonitorCriteriaInstance.ts +86 -0
  24. package/Types/Monitor/MonitorStep.ts +36 -1
  25. package/Types/Monitor/MonitorStepKubernetesMonitor.ts +50 -0
  26. package/Types/Monitor/MonitorType.ts +14 -10
  27. package/Types/Permission.ts +42 -0
  28. package/UI/Components/AlertBanner/AlertBanner.tsx +69 -0
  29. package/UI/Components/ConditionsTable/ConditionsTable.tsx +149 -0
  30. package/UI/Components/Dictionary/DictionaryOfStingsViewer.tsx +35 -15
  31. package/UI/Components/ExpandableText/ExpandableText.tsx +42 -0
  32. package/UI/Components/FilterButtons/FilterButtons.tsx +60 -0
  33. package/UI/Components/Icon/Icon.tsx +51 -0
  34. package/UI/Components/LogsViewer/LogsViewer.tsx +2 -0
  35. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +25 -0
  36. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +4 -1
  37. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +85 -53
  38. package/UI/Components/Navbar/NavBarMenu.tsx +2 -2
  39. package/UI/Components/ResourceUsageBar/ResourceUsageBar.tsx +58 -0
  40. package/UI/Components/StackedProgressBar/StackedProgressBar.tsx +81 -0
  41. package/UI/Components/StatusBadge/StatusBadge.tsx +44 -0
  42. package/UI/Components/Tabs/Tabs.tsx +36 -8
  43. package/UI/Utils/Dropdown.ts +2 -1
  44. package/Utils/Traces/CriticalPath.ts +348 -0
  45. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  46. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  47. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +661 -0
  48. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -0
  49. package/build/dist/Server/API/IPWhitelistAPI.js +24 -0
  50. package/build/dist/Server/API/IPWhitelistAPI.js.map +1 -0
  51. package/build/dist/Server/API/Index.js +2 -0
  52. package/build/dist/Server/API/Index.js.map +1 -1
  53. package/build/dist/Server/EnvironmentConfig.js +1 -0
  54. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000000-MigrationName.js +35 -0
  56. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000000-MigrationName.js.map +1 -0
  57. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000001-MigrationName.js +52 -0
  58. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774000000001-MigrationName.js.map +1 -0
  59. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  61. package/build/dist/Server/Services/KubernetesClusterService.js +117 -0
  62. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -0
  63. package/build/dist/Server/Services/UserService.js +5 -0
  64. package/build/dist/Server/Services/UserService.js.map +1 -1
  65. package/build/dist/Server/Services/UserSessionService.js +20 -0
  66. package/build/dist/Server/Services/UserSessionService.js.map +1 -1
  67. package/build/dist/Server/Types/Markdown.js +10 -2
  68. package/build/dist/Server/Types/Markdown.js.map +1 -1
  69. package/build/dist/Server/Utils/Express.js +1 -42
  70. package/build/dist/Server/Utils/Express.js.map +1 -1
  71. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +2 -1
  72. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  73. package/build/dist/Server/Utils/StartServer.js +4 -3
  74. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  75. package/build/dist/Server/Utils/VM/VMRunner.js +3 -0
  76. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  77. package/build/dist/Types/Code/CodeType.js +1 -1
  78. package/build/dist/Types/Code/CodeType.js.map +1 -1
  79. package/build/dist/Types/Icon/IconProp.js +1 -0
  80. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  81. package/build/dist/Types/Monitor/CriteriaFilter.js +18 -0
  82. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  83. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +594 -0
  84. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -0
  85. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +311 -0
  86. package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -0
  87. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +78 -0
  88. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  89. package/build/dist/Types/Monitor/MonitorStep.js +24 -1
  90. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  91. package/build/dist/Types/Monitor/MonitorStepKubernetesMonitor.js +30 -0
  92. package/build/dist/Types/Monitor/MonitorStepKubernetesMonitor.js.map +1 -0
  93. package/build/dist/Types/Monitor/MonitorType.js +13 -10
  94. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  95. package/build/dist/Types/Permission.js +36 -0
  96. package/build/dist/Types/Permission.js.map +1 -1
  97. package/build/dist/UI/Components/AlertBanner/AlertBanner.js +42 -0
  98. package/build/dist/UI/Components/AlertBanner/AlertBanner.js.map +1 -0
  99. package/build/dist/UI/Components/ConditionsTable/ConditionsTable.js +83 -0
  100. package/build/dist/UI/Components/ConditionsTable/ConditionsTable.js.map +1 -0
  101. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js +14 -8
  102. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js.map +1 -1
  103. package/build/dist/UI/Components/ExpandableText/ExpandableText.js +19 -0
  104. package/build/dist/UI/Components/ExpandableText/ExpandableText.js.map +1 -0
  105. package/build/dist/UI/Components/FilterButtons/FilterButtons.js +17 -0
  106. package/build/dist/UI/Components/FilterButtons/FilterButtons.js.map +1 -0
  107. package/build/dist/UI/Components/Icon/Icon.js +27 -0
  108. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  109. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +1 -1
  110. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  111. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +4 -0
  112. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  113. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +3 -1
  114. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  115. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +50 -43
  116. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  117. package/build/dist/UI/Components/Navbar/NavBarMenu.js +2 -2
  118. package/build/dist/UI/Components/ResourceUsageBar/ResourceUsageBar.js +23 -0
  119. package/build/dist/UI/Components/ResourceUsageBar/ResourceUsageBar.js.map +1 -0
  120. package/build/dist/UI/Components/StackedProgressBar/StackedProgressBar.js +34 -0
  121. package/build/dist/UI/Components/StackedProgressBar/StackedProgressBar.js.map +1 -0
  122. package/build/dist/UI/Components/StatusBadge/StatusBadge.js +22 -0
  123. package/build/dist/UI/Components/StatusBadge/StatusBadge.js.map +1 -0
  124. package/build/dist/UI/Components/Tabs/Tabs.js +32 -9
  125. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  126. package/build/dist/UI/Utils/Dropdown.js +2 -1
  127. package/build/dist/UI/Utils/Dropdown.js.map +1 -1
  128. package/build/dist/Utils/Traces/CriticalPath.js +240 -0
  129. package/build/dist/Utils/Traces/CriticalPath.js.map +1 -0
  130. package/package.json +1 -1
@@ -0,0 +1,594 @@
1
+ import ObjectID from "../ObjectID";
2
+ import MonitorStep from "./MonitorStep";
3
+ import MonitorCriteria from "./MonitorCriteria";
4
+ import MonitorCriteriaInstance from "./MonitorCriteriaInstance";
5
+ import FilterCondition from "../Filter/FilterCondition";
6
+ import { CheckOn, FilterType, EvaluateOverTimeType } from "./CriteriaFilter";
7
+ import { KubernetesResourceScope, } from "./MonitorStepKubernetesMonitor";
8
+ import RollingTime from "../RollingTime/RollingTime";
9
+ import MetricsAggregationType from "../Metrics/MetricsAggregationType";
10
+ export function buildKubernetesMonitorStep(args) {
11
+ const monitorStep = new MonitorStep();
12
+ const monitorCriteria = new MonitorCriteria();
13
+ monitorCriteria.data = {
14
+ monitorCriteriaInstanceArray: [
15
+ args.offlineCriteriaInstance,
16
+ args.onlineCriteriaInstance,
17
+ ],
18
+ };
19
+ monitorStep.data = {
20
+ id: ObjectID.generate().toString(),
21
+ monitorDestination: undefined,
22
+ doNotFollowRedirects: undefined,
23
+ monitorDestinationPort: undefined,
24
+ monitorCriteria: monitorCriteria,
25
+ requestType: "GET",
26
+ requestHeaders: undefined,
27
+ requestBody: undefined,
28
+ customCode: undefined,
29
+ screenSizeTypes: undefined,
30
+ browserTypes: undefined,
31
+ retryCountOnError: undefined,
32
+ logMonitor: undefined,
33
+ traceMonitor: undefined,
34
+ metricMonitor: undefined,
35
+ exceptionMonitor: undefined,
36
+ snmpMonitor: undefined,
37
+ dnsMonitor: undefined,
38
+ domainMonitor: undefined,
39
+ externalStatusPageMonitor: undefined,
40
+ kubernetesMonitor: args.kubernetesMonitor,
41
+ };
42
+ return monitorStep;
43
+ }
44
+ export function buildOfflineCriteriaInstance(args) {
45
+ const instance = new MonitorCriteriaInstance();
46
+ instance.data = {
47
+ id: ObjectID.generate().toString(),
48
+ monitorStatusId: args.offlineMonitorStatusId,
49
+ filterCondition: FilterCondition.Any,
50
+ filters: [
51
+ {
52
+ checkOn: CheckOn.MetricValue,
53
+ filterType: args.filterType,
54
+ metricMonitorOptions: {
55
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
56
+ metricAlias: args.metricAlias,
57
+ },
58
+ value: args.value,
59
+ },
60
+ ],
61
+ incidents: [
62
+ {
63
+ title: `${args.monitorName} - Alert Triggered`,
64
+ description: `${args.monitorName} has triggered an alert condition.`,
65
+ incidentSeverityId: args.incidentSeverityId,
66
+ autoResolveIncident: true,
67
+ id: ObjectID.generate().toString(),
68
+ onCallPolicyIds: [],
69
+ },
70
+ ],
71
+ alerts: [
72
+ {
73
+ title: `${args.monitorName} - Alert`,
74
+ description: `${args.monitorName} has triggered an alert condition.`,
75
+ alertSeverityId: args.alertSeverityId,
76
+ autoResolveAlert: true,
77
+ id: ObjectID.generate().toString(),
78
+ onCallPolicyIds: [],
79
+ },
80
+ ],
81
+ changeMonitorStatus: true,
82
+ createIncidents: true,
83
+ createAlerts: true,
84
+ name: `${args.monitorName} - Unhealthy`,
85
+ description: `Criteria for detecting unhealthy state.`,
86
+ };
87
+ return instance;
88
+ }
89
+ export function buildOnlineCriteriaInstance(args) {
90
+ const instance = new MonitorCriteriaInstance();
91
+ instance.data = {
92
+ id: ObjectID.generate().toString(),
93
+ monitorStatusId: args.onlineMonitorStatusId,
94
+ filterCondition: FilterCondition.Any,
95
+ filters: [
96
+ {
97
+ checkOn: CheckOn.MetricValue,
98
+ filterType: args.filterType,
99
+ metricMonitorOptions: {
100
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
101
+ metricAlias: args.metricAlias,
102
+ },
103
+ value: args.value,
104
+ },
105
+ ],
106
+ incidents: [],
107
+ alerts: [],
108
+ changeMonitorStatus: true,
109
+ createIncidents: false,
110
+ createAlerts: false,
111
+ name: "Healthy",
112
+ description: "Criteria for healthy state.",
113
+ };
114
+ return instance;
115
+ }
116
+ export function buildKubernetesMonitorConfig(args) {
117
+ return {
118
+ clusterIdentifier: args.clusterIdentifier,
119
+ resourceScope: args.resourceScope,
120
+ resourceFilters: {},
121
+ metricViewConfig: {
122
+ queryConfigs: [
123
+ {
124
+ metricAliasData: {
125
+ metricVariable: args.metricAlias,
126
+ title: args.metricAlias,
127
+ description: args.metricAlias,
128
+ legend: args.metricAlias,
129
+ legendUnit: undefined,
130
+ },
131
+ metricQueryData: {
132
+ filterData: {
133
+ metricName: args.metricName,
134
+ attributes: args.attributes || {},
135
+ aggegationType: args.aggregationType,
136
+ aggregateBy: {},
137
+ },
138
+ },
139
+ },
140
+ ],
141
+ formulaConfigs: [],
142
+ },
143
+ rollingTime: args.rollingTime,
144
+ };
145
+ }
146
+ // --- Template Definitions ---
147
+ const crashLoopBackOffTemplate = {
148
+ id: "k8s-crashloopbackoff",
149
+ name: "CrashLoopBackOff Detection",
150
+ description: "Alert when container restart count exceeds threshold, indicating a CrashLoopBackOff condition.",
151
+ category: "Workload",
152
+ severity: "Critical",
153
+ getMonitorStep: (args) => {
154
+ const metricAlias = "container_restarts";
155
+ return buildKubernetesMonitorStep({
156
+ kubernetesMonitor: buildKubernetesMonitorConfig({
157
+ clusterIdentifier: args.clusterIdentifier,
158
+ metricName: "k8s.container.restarts",
159
+ metricAlias,
160
+ resourceScope: KubernetesResourceScope.Cluster,
161
+ rollingTime: RollingTime.Past5Minutes,
162
+ aggregationType: MetricsAggregationType.Max,
163
+ }),
164
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
165
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
166
+ incidentSeverityId: args.defaultIncidentSeverityId,
167
+ alertSeverityId: args.defaultAlertSeverityId,
168
+ monitorName: args.monitorName,
169
+ metricAlias,
170
+ filterType: FilterType.GreaterThan,
171
+ value: 5,
172
+ }),
173
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
174
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
175
+ metricAlias,
176
+ filterType: FilterType.LessThanOrEqualTo,
177
+ value: 5,
178
+ }),
179
+ });
180
+ },
181
+ };
182
+ const podPendingTemplate = {
183
+ id: "k8s-pod-pending",
184
+ name: "Pod Stuck in Pending",
185
+ description: "Alert when pods remain in Pending phase, indicating scheduling or resource issues.",
186
+ category: "Scheduling",
187
+ severity: "Warning",
188
+ getMonitorStep: (args) => {
189
+ const metricAlias = "pending_pods";
190
+ return buildKubernetesMonitorStep({
191
+ kubernetesMonitor: buildKubernetesMonitorConfig({
192
+ clusterIdentifier: args.clusterIdentifier,
193
+ metricName: "k8s.pod.phase",
194
+ metricAlias,
195
+ resourceScope: KubernetesResourceScope.Cluster,
196
+ rollingTime: RollingTime.Past5Minutes,
197
+ aggregationType: MetricsAggregationType.Sum,
198
+ attributes: { "k8s.pod.phase": "Pending" },
199
+ }),
200
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
201
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
202
+ incidentSeverityId: args.defaultIncidentSeverityId,
203
+ alertSeverityId: args.defaultAlertSeverityId,
204
+ monitorName: args.monitorName,
205
+ metricAlias,
206
+ filterType: FilterType.GreaterThan,
207
+ value: 0,
208
+ }),
209
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
210
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
211
+ metricAlias,
212
+ filterType: FilterType.EqualTo,
213
+ value: 0,
214
+ }),
215
+ });
216
+ },
217
+ };
218
+ const nodeNotReadyTemplate = {
219
+ id: "k8s-node-not-ready",
220
+ name: "Node Not Ready",
221
+ description: "Alert when a node condition transitions to NotReady, indicating node health issues.",
222
+ category: "Node",
223
+ severity: "Critical",
224
+ getMonitorStep: (args) => {
225
+ const metricAlias = "node_ready";
226
+ return buildKubernetesMonitorStep({
227
+ kubernetesMonitor: buildKubernetesMonitorConfig({
228
+ clusterIdentifier: args.clusterIdentifier,
229
+ metricName: "k8s.node.condition_ready",
230
+ metricAlias,
231
+ resourceScope: KubernetesResourceScope.Node,
232
+ rollingTime: RollingTime.Past5Minutes,
233
+ aggregationType: MetricsAggregationType.Min,
234
+ }),
235
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
236
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
237
+ incidentSeverityId: args.defaultIncidentSeverityId,
238
+ alertSeverityId: args.defaultAlertSeverityId,
239
+ monitorName: args.monitorName,
240
+ metricAlias,
241
+ filterType: FilterType.EqualTo,
242
+ value: 0,
243
+ }),
244
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
245
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
246
+ metricAlias,
247
+ filterType: FilterType.GreaterThan,
248
+ value: 0,
249
+ }),
250
+ });
251
+ },
252
+ };
253
+ const highCpuTemplate = {
254
+ id: "k8s-high-cpu",
255
+ name: "High Node CPU Utilization",
256
+ description: "Alert when node CPU utilization exceeds 90% sustained.",
257
+ category: "Node",
258
+ severity: "Warning",
259
+ getMonitorStep: (args) => {
260
+ const metricAlias = "node_cpu";
261
+ return buildKubernetesMonitorStep({
262
+ kubernetesMonitor: buildKubernetesMonitorConfig({
263
+ clusterIdentifier: args.clusterIdentifier,
264
+ metricName: "k8s.node.cpu.utilization",
265
+ metricAlias,
266
+ resourceScope: KubernetesResourceScope.Node,
267
+ rollingTime: RollingTime.Past5Minutes,
268
+ aggregationType: MetricsAggregationType.Avg,
269
+ }),
270
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
271
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
272
+ incidentSeverityId: args.defaultIncidentSeverityId,
273
+ alertSeverityId: args.defaultAlertSeverityId,
274
+ monitorName: args.monitorName,
275
+ metricAlias,
276
+ filterType: FilterType.GreaterThan,
277
+ value: 90,
278
+ }),
279
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
280
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
281
+ metricAlias,
282
+ filterType: FilterType.LessThanOrEqualTo,
283
+ value: 90,
284
+ }),
285
+ });
286
+ },
287
+ };
288
+ const highMemoryTemplate = {
289
+ id: "k8s-high-memory",
290
+ name: "High Node Memory Utilization",
291
+ description: "Alert when node memory utilization exceeds 85% sustained.",
292
+ category: "Node",
293
+ severity: "Warning",
294
+ getMonitorStep: (args) => {
295
+ const metricAlias = "node_memory";
296
+ return buildKubernetesMonitorStep({
297
+ kubernetesMonitor: buildKubernetesMonitorConfig({
298
+ clusterIdentifier: args.clusterIdentifier,
299
+ metricName: "k8s.node.memory.usage",
300
+ metricAlias,
301
+ resourceScope: KubernetesResourceScope.Node,
302
+ rollingTime: RollingTime.Past5Minutes,
303
+ aggregationType: MetricsAggregationType.Avg,
304
+ }),
305
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
306
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
307
+ incidentSeverityId: args.defaultIncidentSeverityId,
308
+ alertSeverityId: args.defaultAlertSeverityId,
309
+ monitorName: args.monitorName,
310
+ metricAlias,
311
+ filterType: FilterType.GreaterThan,
312
+ value: 85,
313
+ }),
314
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
315
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
316
+ metricAlias,
317
+ filterType: FilterType.LessThanOrEqualTo,
318
+ value: 85,
319
+ }),
320
+ });
321
+ },
322
+ };
323
+ const deploymentReplicaMismatchTemplate = {
324
+ id: "k8s-deployment-replica-mismatch",
325
+ name: "Deployment Replica Mismatch",
326
+ description: "Alert when available replicas are less than desired replicas for a deployment.",
327
+ category: "Workload",
328
+ severity: "Warning",
329
+ getMonitorStep: (args) => {
330
+ const metricAlias = "unavailable_replicas";
331
+ return buildKubernetesMonitorStep({
332
+ kubernetesMonitor: buildKubernetesMonitorConfig({
333
+ clusterIdentifier: args.clusterIdentifier,
334
+ metricName: "k8s.deployment.unavailable_replicas",
335
+ metricAlias,
336
+ resourceScope: KubernetesResourceScope.Workload,
337
+ rollingTime: RollingTime.Past5Minutes,
338
+ aggregationType: MetricsAggregationType.Max,
339
+ }),
340
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
341
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
342
+ incidentSeverityId: args.defaultIncidentSeverityId,
343
+ alertSeverityId: args.defaultAlertSeverityId,
344
+ monitorName: args.monitorName,
345
+ metricAlias,
346
+ filterType: FilterType.GreaterThan,
347
+ value: 0,
348
+ }),
349
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
350
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
351
+ metricAlias,
352
+ filterType: FilterType.EqualTo,
353
+ value: 0,
354
+ }),
355
+ });
356
+ },
357
+ };
358
+ const jobFailuresTemplate = {
359
+ id: "k8s-job-failures",
360
+ name: "Job Failures",
361
+ description: "Alert when Kubernetes jobs fail.",
362
+ category: "Workload",
363
+ severity: "Warning",
364
+ getMonitorStep: (args) => {
365
+ const metricAlias = "failed_pods";
366
+ return buildKubernetesMonitorStep({
367
+ kubernetesMonitor: buildKubernetesMonitorConfig({
368
+ clusterIdentifier: args.clusterIdentifier,
369
+ metricName: "k8s.job.failed_pods",
370
+ metricAlias,
371
+ resourceScope: KubernetesResourceScope.Workload,
372
+ rollingTime: RollingTime.Past5Minutes,
373
+ aggregationType: MetricsAggregationType.Max,
374
+ }),
375
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
376
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
377
+ incidentSeverityId: args.defaultIncidentSeverityId,
378
+ alertSeverityId: args.defaultAlertSeverityId,
379
+ monitorName: args.monitorName,
380
+ metricAlias,
381
+ filterType: FilterType.GreaterThan,
382
+ value: 0,
383
+ }),
384
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
385
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
386
+ metricAlias,
387
+ filterType: FilterType.EqualTo,
388
+ value: 0,
389
+ }),
390
+ });
391
+ },
392
+ };
393
+ const etcdNoLeaderTemplate = {
394
+ id: "k8s-etcd-no-leader",
395
+ name: "etcd No Leader",
396
+ description: "Alert immediately when etcd has no leader elected. This is a critical cluster health issue.",
397
+ category: "ControlPlane",
398
+ severity: "Critical",
399
+ getMonitorStep: (args) => {
400
+ const metricAlias = "etcd_has_leader";
401
+ return buildKubernetesMonitorStep({
402
+ kubernetesMonitor: buildKubernetesMonitorConfig({
403
+ clusterIdentifier: args.clusterIdentifier,
404
+ metricName: "etcd_server_has_leader",
405
+ metricAlias,
406
+ resourceScope: KubernetesResourceScope.Cluster,
407
+ rollingTime: RollingTime.Past1Minute,
408
+ aggregationType: MetricsAggregationType.Min,
409
+ }),
410
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
411
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
412
+ incidentSeverityId: args.defaultIncidentSeverityId,
413
+ alertSeverityId: args.defaultAlertSeverityId,
414
+ monitorName: args.monitorName,
415
+ metricAlias,
416
+ filterType: FilterType.EqualTo,
417
+ value: 0,
418
+ }),
419
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
420
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
421
+ metricAlias,
422
+ filterType: FilterType.GreaterThan,
423
+ value: 0,
424
+ }),
425
+ });
426
+ },
427
+ };
428
+ const apiServerThrottlingTemplate = {
429
+ id: "k8s-apiserver-throttling",
430
+ name: "API Server Throttling",
431
+ description: "Alert when the Kubernetes API server is dropping requests due to throttling.",
432
+ category: "ControlPlane",
433
+ severity: "Critical",
434
+ getMonitorStep: (args) => {
435
+ const metricAlias = "dropped_requests";
436
+ return buildKubernetesMonitorStep({
437
+ kubernetesMonitor: buildKubernetesMonitorConfig({
438
+ clusterIdentifier: args.clusterIdentifier,
439
+ metricName: "apiserver_dropped_requests_total",
440
+ metricAlias,
441
+ resourceScope: KubernetesResourceScope.Cluster,
442
+ rollingTime: RollingTime.Past5Minutes,
443
+ aggregationType: MetricsAggregationType.Sum,
444
+ }),
445
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
446
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
447
+ incidentSeverityId: args.defaultIncidentSeverityId,
448
+ alertSeverityId: args.defaultAlertSeverityId,
449
+ monitorName: args.monitorName,
450
+ metricAlias,
451
+ filterType: FilterType.GreaterThan,
452
+ value: 0,
453
+ }),
454
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
455
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
456
+ metricAlias,
457
+ filterType: FilterType.EqualTo,
458
+ value: 0,
459
+ }),
460
+ });
461
+ },
462
+ };
463
+ const schedulerBacklogTemplate = {
464
+ id: "k8s-scheduler-backlog",
465
+ name: "Scheduler Backlog",
466
+ description: "Alert when there are pods waiting to be scheduled for more than 5 minutes.",
467
+ category: "Scheduling",
468
+ severity: "Warning",
469
+ getMonitorStep: (args) => {
470
+ const metricAlias = "pending_pods";
471
+ return buildKubernetesMonitorStep({
472
+ kubernetesMonitor: buildKubernetesMonitorConfig({
473
+ clusterIdentifier: args.clusterIdentifier,
474
+ metricName: "scheduler_pending_pods",
475
+ metricAlias,
476
+ resourceScope: KubernetesResourceScope.Cluster,
477
+ rollingTime: RollingTime.Past5Minutes,
478
+ aggregationType: MetricsAggregationType.Avg,
479
+ }),
480
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
481
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
482
+ incidentSeverityId: args.defaultIncidentSeverityId,
483
+ alertSeverityId: args.defaultAlertSeverityId,
484
+ monitorName: args.monitorName,
485
+ metricAlias,
486
+ filterType: FilterType.GreaterThan,
487
+ value: 0,
488
+ }),
489
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
490
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
491
+ metricAlias,
492
+ filterType: FilterType.EqualTo,
493
+ value: 0,
494
+ }),
495
+ });
496
+ },
497
+ };
498
+ const highDiskUsageTemplate = {
499
+ id: "k8s-high-disk-usage",
500
+ name: "High Node Disk Usage",
501
+ description: "Alert when node filesystem usage exceeds 90% capacity.",
502
+ category: "Storage",
503
+ severity: "Warning",
504
+ getMonitorStep: (args) => {
505
+ const metricAlias = "disk_usage";
506
+ return buildKubernetesMonitorStep({
507
+ kubernetesMonitor: buildKubernetesMonitorConfig({
508
+ clusterIdentifier: args.clusterIdentifier,
509
+ metricName: "k8s.node.filesystem.usage",
510
+ metricAlias,
511
+ resourceScope: KubernetesResourceScope.Node,
512
+ rollingTime: RollingTime.Past5Minutes,
513
+ aggregationType: MetricsAggregationType.Avg,
514
+ }),
515
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
516
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
517
+ incidentSeverityId: args.defaultIncidentSeverityId,
518
+ alertSeverityId: args.defaultAlertSeverityId,
519
+ monitorName: args.monitorName,
520
+ metricAlias,
521
+ filterType: FilterType.GreaterThan,
522
+ value: 90,
523
+ }),
524
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
525
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
526
+ metricAlias,
527
+ filterType: FilterType.LessThanOrEqualTo,
528
+ value: 90,
529
+ }),
530
+ });
531
+ },
532
+ };
533
+ const daemonSetUnavailableTemplate = {
534
+ id: "k8s-daemonset-unavailable",
535
+ name: "DaemonSet Unavailable Nodes",
536
+ description: "Alert when a DaemonSet has unavailable nodes where the daemon pod should be running.",
537
+ category: "Workload",
538
+ severity: "Warning",
539
+ getMonitorStep: (args) => {
540
+ const metricAlias = "unavailable_nodes";
541
+ return buildKubernetesMonitorStep({
542
+ kubernetesMonitor: buildKubernetesMonitorConfig({
543
+ clusterIdentifier: args.clusterIdentifier,
544
+ metricName: "k8s.daemonset.misscheduled_nodes",
545
+ metricAlias,
546
+ resourceScope: KubernetesResourceScope.Workload,
547
+ rollingTime: RollingTime.Past5Minutes,
548
+ aggregationType: MetricsAggregationType.Max,
549
+ }),
550
+ offlineCriteriaInstance: buildOfflineCriteriaInstance({
551
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
552
+ incidentSeverityId: args.defaultIncidentSeverityId,
553
+ alertSeverityId: args.defaultAlertSeverityId,
554
+ monitorName: args.monitorName,
555
+ metricAlias,
556
+ filterType: FilterType.GreaterThan,
557
+ value: 0,
558
+ }),
559
+ onlineCriteriaInstance: buildOnlineCriteriaInstance({
560
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
561
+ metricAlias,
562
+ filterType: FilterType.EqualTo,
563
+ value: 0,
564
+ }),
565
+ });
566
+ },
567
+ };
568
+ export function getAllKubernetesAlertTemplates() {
569
+ return [
570
+ crashLoopBackOffTemplate,
571
+ podPendingTemplate,
572
+ nodeNotReadyTemplate,
573
+ highCpuTemplate,
574
+ highMemoryTemplate,
575
+ deploymentReplicaMismatchTemplate,
576
+ jobFailuresTemplate,
577
+ etcdNoLeaderTemplate,
578
+ apiServerThrottlingTemplate,
579
+ schedulerBacklogTemplate,
580
+ highDiskUsageTemplate,
581
+ daemonSetUnavailableTemplate,
582
+ ];
583
+ }
584
+ export function getKubernetesAlertTemplatesByCategory(category) {
585
+ return getAllKubernetesAlertTemplates().filter((template) => {
586
+ return template.category === category;
587
+ });
588
+ }
589
+ export function getKubernetesAlertTemplateById(id) {
590
+ return getAllKubernetesAlertTemplates().find((template) => {
591
+ return template.id === id;
592
+ });
593
+ }
594
+ //# sourceMappingURL=KubernetesAlertTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KubernetesAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/KubernetesAlertTemplates.ts"],"names":[],"mappings":"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"}