@oneuptime/common 7.0.3377 → 7.0.3387

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 (52) hide show
  1. package/Server/EnvironmentConfig.ts +3 -0
  2. package/Server/Services/AnalyticsDatabaseService.ts +4 -0
  3. package/Server/Services/StatusPageService.ts +4 -4
  4. package/Server/Types/AnalyticsDatabase/AggregateBy.ts +4 -0
  5. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +26 -16
  6. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +53 -7
  7. package/Server/Utils/Monitor/MonitorAlert.ts +5 -0
  8. package/Server/Utils/Monitor/MonitorIncident.ts +5 -0
  9. package/Server/Utils/Monitor/MonitorResource.ts +26 -0
  10. package/Server/Utils/Stream.ts +4 -0
  11. package/Types/Date.ts +9 -0
  12. package/Types/Metrics/MetricViewData.ts +6 -0
  13. package/Types/Monitor/CriteriaFilter.ts +5 -4
  14. package/Types/Monitor/MonitorCriteriaInstance.ts +4 -0
  15. package/Types/Monitor/MonitorType.ts +6 -6
  16. package/Types/Telemetry/TelemetryQuery.ts +3 -2
  17. package/UI/Components/Charts/Utils/XAxis.ts +3 -2
  18. package/UI/Components/RollingTimePicker/RollingTimePicker.tsx +12 -25
  19. package/build/dist/Server/EnvironmentConfig.js +1 -0
  20. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  21. package/build/dist/Server/Services/AnalyticsDatabaseService.js +3 -0
  22. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  23. package/build/dist/Server/Services/StatusPageService.js +3 -2
  24. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  25. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +3 -0
  26. package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
  27. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +25 -14
  28. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  29. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +34 -8
  30. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  31. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +4 -0
  32. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  33. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +4 -0
  34. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  35. package/build/dist/Server/Utils/Monitor/MonitorResource.js +19 -0
  36. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  37. package/build/dist/Server/Utils/Stream.js +3 -0
  38. package/build/dist/Server/Utils/Stream.js.map +1 -1
  39. package/build/dist/Types/Date.js +5 -0
  40. package/build/dist/Types/Date.js.map +1 -1
  41. package/build/dist/Types/Metrics/MetricViewData.js +2 -0
  42. package/build/dist/Types/Metrics/MetricViewData.js.map +1 -0
  43. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  44. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +3 -1
  45. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  46. package/build/dist/Types/Monitor/MonitorType.js +5 -6
  47. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  48. package/build/dist/UI/Components/Charts/Utils/XAxis.js +3 -2
  49. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  50. package/build/dist/UI/Components/RollingTimePicker/RollingTimePicker.js +9 -18
  51. package/build/dist/UI/Components/RollingTimePicker/RollingTimePicker.js.map +1 -1
  52. package/package.json +2 -2
@@ -198,6 +198,9 @@ export const AnalyticsHost: string = process.env["ANALYTICS_HOST"] || "";
198
198
  export const DisableAutomaticIncidentCreation: boolean =
199
199
  process.env["DISABLE_AUTOMATIC_INCIDENT_CREATION"] === "true";
200
200
 
201
+ export const DisableAutomaticAlertCreation: boolean =
202
+ process.env["DISABLE_AUTOMATIC_ALERT_CREATION"] === "true";
203
+
201
204
  export const ClickhouseHost: Hostname = Hostname.fromString(
202
205
  process.env["CLICKHOUSE_HOST"] || "clickhouse",
203
206
  );
@@ -415,6 +415,10 @@ export default class AnalyticsDatabaseService<
415
415
  strResult: string,
416
416
  columns: string[],
417
417
  ): JSONObject[] {
418
+ if (!strResult || !strResult.trim()) {
419
+ return [];
420
+ }
421
+
418
422
  const jsonItems: Array<JSONObject> = [];
419
423
 
420
424
  const rows: Array<string> = strResult.split("\n");
@@ -750,11 +750,11 @@ export class Service extends DatabaseService<StatusPage> {
750
750
  statusPageId: data.statusPageId,
751
751
  });
752
752
 
753
+ const numberOfDays: number = data.historyDays || 14;
754
+
753
755
  const currentDate: Date = OneUptimeDate.getCurrentDate();
