@oneuptime/common 8.0.5516 → 8.0.5544

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 (80) hide show
  1. package/Models/DatabaseModels/AcmeChallenge.ts +3 -0
  2. package/Models/DatabaseModels/Domain.ts +6 -1
  3. package/Server/API/AcmeChallengeAPI.ts +64 -0
  4. package/Server/EnvironmentConfig.ts +54 -0
  5. package/Server/Infrastructure/Queue.ts +12 -16
  6. package/Server/Infrastructure/QueueWorker.ts +2 -6
  7. package/Server/Services/DomainService.ts +48 -40
  8. package/Server/Utils/AnalyticsDatabase/Statement.ts +8 -4
  9. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +47 -15
  10. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +13 -12
  11. package/Server/Utils/Monitor/MonitorAlert.ts +46 -1
  12. package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +208 -0
  13. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +439 -0
  14. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +141 -0
  15. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +88 -0
  16. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +196 -0
  17. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +1123 -0
  18. package/Server/Utils/Monitor/MonitorIncident.ts +46 -1
  19. package/Server/Utils/Monitor/MonitorLogUtil.ts +44 -0
  20. package/Server/Utils/Monitor/MonitorMetricUtil.ts +482 -0
  21. package/Server/Utils/Monitor/MonitorResource.ts +185 -914
  22. package/Server/Utils/StartServer.ts +14 -6
  23. package/Types/Email.ts +3 -7
  24. package/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts +2 -0
  25. package/Types/Monitor/LogMonitor/LogMonitorResponse.ts +2 -0
  26. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +2 -0
  27. package/Types/Monitor/MonitorEvaluationSummary.ts +48 -0
  28. package/Types/Monitor/ServerMonitor/ServerMonitorResponse.ts +2 -0
  29. package/Types/Monitor/TraceMonitor/TraceMonitorResponse.ts +2 -0
  30. package/Types/Probe/ProbeApiIngestResponse.ts +2 -0
  31. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  32. package/build/dist/Models/DatabaseModels/AcmeChallenge.js +3 -0
  33. package/build/dist/Models/DatabaseModels/AcmeChallenge.js.map +1 -1
  34. package/build/dist/Models/DatabaseModels/Domain.js +6 -1
  35. package/build/dist/Models/DatabaseModels/Domain.js.map +1 -1
  36. package/build/dist/Server/API/AcmeChallengeAPI.js +39 -0
  37. package/build/dist/Server/API/AcmeChallengeAPI.js.map +1 -0
  38. package/build/dist/Server/EnvironmentConfig.js +44 -0
  39. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  40. package/build/dist/Server/Infrastructure/Queue.js +8 -11
  41. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  42. package/build/dist/Server/Infrastructure/QueueWorker.js +2 -6
  43. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  44. package/build/dist/Server/Services/DomainService.js +31 -29
  45. package/build/dist/Server/Services/DomainService.js.map +1 -1
  46. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +2 -1
  47. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  48. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +34 -16
  49. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  50. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +12 -12
  51. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
  52. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +42 -4
  53. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  54. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +119 -0
  55. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -0
  56. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +312 -0
  57. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -0
  58. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +109 -0
  59. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -0
  60. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +45 -0
  61. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -0
  62. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +132 -0
  63. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -0
  64. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +583 -0
  65. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -0
  66. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +42 -4
  67. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  68. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +32 -0
  69. package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -0
  70. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +361 -0
  71. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -0
  72. package/build/dist/Server/Utils/Monitor/MonitorResource.js +133 -666
  73. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  74. package/build/dist/Server/Utils/StartServer.js +7 -4
  75. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  76. package/build/dist/Types/Email.js +2 -5
  77. package/build/dist/Types/Email.js.map +1 -1
  78. package/build/dist/Types/Monitor/MonitorEvaluationSummary.js +2 -0
  79. package/build/dist/Types/Monitor/MonitorEvaluationSummary.js.map +1 -0
  80. package/package.json +5 -5
@@ -0,0 +1,583 @@
1
+ import logger from "../Logger";
2
+ import OneUptimeDate from "../../../Types/Date";
3
+ import { CheckOn } from "../../../Types/Monitor/CriteriaFilter";
4
+ import Typeof from "../../../Types/Typeof";
5
+ import MonitorCriteriaMessageFormatter from "./MonitorCriteriaMessageFormatter";
6
+ import MonitorCriteriaDataExtractor from "./MonitorCriteriaDataExtractor";
7
+ import MonitorCriteriaExpectationBuilder from "./MonitorCriteriaExpectationBuilder";
8
+ export default class MonitorCriteriaObservationBuilder {
9
+ static describeFilterObservation(input) {
10
+ const { criteriaFilter } = input;
11
+ switch (criteriaFilter.checkOn) {
12
+ case CheckOn.ResponseTime:
13
+ return MonitorCriteriaObservationBuilder.describeResponseTimeObservation(input);
14
+ case CheckOn.ResponseStatusCode:
15
+ return MonitorCriteriaObservationBuilder.describeResponseStatusCodeObservation(input);
16
+ case CheckOn.ResponseHeader:
17
+ return MonitorCriteriaObservationBuilder.describeResponseHeaderObservation(input);
18
+ case CheckOn.ResponseHeaderValue:
19
+ return MonitorCriteriaObservationBuilder.describeResponseHeaderValueObservation(input);
20
+ case CheckOn.ResponseBody:
21
+ return MonitorCriteriaObservationBuilder.describeResponseBodyObservation(input);
22
+ case CheckOn.IsOnline:
23
+ return MonitorCriteriaObservationBuilder.describeIsOnlineObservation(input);
24
+ case CheckOn.IsRequestTimeout:
25
+ return MonitorCriteriaObservationBuilder.describeIsTimeoutObservation(input);
26
+ case CheckOn.IncomingRequest:
27
+ return MonitorCriteriaObservationBuilder.describeIncomingRequestObservation(input);
28
+ case CheckOn.RequestBody:
29
+ return MonitorCriteriaObservationBuilder.describeRequestBodyObservation(input);
30
+ case CheckOn.RequestHeader:
31
+ return MonitorCriteriaObservationBuilder.describeRequestHeaderObservation(input);
32
+ case CheckOn.RequestHeaderValue:
33
+ return MonitorCriteriaObservationBuilder.describeRequestHeaderValueObservation(input);
34
+ case CheckOn.JavaScriptExpression:
35
+ return MonitorCriteriaObservationBuilder.describeJavaScriptExpressionObservation(input);
36
+ case CheckOn.CPUUsagePercent:
37
+ return MonitorCriteriaObservationBuilder.describeCpuUsageObservation(input);
38
+ case CheckOn.MemoryUsagePercent:
39
+ return MonitorCriteriaObservationBuilder.describeMemoryUsageObservation(input);
40
+ case CheckOn.DiskUsagePercent:
41
+ return MonitorCriteriaObservationBuilder.describeDiskUsageObservation(input);
42
+ case CheckOn.ServerProcessName:
43
+ return MonitorCriteriaObservationBuilder.describeServerProcessNameObservation(input);
44
+ case CheckOn.ServerProcessPID:
45
+ return MonitorCriteriaObservationBuilder.describeServerProcessPidObservation(input);
46
+ case CheckOn.ServerProcessCommand:
47
+ return MonitorCriteriaObservationBuilder.describeServerProcessCommandObservation(input);
48
+ case CheckOn.ExpiresInHours:
49
+ return MonitorCriteriaObservationBuilder.describeCertificateExpiresInHoursObservation(input);
50
+ case CheckOn.ExpiresInDays:
51
+ return MonitorCriteriaObservationBuilder.describeCertificateExpiresInDaysObservation(input);
52
+ case CheckOn.IsSelfSignedCertificate:
53
+ return MonitorCriteriaObservationBuilder.describeIsSelfSignedObservation(input);
54
+ case CheckOn.IsExpiredCertificate:
55
+ return MonitorCriteriaObservationBuilder.describeIsExpiredObservation(input);
56
+ case CheckOn.IsValidCertificate:
57
+ return MonitorCriteriaObservationBuilder.describeIsValidObservation(input);
58
+ case CheckOn.IsNotAValidCertificate:
59
+ return MonitorCriteriaObservationBuilder.describeIsInvalidObservation(input);
60
+ case CheckOn.ResultValue:
61
+ return MonitorCriteriaObservationBuilder.describeResultValueObservation(input);
62
+ case CheckOn.Error:
63
+ return MonitorCriteriaObservationBuilder.describeErrorObservation(input);
64
+ case CheckOn.ExecutionTime:
65
+ return MonitorCriteriaObservationBuilder.describeExecutionTimeObservation(input);
66
+ case CheckOn.ScreenSizeType:
67
+ return MonitorCriteriaObservationBuilder.describeScreenSizeObservation(input);
68
+ case CheckOn.BrowserType:
69
+ return MonitorCriteriaObservationBuilder.describeBrowserObservation(input);
70
+ case CheckOn.LogCount:
71
+ return MonitorCriteriaObservationBuilder.describeLogCountObservation(input);
72
+ case CheckOn.SpanCount:
73
+ return MonitorCriteriaObservationBuilder.describeSpanCountObservation(input);
74
+ case CheckOn.MetricValue:
75
+ return MonitorCriteriaObservationBuilder.describeMetricValueObservation(input);
76
+ default:
77
+ return null;
78
+ }
79
+ }
80
+ static describeResponseTimeObservation(input) {
81
+ var _a;
82
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
83
+ if (!probeResponse) {
84
+ return null;
85
+ }
86
+ const responseTime = (_a = probeResponse.responseTimeInMs) !== null && _a !== void 0 ? _a : undefined;
87
+ if (responseTime === undefined || responseTime === null) {
88
+ return "Response time metric was not recorded";
89
+ }
90
+ const formatted = MonitorCriteriaMessageFormatter.formatNumber(responseTime, {
91
+ maximumFractionDigits: 2,
92
+ });
93
+ const evaluationWindow = MonitorCriteriaExpectationBuilder.getEvaluationWindowDescription(input.criteriaFilter);
94
+ let message = `Response Time (in ms) was ${formatted !== null && formatted !== void 0 ? formatted : responseTime} ms`;
95
+ if (evaluationWindow) {
96
+ message += ` ${evaluationWindow}`;
97
+ }
98
+ return message;
99
+ }
100
+ static describeResponseStatusCodeObservation(input) {
101
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
102
+ if (!probeResponse) {
103
+ return null;
104
+ }
105
+ if (probeResponse.responseCode === undefined) {
106
+ return "Response status code was not recorded";
107
+ }
108
+ return `Response Status Code was ${probeResponse.responseCode}.`;
109
+ }
110
+ static describeResponseHeaderObservation(input) {
111
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
112
+ if (!probeResponse) {
113
+ return null;
114
+ }
115
+ const headers = Object.keys(probeResponse.responseHeaders || {}).map((header) => {
116
+ return header.toLowerCase();
117
+ });
118
+ if (!headers.length) {
119
+ return "Response headers were empty.";
120
+ }
121
+ return `Response headers present: ${MonitorCriteriaMessageFormatter.formatList(headers)}.`;
122
+ }
123
+ static describeResponseHeaderValueObservation(input) {
124
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
125
+ if (!probeResponse) {
126
+ return null;
127
+ }
128
+ const headerValues = Object.values(probeResponse.responseHeaders || {}).map((value) => {
129
+ return value.toLowerCase();
130
+ });
131
+ if (!headerValues.length) {
132
+ return "Response header values were empty.";
133
+ }
134
+ return `Response header values: ${MonitorCriteriaMessageFormatter.formatList(headerValues)}.`;
135
+ }
136
+ static describeResponseBodyObservation(input) {
137
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
138
+ if (!probeResponse) {
139
+ return null;
140
+ }
141
+ if (!probeResponse.responseBody) {
142
+ return "Response body was empty.";
143
+ }
144
+ let bodyAsString;
145
+ if (typeof probeResponse.responseBody === Typeof.Object) {
146
+ try {
147
+ bodyAsString = JSON.stringify(probeResponse.responseBody);
148
+ }
149
+ catch (err) {
150
+ logger.error(err);
151
+ bodyAsString = "[object]";
152
+ }
153
+ }
154
+ else {
155
+ bodyAsString = probeResponse.responseBody;
156
+ }
157
+ return `Response body sample: ${MonitorCriteriaMessageFormatter.formatSnippet(bodyAsString)}.`;
158
+ }
159
+ static describeIsOnlineObservation(input) {
160
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
161
+ if (probeResponse && probeResponse.isOnline !== undefined) {
162
+ return `Monitor reported ${probeResponse.isOnline ? "online" : "offline"} status at ${OneUptimeDate.getDateAsLocalFormattedString(probeResponse.monitoredAt)}.`;
163
+ }
164
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
165
+ if (serverResponse) {
166
+ const lastHeartbeat = serverResponse.requestReceivedAt;
167
+ const timeNow = serverResponse.timeNow || OneUptimeDate.getCurrentDate();
168
+ const minutesSinceHeartbeat = OneUptimeDate.getDifferenceInMinutes(lastHeartbeat, timeNow);
169
+ const formattedMinutes = MonitorCriteriaMessageFormatter.formatNumber(minutesSinceHeartbeat, {
170
+ maximumFractionDigits: 2,
171
+ });
172
+ return `Server heartbeat last received ${formattedMinutes !== null && formattedMinutes !== void 0 ? formattedMinutes : minutesSinceHeartbeat} minutes ago.`;
173
+ }
174
+ return null;
175
+ }
176
+ static describeIsTimeoutObservation(input) {
177
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
178
+ if (probeResponse && probeResponse.isTimeout !== undefined) {
179
+ return probeResponse.isTimeout
180
+ ? "Request timed out."
181
+ : "Request completed before timeout.";
182
+ }
183
+ return "Timeout information was unavailable.";
184
+ }
185
+ static describeIncomingRequestObservation(input) {
186
+ const incomingRequest = MonitorCriteriaDataExtractor.getIncomingMonitorRequest(input.dataToProcess);
187
+ if (!incomingRequest) {
188
+ return null;
189
+ }
190
+ const lastHeartbeat = incomingRequest.incomingRequestReceivedAt;
191
+ const checkedAt = incomingRequest.checkedAt || OneUptimeDate.getCurrentDate();
192
+ const minutesSinceHeartbeat = OneUptimeDate.getDifferenceInMinutes(lastHeartbeat, checkedAt);
193
+ const formattedMinutes = MonitorCriteriaMessageFormatter.formatNumber(minutesSinceHeartbeat, {
194
+ maximumFractionDigits: 2,
195
+ });
196
+ return `Last incoming request was ${formattedMinutes !== null && formattedMinutes !== void 0 ? formattedMinutes : minutesSinceHeartbeat} minutes ago (checked at ${OneUptimeDate.getDateAsLocalFormattedString(checkedAt)}).`;
197
+ }
198
+ static describeRequestBodyObservation(input) {
199
+ const incomingRequest = MonitorCriteriaDataExtractor.getIncomingMonitorRequest(input.dataToProcess);
200
+ if (!incomingRequest) {
201
+ return null;
202
+ }
203
+ const requestBody = incomingRequest.requestBody;
204
+ if (!requestBody) {
205
+ return "Request body was empty.";
206
+ }
207
+ let requestBodyAsString;
208
+ if (typeof requestBody === Typeof.Object) {
209
+ try {
210
+ requestBodyAsString = JSON.stringify(requestBody);
211
+ }
212
+ catch (err) {
213
+ logger.error(err);
214
+ requestBodyAsString = "[object]";
215
+ }
216
+ }
217
+ else {
218
+ requestBodyAsString = requestBody;
219
+ }
220
+ return `Request body sample: ${MonitorCriteriaMessageFormatter.formatSnippet(requestBodyAsString)}.`;
221
+ }
222
+ static describeRequestHeaderObservation(input) {
223
+ const incomingRequest = MonitorCriteriaDataExtractor.getIncomingMonitorRequest(input.dataToProcess);
224
+ if (!incomingRequest) {
225
+ return null;
226
+ }
227
+ const headers = Object.keys(incomingRequest.requestHeaders || {}).map((header) => {
228
+ return header.toLowerCase();
229
+ });
230
+ if (!headers.length) {
231
+ return "Request headers were empty.";
232
+ }
233
+ return `Request headers present: ${MonitorCriteriaMessageFormatter.formatList(headers)}.`;
234
+ }
235
+ static describeRequestHeaderValueObservation(input) {
236
+ const incomingRequest = MonitorCriteriaDataExtractor.getIncomingMonitorRequest(input.dataToProcess);
237
+ if (!incomingRequest) {
238
+ return null;
239
+ }
240
+ const headerValues = Object.values(incomingRequest.requestHeaders || {}).map((value) => {
241
+ return value.toLowerCase();
242
+ });
243
+ if (!headerValues.length) {
244
+ return "Request header values were empty.";
245
+ }
246
+ return `Request header values: ${MonitorCriteriaMessageFormatter.formatList(headerValues)}.`;
247
+ }
248
+ static describeJavaScriptExpressionObservation(input) {
249
+ if (!input.criteriaFilter.value) {
250
+ return "JavaScript expression evaluated to false.";
251
+ }
252
+ return `JavaScript expression "${input.criteriaFilter.value}" evaluated to false.`;
253
+ }
254
+ static describeCpuUsageObservation(input) {
255
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
256
+ if (!serverResponse) {
257
+ return null;
258
+ }
259
+ const cpuMetrics = serverResponse.basicInfrastructureMetrics;
260
+ if (!cpuMetrics || !cpuMetrics.cpuMetrics) {
261
+ return "CPU usage metrics were unavailable.";
262
+ }
263
+ const cpuPercent = MonitorCriteriaMessageFormatter.formatPercentage(cpuMetrics.cpuMetrics.percentUsed);
264
+ const coreInfo = cpuMetrics.cpuMetrics.cores
265
+ ? ` across ${cpuMetrics.cpuMetrics.cores} core${cpuMetrics.cpuMetrics.cores > 1 ? "s" : ""}`
266
+ : "";
267
+ return `CPU Usage (in %) was ${cpuPercent !== null && cpuPercent !== void 0 ? cpuPercent : "unavailable"}${coreInfo}.`;
268
+ }
269
+ static describeMemoryUsageObservation(input) {
270
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
271
+ if (!serverResponse) {
272
+ return null;
273
+ }
274
+ const memoryMetrics = serverResponse.basicInfrastructureMetrics;
275
+ if (!memoryMetrics || !memoryMetrics.memoryMetrics) {
276
+ return "Memory usage metrics were unavailable.";
277
+ }
278
+ const percentUsed = MonitorCriteriaMessageFormatter.formatPercentage(memoryMetrics.memoryMetrics.percentUsed);
279
+ const used = MonitorCriteriaMessageFormatter.formatBytes(memoryMetrics.memoryMetrics.used);
280
+ const total = MonitorCriteriaMessageFormatter.formatBytes(memoryMetrics.memoryMetrics.total);
281
+ return `Memory Usage (in %) was ${percentUsed !== null && percentUsed !== void 0 ? percentUsed : "unavailable"} (${used !== null && used !== void 0 ? used : "?"} used of ${total !== null && total !== void 0 ? total : "?"}).`;
282
+ }
283
+ static describeDiskUsageObservation(input) {
284
+ var _a, _b;
285
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
286
+ if (!serverResponse) {
287
+ return null;
288
+ }
289
+ const diskPath = ((_a = input.criteriaFilter.serverMonitorOptions) === null || _a === void 0 ? void 0 : _a.diskPath) || "/";
290
+ const diskMetric = serverResponse.basicInfrastructureMetrics;
291
+ if (!diskMetric || !((_b = diskMetric.diskMetrics) === null || _b === void 0 ? void 0 : _b.length)) {
292
+ return `Disk metrics for path ${diskPath} were unavailable.`;
293
+ }
294
+ const matchedDisk = diskMetric.diskMetrics.find((disk) => {
295
+ return (disk.diskPath.trim().toLowerCase() === diskPath.trim().toLowerCase());
296
+ });
297
+ if (!matchedDisk) {
298
+ return `Disk metrics did not include path ${diskPath}.`;
299
+ }
300
+ const percentUsedValue = MonitorCriteriaMessageFormatter.computeDiskUsagePercent(matchedDisk);
301
+ const percentUsed = MonitorCriteriaMessageFormatter.formatPercentage(percentUsedValue !== null && percentUsedValue !== void 0 ? percentUsedValue : undefined);
302
+ const used = MonitorCriteriaMessageFormatter.formatBytes(matchedDisk.used);
303
+ const total = MonitorCriteriaMessageFormatter.formatBytes(matchedDisk.total);
304
+ const free = MonitorCriteriaMessageFormatter.formatBytes(matchedDisk.free);
305
+ return `Disk Usage (in %) on disk ${diskPath} was ${percentUsed !== null && percentUsed !== void 0 ? percentUsed : "unavailable"} (${used !== null && used !== void 0 ? used : "?"} used of ${total !== null && total !== void 0 ? total : "?"}, free ${free !== null && free !== void 0 ? free : "?"}).`;
306
+ }
307
+ static describeServerProcessNameObservation(input) {
308
+ var _a;
309
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
310
+ if (!serverResponse) {
311
+ return null;
312
+ }
313
+ const thresholdName = ((_a = input.criteriaFilter.value) !== null && _a !== void 0 ? _a : "")
314
+ .toString()
315
+ .trim()
316
+ .toLowerCase();
317
+ const processes = serverResponse.processes || [];
318
+ const matchingProcesses = processes.filter((process) => {
319
+ return process.name.trim().toLowerCase() === thresholdName;
320
+ });
321
+ if (matchingProcesses.length > 0) {
322
+ const summary = matchingProcesses
323
+ .map((process) => {
324
+ return `${process.name} (pid ${process.pid})`;
325
+ })
326
+ .join(", ");
327
+ return `Process ${input.criteriaFilter.value} is running (${summary}).`;
328
+ }
329
+ const processSummary = MonitorCriteriaMessageFormatter.describeProcesses(processes);
330
+ if (processSummary) {
331
+ return `Process ${input.criteriaFilter.value} was not running. Active processes: ${processSummary}.`;
332
+ }
333
+ return `Process ${input.criteriaFilter.value} was not running.`;
334
+ }
335
+ static describeServerProcessPidObservation(input) {
336
+ var _a;
337
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
338
+ if (!serverResponse) {
339
+ return null;
340
+ }
341
+ const thresholdPid = ((_a = input.criteriaFilter.value) !== null && _a !== void 0 ? _a : "")
342
+ .toString()
343
+ .trim()
344
+ .toLowerCase();
345
+ const processes = serverResponse.processes || [];
346
+ const matchingProcesses = processes.filter((process) => {
347
+ return process.pid.toString().trim().toLowerCase() === thresholdPid;
348
+ });
349
+ if (matchingProcesses.length > 0) {
350
+ const summary = matchingProcesses
351
+ .map((process) => {
352
+ return `${process.name} (pid ${process.pid})`;
353
+ })
354
+ .join(", ");
355
+ return `Process with PID ${input.criteriaFilter.value} is running (${summary}).`;
356
+ }
357
+ const processSummary = MonitorCriteriaMessageFormatter.describeProcesses(processes);
358
+ if (processSummary) {
359
+ return `Process with PID ${input.criteriaFilter.value} was not running. Active processes: ${processSummary}.`;
360
+ }
361
+ return `Process with PID ${input.criteriaFilter.value} was not running.`;
362
+ }
363
+ static describeServerProcessCommandObservation(input) {
364
+ var _a;
365
+ const serverResponse = MonitorCriteriaDataExtractor.getServerMonitorResponse(input.dataToProcess);
366
+ if (!serverResponse) {
367
+ return null;
368
+ }
369
+ const thresholdCommand = ((_a = input.criteriaFilter.value) !== null && _a !== void 0 ? _a : "")
370
+ .toString()
371
+ .trim()
372
+ .toLowerCase();
373
+ const processes = serverResponse.processes || [];
374
+ const matchingProcesses = processes.filter((process) => {
375
+ return process.command.trim().toLowerCase() === thresholdCommand;
376
+ });
377
+ if (matchingProcesses.length > 0) {
378
+ const summary = matchingProcesses
379
+ .map((process) => {
380
+ return `${process.command} (pid ${process.pid})`;
381
+ })
382
+ .join(", ");
383
+ return `Process with command ${input.criteriaFilter.value} is running (${summary}).`;
384
+ }
385
+ const processSummary = MonitorCriteriaMessageFormatter.describeProcesses(processes);
386
+ if (processSummary) {
387
+ return `Process with command ${input.criteriaFilter.value} was not running. Active processes: ${processSummary}.`;
388
+ }
389
+ return `Process with command ${input.criteriaFilter.value} was not running.`;
390
+ }
391
+ static describeCertificateExpiresInHoursObservation(input) {
392
+ const sslResponse = MonitorCriteriaDataExtractor.getSslResponse(input.dataToProcess);
393
+ if (!sslResponse || !sslResponse.expiresAt) {
394
+ return "SSL certificate expiration time was unavailable.";
395
+ }
396
+ const hoursRemaining = OneUptimeDate.getHoursBetweenTwoDates(OneUptimeDate.getCurrentDate(), sslResponse.expiresAt);
397
+ const formattedHours = MonitorCriteriaMessageFormatter.formatNumber(hoursRemaining, {
398
+ maximumFractionDigits: 2,
399
+ });
400
+ return `SSL certificate expires at ${OneUptimeDate.getDateAsLocalFormattedString(sslResponse.expiresAt)} (${formattedHours !== null && formattedHours !== void 0 ? formattedHours : hoursRemaining} hours remaining).`;
401
+ }
402
+ static describeCertificateExpiresInDaysObservation(input) {
403
+ const sslResponse = MonitorCriteriaDataExtractor.getSslResponse(input.dataToProcess);
404
+ if (!sslResponse || !sslResponse.expiresAt) {
405
+ return "SSL certificate expiration time was unavailable.";
406
+ }
407
+ const daysRemaining = OneUptimeDate.getDaysBetweenTwoDates(OneUptimeDate.getCurrentDate(), sslResponse.expiresAt);
408
+ const formattedDays = MonitorCriteriaMessageFormatter.formatNumber(daysRemaining, {
409
+ maximumFractionDigits: 2,
410
+ });
411
+ return `SSL certificate expires at ${OneUptimeDate.getDateAsLocalFormattedString(sslResponse.expiresAt)} (${formattedDays !== null && formattedDays !== void 0 ? formattedDays : daysRemaining} days remaining).`;
412
+ }
413
+ static describeIsSelfSignedObservation(input) {
414
+ const sslResponse = MonitorCriteriaDataExtractor.getSslResponse(input.dataToProcess);
415
+ if (!sslResponse || sslResponse.isSelfSigned === undefined) {
416
+ return "SSL certificate self-signed status was unavailable.";
417
+ }
418
+ return sslResponse.isSelfSigned
419
+ ? "SSL certificate is self signed."
420
+ : "SSL certificate is not self signed.";
421
+ }
422
+ static describeIsExpiredObservation(input) {
423
+ const sslResponse = MonitorCriteriaDataExtractor.getSslResponse(input.dataToProcess);
424
+ if (!sslResponse || !sslResponse.expiresAt) {
425
+ return "SSL certificate expiration time was unavailable.";
426
+ }
427
+ const isExpired = OneUptimeDate.isBefore(sslResponse.expiresAt, OneUptimeDate.getCurrentDate());
428
+ return isExpired
429
+ ? "SSL certificate is expired."
430
+ : "SSL certificate is not expired.";
431
+ }
432
+ static describeIsValidObservation(input) {
433
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
434
+ const sslResponse = probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.sslResponse;
435
+ const isValid = Boolean(sslResponse &&
436
+ (probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.isOnline) &&
437
+ sslResponse.expiresAt &&
438
+ !sslResponse.isSelfSigned &&
439
+ OneUptimeDate.isAfter(sslResponse.expiresAt, OneUptimeDate.getCurrentDate()));
440
+ if (!sslResponse) {
441
+ return "SSL certificate details were unavailable.";
442
+ }
443
+ return isValid
444
+ ? "SSL certificate is valid."
445
+ : "SSL certificate is not valid.";
446
+ }
447
+ static describeIsInvalidObservation(input) {
448
+ const probeResponse = MonitorCriteriaDataExtractor.getProbeMonitorResponse(input.dataToProcess);
449
+ const sslResponse = probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.sslResponse;
450
+ const isInvalid = !sslResponse ||
451
+ !(probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.isOnline) ||
452
+ Boolean(sslResponse &&
453
+ sslResponse.expiresAt &&
454
+ (sslResponse.isSelfSigned ||
455
+ OneUptimeDate.isBefore(sslResponse.expiresAt, OneUptimeDate.getCurrentDate())));
456
+ if (!sslResponse) {
457
+ return "SSL certificate details were unavailable.";
458
+ }
459
+ return isInvalid
460
+ ? "SSL certificate is not valid."
461
+ : "SSL certificate is valid.";
462
+ }
463
+ static describeExecutionTimeObservation(input) {
464
+ const syntheticResponses = MonitorCriteriaDataExtractor.getSyntheticMonitorResponses(input.dataToProcess);
465
+ const executionTimes = syntheticResponses
466
+ .map((response) => {
467
+ return response.executionTimeInMS;
468
+ })
469
+ .filter((value) => {
470
+ return typeof value === "number" && !isNaN(value);
471
+ });
472
+ if (executionTimes.length > 0) {
473
+ const summary = MonitorCriteriaMessageFormatter.summarizeNumericSeries(executionTimes);
474
+ if (summary) {
475
+ return `Execution Time (in ms) recorded ${summary}.`;
476
+ }
477
+ }
478
+ const customCodeResponse = MonitorCriteriaDataExtractor.getCustomCodeMonitorResponse(input.dataToProcess);
479
+ if (customCodeResponse) {
480
+ const formatted = MonitorCriteriaMessageFormatter.formatNumber(customCodeResponse.executionTimeInMS, { maximumFractionDigits: 2 });
481
+ return `Execution Time (in ms) was ${formatted !== null && formatted !== void 0 ? formatted : customCodeResponse.executionTimeInMS} ms.`;
482
+ }
483
+ return "Execution time was unavailable.";
484
+ }
485
+ static describeResultValueObservation(input) {
486
+ const syntheticResponses = MonitorCriteriaDataExtractor.getSyntheticMonitorResponses(input.dataToProcess);
487
+ const resultValues = syntheticResponses
488
+ .map((response) => {
489
+ return MonitorCriteriaMessageFormatter.formatResultValue(response.result);
490
+ })
491
+ .filter((value) => {
492
+ return value !== "undefined";
493
+ });
494
+ if (resultValues.length > 0) {
495
+ const uniqueResults = Array.from(new Set(resultValues));
496
+ return `Result Value samples: ${MonitorCriteriaMessageFormatter.formatList(uniqueResults)}.`;
497
+ }
498
+ const customCodeResponse = MonitorCriteriaDataExtractor.getCustomCodeMonitorResponse(input.dataToProcess);
499
+ if (customCodeResponse && customCodeResponse.result !== undefined) {
500
+ const formatted = MonitorCriteriaMessageFormatter.formatResultValue(customCodeResponse.result);
501
+ return `Result Value was ${MonitorCriteriaMessageFormatter.formatSnippet(formatted)}.`;
502
+ }
503
+ return "Result value was unavailable.";
504
+ }
505
+ static describeErrorObservation(input) {
506
+ var _a;
507
+ const syntheticResponses = MonitorCriteriaDataExtractor.getSyntheticMonitorResponses(input.dataToProcess);
508
+ const errors = syntheticResponses
509
+ .map((response) => {
510
+ return response.scriptError;
511
+ })
512
+ .filter((value) => {
513
+ return Boolean(value);
514
+ })
515
+ .map((error) => {
516
+ return MonitorCriteriaMessageFormatter.formatSnippet(error, 80);
517
+ });
518
+ if (errors.length > 0) {
519
+ return `Script errors: ${MonitorCriteriaMessageFormatter.formatList(errors)}.`;
520
+ }
521
+ const customCodeResponse = MonitorCriteriaDataExtractor.getCustomCodeMonitorResponse(input.dataToProcess);
522
+ if (customCodeResponse === null || customCodeResponse === void 0 ? void 0 : customCodeResponse.scriptError) {
523
+ return `Script error: ${MonitorCriteriaMessageFormatter.formatSnippet(customCodeResponse.scriptError, 80)}.`;
524
+ }
525
+ if ((_a = customCodeResponse === null || customCodeResponse === void 0 ? void 0 : customCodeResponse.logMessages) === null || _a === void 0 ? void 0 : _a.length) {
526
+ return `Script log messages: ${MonitorCriteriaMessageFormatter.formatList(customCodeResponse.logMessages)}.`;
527
+ }
528
+ return "No script errors were reported.";
529
+ }
530
+ static describeScreenSizeObservation(input) {
531
+ const syntheticResponses = MonitorCriteriaDataExtractor.getSyntheticMonitorResponses(input.dataToProcess);
532
+ if (!syntheticResponses.length) {
533
+ return "Synthetic monitor results were unavailable.";
534
+ }
535
+ const screenSizes = Array.from(new Set(syntheticResponses.map((response) => {
536
+ return response.screenSizeType;
537
+ })));
538
+ return `Synthetic monitor screen sizes: ${MonitorCriteriaMessageFormatter.formatList(screenSizes)}.`;
539
+ }
540
+ static describeBrowserObservation(input) {
541
+ const syntheticResponses = MonitorCriteriaDataExtractor.getSyntheticMonitorResponses(input.dataToProcess);
542
+ if (!syntheticResponses.length) {
543
+ return "Synthetic monitor results were unavailable.";
544
+ }
545
+ const browsers = Array.from(new Set(syntheticResponses.map((response) => {
546
+ return response.browserType;
547
+ })));
548
+ return `Synthetic monitor browsers: ${MonitorCriteriaMessageFormatter.formatList(browsers)}.`;
549
+ }
550
+ static describeLogCountObservation(input) {
551
+ const logResponse = MonitorCriteriaDataExtractor.getLogMonitorResponse(input.dataToProcess);
552
+ if (!logResponse) {
553
+ return null;
554
+ }
555
+ return `Log count was ${logResponse.logCount}.`;
556
+ }
557
+ static describeSpanCountObservation(input) {
558
+ const traceResponse = MonitorCriteriaDataExtractor.getTraceMonitorResponse(input.dataToProcess);
559
+ if (!traceResponse) {
560
+ return null;
561
+ }
562
+ return `Span count was ${traceResponse.spanCount}.`;
563
+ }
564
+ static describeMetricValueObservation(input) {
565
+ const metricValues = MonitorCriteriaDataExtractor.extractMetricValues({
566
+ criteriaFilter: input.criteriaFilter,
567
+ dataToProcess: input.dataToProcess,
568
+ monitorStep: input.monitorStep,
569
+ });
570
+ if (!metricValues) {
571
+ return null;
572
+ }
573
+ if (!metricValues.values.length) {
574
+ return `Metric Value${metricValues.alias ? ` (${metricValues.alias})` : ""} returned no data points.`;
575
+ }
576
+ const summary = MonitorCriteriaMessageFormatter.summarizeNumericSeries(metricValues.values);
577
+ if (!summary) {
578
+ return null;
579
+ }
580
+ return `Metric Value${metricValues.alias ? ` (${metricValues.alias})` : ""} recorded ${summary}.`;
581
+ }
582
+ }
583
+ //# sourceMappingURL=MonitorCriteriaObservationBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorCriteriaObservationBuilder.js","sourceRoot":"","sources":["../../../../../Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts"],"names":[],"mappings":"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"}