754
- const startDate: Date = OneUptimeDate.getSomeDaysAgo(
755
- data.historyDays || 14,
756
- );
757
- const startAndEndDate: string = `${OneUptimeDate.getDateAsLocalFormattedString(startDate, true)} - ${OneUptimeDate.getDateAsLocalFormattedString(currentDate, true)}`;
756
+ const startDate: Date = OneUptimeDate.getSomeDaysAgo(numberOfDays);
757
+ const startAndEndDate: string = `${numberOfDays} days (${OneUptimeDate.getDateAsLocalFormattedString(startDate, true)} - ${OneUptimeDate.getDateAsLocalFormattedString(currentDate, true)})`;
758
758
 
759
759
  if (statusPageResources.length === 0) {
760
760
  return {
@@ -2,6 +2,7 @@ import AggregationInterval from "Common/Types/BaseDatabase/AggregationInterval";
2
2
  import CommonAggregateBy from "Common/Types/BaseDatabase/AggregateBy";
3
3
  import AnalyticsBaseModel from "Common/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
4
4
  import DatabaseCommonInteractionProps from "Common/Types/BaseDatabase/DatabaseCommonInteractionProps";
5
+ import OneUptimeDate from "../../../Types/Date";
5
6
 
6
7
  export default interface AggregateBy<TBaseModel extends AnalyticsBaseModel>
7
8
  extends CommonAggregateBy<TBaseModel> {
@@ -13,6 +14,9 @@ export class AggregateUtil {
13
14
  startDate: Date;
14
15
  endDate: Date;
15
16
  }): AggregationInterval {
17
+ data.startDate = OneUptimeDate.fromString(data.startDate);
18
+ data.endDate = OneUptimeDate.fromString(data.endDate);
19
+
16
20
  const diff: number = data.endDate.getTime() - data.startDate.getTime();
17
21
 
18
22
  if (diff <= 1000 * 60 * 60 * 3) {
@@ -313,7 +313,8 @@ export default class CompareCriteria {
313
313
  CompareCriteria.isTrue({
314
314
  value: data.value,
315
315
  evaluationType:
316
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
316
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
317
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
317
318
  })
318
319
  ) {
319
320
  return CompareCriteria.getCompareMessage({
@@ -331,7 +332,8 @@ export default class CompareCriteria {
331
332
  CompareCriteria.isFalse({
332
333
  value: data.value,
333
334
  evaluationType:
334
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
335
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
336
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
335
337
  })
336
338
  ) {
337
339
  return CompareCriteria.getCompareMessage({
@@ -366,7 +368,8 @@ export default class CompareCriteria {
366
368
  threshold: data.threshold as number,
367
369
  value: data.value,
368
370
  evaluationType:
369
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
371
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
372
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
370
373
  })
371
374
  ) {
372
375
  return CompareCriteria.getCompareMessage({
@@ -385,7 +388,8 @@ export default class CompareCriteria {
385
388
  threshold: data.threshold as number,
386
389
  value: data.value,
387
390
  evaluationType:
388
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
391
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
392
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
389
393
  })
390
394
  ) {
391
395
  return CompareCriteria.getCompareMessage({
@@ -404,7 +408,8 @@ export default class CompareCriteria {
404
408
  threshold: data.threshold as number,
405
409
  value: data.value,
406
410
  evaluationType:
407
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
411
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
412
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
408
413
  })
409
414
  ) {
410
415
  return CompareCriteria.getCompareMessage({
@@ -423,7 +428,8 @@ export default class CompareCriteria {
423
428
  threshold: data.threshold as number,
424
429
  value: data.value,
425
430
  evaluationType:
426
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
431
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
432
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
427
433
  })
428
434
  ) {
429
435
  return CompareCriteria.getCompareMessage({
@@ -442,7 +448,8 @@ export default class CompareCriteria {
442
448
  threshold: data.threshold as number,
443
449
  value: data.value,
444
450
  evaluationType:
445
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
451
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
452
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
446
453
  })
447
454
  ) {
448
455
  return CompareCriteria.getCompareMessage({
@@ -461,7 +468,8 @@ export default class CompareCriteria {
461
468
  threshold: data.threshold as number,
462
469
  value: data.value,
463
470
  evaluationType:
464
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType,
471
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ||
472
+ data.criteriaFilter.metricMonitorOptions?.metricAggregationType,
465
473
  })
466
474
  ) {
467
475
  return CompareCriteria.getCompareMessage({
@@ -485,17 +493,19 @@ export default class CompareCriteria {
485
493
  // CPU Percent over the last 5 minutes is 10 which is less than the threshold of 20
486
494
  let message: string = "";
487
495
 
488
- if (
489
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ===
490
- EvaluateOverTimeType.AnyValue
491
- ) {
496
+ let evaluationType: EvaluateOverTimeType | undefined =
497
+ data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType;
498
+
499
+ if (data.criteriaFilter.metricMonitorOptions?.metricAggregationType) {
500
+ evaluationType =
501
+ data.criteriaFilter.metricMonitorOptions.metricAggregationType;
502
+ }
503
+
504
+ if (evaluationType === EvaluateOverTimeType.AnyValue) {
492
505
  message += "Any value of";
493
506
  }
494
507
 
495
- if (
496
- data.criteriaFilter.evaluateOverTimeOptions?.evaluateOverTimeType ===
497
- EvaluateOverTimeType.AllValues
498
- ) {
508
+ if (evaluationType === EvaluateOverTimeType.AllValues) {
499
509
  message += "All values of";
500
510
  }
501
511
 
@@ -1,17 +1,32 @@
1
1
  import AggregateModel from "../../../../Types/BaseDatabase/AggregatedModel";
2
2
  import AggregatedResult from "../../../../Types/BaseDatabase/AggregatedResult";
3
+ import MetricFormulaConfigData from "../../../../Types/Metrics/MetricFormulaConfigData";
3
4
  import MetricQueryConfigData from "../../../../Types/Metrics/MetricQueryConfigData";
4
5
  import MetricMonitorResponse from "../../../../Types/Monitor/MetricMonitor/MetricMonitorResponse";
6
+ import MonitorStep from "../../../../Types/Monitor/MonitorStep";
5
7
  import DataToProcess from "../DataToProcess";
6
8
  import CompareCriteria from "./CompareCriteria";
7
- import { CheckOn, CriteriaFilter } from "Common/Types/Monitor/CriteriaFilter";
9
+ import {
10
+ CheckOn,
11
+ CriteriaFilter,
12
+ EvaluateOverTimeType,
13
+ } from "Common/Types/Monitor/CriteriaFilter";
8
14
 
9
15
  export default class MetricMonitorCriteria {
10
16
  public static async isMonitorInstanceCriteriaFilterMet(input: {
11
17
  dataToProcess: DataToProcess;
12
18
  criteriaFilter: CriteriaFilter;
19
+ monitorStep: MonitorStep;
13
20
  }): Promise<string | null> {
14
- // Metric Monitoring Checks
21
+ // Metric Monitoring Check
22
+
23
+ if (
24
+ input.criteriaFilter.metricMonitorOptions &&
25
+ !input.criteriaFilter.metricMonitorOptions.metricAggregationType
26
+ ) {
27
+ input.criteriaFilter.metricMonitorOptions.metricAggregationType =
28
+ EvaluateOverTimeType.AnyValue;
29
+ }
15
30
 
16
31
  let threshold: number | string | undefined | null =
17
32
  input.criteriaFilter.value;
@@ -25,10 +40,41 @@ export default class MetricMonitorCriteria {
25
40
  const metricAlias: string =
26
41
  input.criteriaFilter.metricMonitorOptions?.metricAlias || "";
27
42
 
43
+ // Pick based on the alias, or if there's no alias, pick the first one
44
+
45
+ let aliasIndex: number =
46
+ input.monitorStep.data?.metricMonitor?.metricViewConfig?.queryConfigs.findIndex(
47
+ (queryConfig: MetricQueryConfigData) => {
48
+ return queryConfig.metricAliasData?.metricVariable === metricAlias;
49
+ },
50
+ ) || -1;
51
+
52
+ if (aliasIndex < 0) {
53
+ // then try to find in formula
54
+ let formulaIndex: number =
55
+ input.monitorStep.data?.metricMonitor?.metricViewConfig?.formulaConfigs.findIndex(
56
+ (formulaConfig: MetricFormulaConfigData) => {
57
+ return (
58
+ formulaConfig.metricAliasData?.metricVariable === metricAlias
59
+ );
60
+ },
61
+ ) || -1;
62
+
63
+ if (formulaIndex >= 0) {
64
+ // add number of queries to the index
65
+ formulaIndex =
66
+ formulaIndex +
67
+ (input.monitorStep.data?.metricMonitor?.metricViewConfig
68
+ ?.queryConfigs.length || 0);
69
+ aliasIndex = formulaIndex;
70
+ }
71
+ }
28
72
  const aggregatedResult: AggregatedResult | undefined =
29
- metricAggregaredResult && metricAggregaredResult.length > 0
30
- ? metricAggregaredResult[0]
31
- : undefined;
73
+ metricAggregaredResult &&
74
+ metricAggregaredResult.length >= aliasIndex - 1 &&
75
+ aliasIndex >= 0
76
+ ? metricAggregaredResult[aliasIndex]
77
+ : metricAggregaredResult[0] || undefined;
32
78
 
33
79
  if (metricAlias) {
34
80
  // find the index of the alias in the dataToProcess.
@@ -52,7 +98,7 @@ export default class MetricMonitorCriteria {
52
98
  );
53
99
 
54
100
  return CompareCriteria.compareCriteriaNumbers({
55
- value: numbers,
101
+ value: numbers && numbers.length > 0 ? numbers : 0,
56
102
  threshold: threshold as number,
57
103
  criteriaFilter: input.criteriaFilter,
58
104
  });
@@ -69,7 +115,7 @@ export default class MetricMonitorCriteria {
69
115
  );
70
116
 
71
117
  return CompareCriteria.compareCriteriaNumbers({
72
- value: numbers,
118
+ value: numbers && numbers.length > 0 ? numbers : 0,
73
119
  threshold: threshold as number,
74
120
  criteriaFilter: input.criteriaFilter,
75
121
  });
@@ -12,6 +12,7 @@ import MonitorCriteriaInstance from "../../../Types/Monitor/MonitorCriteriaInsta
12
12
  import ObjectID from "../../../Types/ObjectID";
13
13
  import ProbeMonitorResponse from "../../../Types/Probe/ProbeMonitorResponse";
14
14
  import { TelemetryQuery } from "../../../Types/Telemetry/TelemetryQuery";
15
+ import { DisableAutomaticAlertCreation } from "../../EnvironmentConfig";
15
16
  import AlertService from "../../Services/AlertService";
16
17
  import AlertSeverityService from "../../Services/AlertSeverityService";
17
18
  import AlertStateTimelineService from "../../Services/AlertStateTimelineService";
@@ -193,6 +194,10 @@ export default class MonitorAlert {
193
194
  alert.remediationNotes = criteriaAlert.remediationNotes;
194
195
  }
195
196
 
197
+ if (DisableAutomaticAlertCreation) {
198
+ return;
199
+ }
200
+
196
201
  await AlertService.create({
197
202
  data: alert,
198
203
  props: {
@@ -12,6 +12,7 @@ import MonitorCriteriaInstance from "../../../Types/Monitor/MonitorCriteriaInsta
12
12
  import ObjectID from "../../../Types/ObjectID";
13
13
  import ProbeMonitorResponse from "../../../Types/Probe/ProbeMonitorResponse";
14
14
  import { TelemetryQuery } from "../../../Types/Telemetry/TelemetryQuery";
15
+ import { DisableAutomaticIncidentCreation } from "../../EnvironmentConfig";
15
16
  import IncidentService from "../../Services/IncidentService";
16
17
  import IncidentSeverityService from "../../Services/IncidentSeverityService";
17
18
  import IncidentStateTimelineService from "../../Services/IncidentStateTimelineService";
@@ -203,6 +204,10 @@ export default class MonitorIncident {
203
204
  incident.remediationNotes = criteriaIncident.remediationNotes;
204
205
  }
205
206
 
207
+ if (DisableAutomaticIncidentCreation) {
208
+ return;
209
+ }
210
+
206
211
  await IncidentService.create({
207
212
  data: incident,
208
213
  props: {
@@ -56,6 +56,7 @@ import MetricService from "../../Services/MetricService";
56
56
  import MonitorMetricType from "../../../Types/Monitor/MonitorMetricType";
57
57
  import TelemetryUtil from "../Telemetry/Telemetry";
58
58
  import MetricMonitorCriteria from "./Criteria/MetricMonitorCriteria";
59
+ import MetricMonitorResponse from "../../../Types/Monitor/MetricMonitor/MetricMonitorResponse";
59
60
 
60
61
  export default class MonitorResourceUtil {
61
62
  public static async monitorResource(
@@ -442,6 +443,7 @@ export default class MonitorResourceUtil {
442
443
  telemetryQuery = {
443
444
  telemetryQuery: (dataToProcess as LogMonitorResponse).logQuery,
444
445
  telemetryType: TelemetryType.Log,
446
+ metricViewData: null,
445
447
  };
446
448
  logger.debug(
447
449
  `${dataToProcess.monitorId.toString()} - Log query found.`,
@@ -452,6 +454,29 @@ export default class MonitorResourceUtil {
452
454
  telemetryQuery = {
453
455
  telemetryQuery: (dataToProcess as TraceMonitorResponse).spanQuery,
454
456
  telemetryType: TelemetryType.Trace,
457
+ metricViewData: null,
458
+ };
459
+ logger.debug(
460
+ `${dataToProcess.monitorId.toString()} - Span query found.`,
461
+ );
462
+ }
463
+
464
+ if (
465
+ dataToProcess &&
466
+ (dataToProcess as MetricMonitorResponse).metricViewConfig &&
467
+ (dataToProcess as MetricMonitorResponse).startAndEndDate
468
+ ) {
469
+ telemetryQuery = {
470
+ telemetryQuery: null,
471
+ telemetryType: TelemetryType.Metric,
472
+ metricViewData: {
473
+ startAndEndDate:
474
+ (dataToProcess as MetricMonitorResponse).startAndEndDate || null,
475
+ queryConfigs: (dataToProcess as MetricMonitorResponse)
476
+ .metricViewConfig.queryConfigs,
477
+ formulaConfigs: (dataToProcess as MetricMonitorResponse)
478
+ .metricViewConfig.formulaConfigs,
479
+ },
455
480
  };
456
481
  logger.debug(
457
482
  `${dataToProcess.monitorId.toString()} - Span query found.`,
@@ -1280,6 +1305,7 @@ export default class MonitorResourceUtil {
1280
1305
  await MetricMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
1281
1306
  dataToProcess: input.dataToProcess,
1282
1307
  criteriaFilter: input.criteriaFilter,
1308
+ monitorStep: input.monitorStep,
1283
1309
  });
1284
1310
 
1285
1311
  if (logMonitorResult) {
@@ -11,6 +11,10 @@ export default class StreamUtil {
11
11
  const chunks: Array<any> = [];
12
12
 
13
13
  stream.on("data", (chunk: any) => {
14
+ if (Array.isArray(chunk) && chunk.length === 0) {
15
+ return;
16
+ }
17
+
14
18
  chunks.push(Buffer.from(chunk));
15
19
  });
16
20
  stream.on("end", () => {
package/Types/Date.ts CHANGED
@@ -9,6 +9,15 @@ import Timezone from "./Timezone";
9
9
  export const Moment: typeof moment = moment;
10
10
 
11
11
  export default class OneUptimeDate {
12
+ public static getInBetweenDatesAsFormattedString(
13
+ inBetween: InBetween<Date>,
14
+ ): string {
15
+ return (
16
+ this.getDateAsFormattedString(inBetween.startValue) +
17
+ " - " +
18
+ this.getDateAsFormattedString(inBetween.endValue)
19
+ );
20
+ }
12
21
  public static convertMinutesToMilliseconds(minutes: number): number {
13
22
  return minutes * 60 * 1000;
14
23
  }
@@ -0,0 +1,6 @@
1
+ import InBetween from "Common/Types/BaseDatabase/InBetween";
2
+ import MetricsViewConfig from "Common/Types/Metrics/MetricsViewConfig";
3
+
4
+ export default interface MetricViewData extends MetricsViewConfig {
5
+ startAndEndDate: InBetween<Date> | null;
6
+ }
@@ -47,10 +47,6 @@ export interface ServerMonitorOptions {
47
47
  diskPath?: string | undefined;
48
48
  }
49
49
 
50
- export interface MetricMonitorOptions {
51
- metricAlias?: string | undefined;
52
- }
53
-
54
50
  export enum EvaluateOverTimeType {
55
51
  Average = "Average",
56
52
  Sum = "Sum",
@@ -60,6 +56,11 @@ export enum EvaluateOverTimeType {
60
56
  AnyValue = "Any Value",
61
57
  }
62
58
 
59
+ export interface MetricMonitorOptions {
60
+ metricAlias?: string | undefined;
61
+ metricAggregationType?: EvaluateOverTimeType | undefined;
62
+ }
63
+
63
64
  export enum EvaluateOverTimeMinutes {
64
65
  TwoMinutes = "2",
65
66
  ThreeMinutes = "3",
@@ -10,6 +10,7 @@ import {
10
10
  CriteriaFilter,
11
11
  FilterCondition,
12
12
  FilterType,
13
+ EvaluateOverTimeType,
13
14
  } from "./CriteriaFilter";
14
15
  import { CriteriaIncident } from "./CriteriaIncident";
15
16
  import MonitorType from "./MonitorType";
@@ -129,7 +130,9 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
129
130
  {
130
131
  checkOn: CheckOn.MetricValue,
131
132
  filterType: FilterType.GreaterThan,
133
+
132
134
  metricMonitorOptions: {
135
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
133
136
  metricAlias:
134
137
  arg.metricOptions &&
135
138
  arg.metricOptions.metricAliases &&
@@ -466,6 +469,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
466
469
  checkOn: CheckOn.MetricValue,
467
470
  filterType: FilterType.EqualTo,
468
471
  metricMonitorOptions: {
472
+ metricAggregationType: EvaluateOverTimeType.AnyValue,
469
473
  metricAlias:
470
474
  arg.metricOptions &&
471
475
  arg.metricOptions.metricAliases &&
@@ -115,12 +115,12 @@ export class MonitorTypeHelper {
115
115
  description:
116
116
  "This monitor type lets you monitor traces from any source.",
117
117
  },
118
- // {
119
- // monitorType: MonitorType.Metrics,
120
- // title: "Metrics",
121
- // description:
122
- // "This monitor type lets you monitor metrics from any source.",
123
- // },
118
+ {
119
+ monitorType: MonitorType.Metrics,
120
+ title: "Metrics",
121
+ description:
122
+ "This monitor type lets you monitor metrics from any source.",
123
+ },
124
124
  ];
125
125
 
126
126
  return monitorTypeProps;
@@ -1,10 +1,11 @@
1
1
  import Log from "../../Models/AnalyticsModels/Log";
2
- import Metric from "../../Models/AnalyticsModels/Metric";
3
2
  import Span from "../../Models/AnalyticsModels/Span";
4
3
  import Query from "../BaseDatabase/Query";
4
+ import MetricViewData from "../Metrics/MetricViewData";
5
5
  import TelemetryType from "./TelemetryType";
6
6
 
7
7
  export interface TelemetryQuery {
8
8
  telemetryType: TelemetryType;
9
- telemetryQuery: Query<Log> | Query<Span> | Query<Metric>;
9
+ telemetryQuery: Query<Log> | Query<Span> | null;
10
+ metricViewData: MetricViewData | null;
10
11
  }
@@ -1,3 +1,4 @@
1
+ import OneUptimeDate from "../../../../Types/Date";
1
2
  import NotImplementedException from "../../../../Types/Exception/NotImplementedException";
2
3
  import XAxisMaxMin from "../Types/XAxis/XAxisMaxMin";
3
4
  import XAxisPrecision from "../Types/XAxis/XAxisPrecision";
@@ -15,8 +16,8 @@ export default class XAxisUtil {
15
16
  throw new NotImplementedException();
16
17
  }
17
18
 
18
- const startDate: Date = data.xAxisMin as Date;
19
- const endDate: Date = data.xAxisMax as Date;
19
+ const startDate: Date = OneUptimeDate.fromString(data.xAxisMin as Date);
20
+ const endDate: Date = OneUptimeDate.fromString(data.xAxisMax as Date);
20
21
 
21
22
  const totalMilliseconds: number = endDate.getTime() - startDate.getTime();
22
23
  const totalSeconds: number = totalMilliseconds / 1000;
@@ -1,10 +1,9 @@
1
- import React, { FunctionComponent, ReactElement, useEffect } from "react";
1
+ import React, { FunctionComponent, ReactElement } from "react";
2
2
  import Dropdown, { DropdownOption, DropdownValue } from "../Dropdown/Dropdown";
3
3
  import DropdownUtil from "../../Utils/Dropdown";
4
4
  import RollingTime from "../../../Types/RollingTime/RollingTime";
5
5
 
6
6
  export interface ComponentProps {
7
- initialValue?: undefined | RollingTime;
8
7
  value?: RollingTime | undefined;
9
8
  onChange?: undefined | ((value: RollingTime) => void);
10
9
  }
@@ -12,43 +11,31 @@ export interface ComponentProps {
12
11
  const RollingTimePicker: FunctionComponent<ComponentProps> = (
13
12
  props: ComponentProps,
14
13
  ): ReactElement => {
15
- const [rollingTime, setRollingTime] = React.useState<RollingTime>(
16
- props.initialValue || RollingTime.Past1Minute,
17
- );
18
-
19
14
  const dropdownOptions: Array<DropdownOption> =
20
15
  DropdownUtil.getDropdownOptionsFromEnum(RollingTime);
21
16
 
22
- useEffect(() => {
23
- if (props.value) {
24
- setRollingTime(props.value);
25
- }
26
- }, [props.value]);
27
-
28
- useEffect(() => {
29
- if (rollingTime) {
30
- props.onChange && props.onChange(rollingTime);
31
- }
32
- }, [rollingTime]);
33
-
34
17
  const currentDropdownOption: DropdownOption | undefined =
35
18
  dropdownOptions.find((option: DropdownOption) => {
36
- return option.value === rollingTime;
19
+ return option.value === props.value;
37
20
  });
38
21
 
39
22
  return (
40
23
  <Dropdown
41
24
  value={currentDropdownOption}
42
25
  onChange={(value: DropdownValue | Array<DropdownValue> | null) => {
43
- if (value === null) {
44
- return;
26
+ let selectedOption: DropdownOption = dropdownOptions.find(
27
+ (option: DropdownOption) => {
28
+ return option.value === value;
29
+ },
30
+ ) as DropdownOption;
31
+
32
+ if (!selectedOption) {
33
+ selectedOption = dropdownOptions[0] as DropdownOption;
45
34
  }
46
35
 
47
- if (Array.isArray(value)) {
48
- return;
36
+ if (props.onChange) {
37
+ props.onChange(selectedOption.value as RollingTime);
49
38
  }
50
-
51
- setRollingTime(value as RollingTime);
52
39
  }}
53
40
  options={dropdownOptions}
54
41
  />
@@ -69,6 +69,7 @@ export const SubscriptionPlans = SubscriptionPlan.getSubscriptionPlans(getAllEnv
69
69
  export const AnalyticsKey = process.env["ANALYTICS_KEY"] || "";
70
70
  export const AnalyticsHost = process.env["ANALYTICS_HOST"] || "";
71
71
  export const DisableAutomaticIncidentCreation = process.env["DISABLE_AUTOMATIC_INCIDENT_CREATION"] === "true";
72
+ export const DisableAutomaticAlertCreation = process.env["DISABLE_AUTOMATIC_ALERT_CREATION"] === "true";
72
73
  export const ClickhouseHost = Hostname.fromString(process.env["CLICKHOUSE_HOST"] || "clickhouse");
73
74
  export const StatusPageCNameRecord = process.env["STATUS_PAGE_CNAME_RECORD"] || "";
74
75
  export const ClickhousePort = new Port(process.env["CLICKHOUSE_PORT"] || "8123");
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
@@ -211,6 +211,9 @@ export default class AnalyticsDatabaseService extends BaseService {
211
211
  }
212
212
  }
213
213
  convertSelectReturnedDataToJson(strResult, columns) {
214
+ if (!strResult || !strResult.trim()) {
215
+ return [];
216
+ }
214
217
  const jsonItems = [];
215
218
  const rows = strResult.split("\n");
216
219
  for (const row of rows) {