@oneuptime/common 10.4.10 → 10.4.12

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 (174) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +47 -1
  2. package/Models/AnalyticsModels/Log.ts +47 -1
  3. package/Models/AnalyticsModels/Metric.ts +1 -7
  4. package/Models/AnalyticsModels/Profile.ts +47 -1
  5. package/Models/AnalyticsModels/ProfileSample.ts +47 -1
  6. package/Models/AnalyticsModels/Span.ts +47 -1
  7. package/Models/DatabaseModels/Alert.ts +332 -0
  8. package/Models/DatabaseModels/DockerHost.ts +83 -0
  9. package/Models/DatabaseModels/Host.ts +83 -0
  10. package/Models/DatabaseModels/Incident.ts +332 -0
  11. package/Models/DatabaseModels/Index.ts +0 -2
  12. package/Models/DatabaseModels/KubernetesCluster.ts +83 -0
  13. package/Models/DatabaseModels/RunbookAgent.ts +16 -2
  14. package/Server/EnvironmentConfig.ts +16 -0
  15. package/Server/Infrastructure/ClickhouseConfig.ts +14 -0
  16. package/Server/Infrastructure/ClickhouseDatabase.ts +20 -3
  17. package/Server/Infrastructure/InMemoryTTLCache.ts +61 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.ts +1 -1
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.ts +44 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.ts +50 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.ts +253 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.ts +60 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  24. package/Server/Middleware/TelemetryIngest.ts +6 -38
  25. package/Server/Middleware/UserAuthorization.ts +1 -11
  26. package/Server/Services/AlertService.ts +2 -4
  27. package/Server/Services/AnalyticsDatabaseService.ts +33 -1
  28. package/Server/Services/IncidentService.ts +2 -4
  29. package/Server/Services/Index.ts +0 -2
  30. package/Server/Services/LogAggregationService.ts +54 -6
  31. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +6 -0
  32. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +1 -0
  33. package/Server/Services/OnCallDutyPolicyScheduleService.ts +17 -0
  34. package/Server/Services/OpenTelemetryIngestService.ts +132 -0
  35. package/Server/Services/TelemetryIngestionKeyService.ts +90 -1
  36. package/Server/Services/TraceAggregationService.ts +83 -8
  37. package/Server/Utils/Monitor/MonitorMetricUtil.ts +2 -4
  38. package/Server/Utils/Telemetry/Telemetry.ts +38 -0
  39. package/Tests/Server/Middleware/UserAuthorization.test.ts +5 -7
  40. package/Types/Dashboard/DashboardComponentType.ts +0 -1
  41. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  42. package/Types/Dashboard/DashboardComponents/DashboardTableComponent.ts +74 -1
  43. package/Types/Dashboard/DashboardTemplates.ts +164 -51
  44. package/Types/Monitor/MonitorType.ts +1 -1
  45. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +36 -9
  46. package/Types/Permission.ts +0 -46
  47. package/Types/Telemetry/ServiceType.ts +19 -0
  48. package/UI/Components/Forms/Validation.ts +2 -2
  49. package/UI/Components/LogsViewer/LogsViewer.tsx +135 -17
  50. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +84 -1
  51. package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -1
  52. package/Utils/Dashboard/Components/DashboardTableComponent.ts +80 -17
  53. package/Utils/Dashboard/Components/Index.ts +0 -7
  54. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +41 -1
  55. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  56. package/build/dist/Models/AnalyticsModels/Log.js +41 -1
  57. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  58. package/build/dist/Models/AnalyticsModels/Metric.js +0 -7
  59. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  60. package/build/dist/Models/AnalyticsModels/Profile.js +41 -1
  61. package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
  62. package/build/dist/Models/AnalyticsModels/ProfileSample.js +41 -1
  63. package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
  64. package/build/dist/Models/AnalyticsModels/Span.js +41 -1
  65. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  66. package/build/dist/Models/DatabaseModels/Alert.js +324 -0
  67. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  68. package/build/dist/Models/DatabaseModels/DockerHost.js +84 -0
  69. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  70. package/build/dist/Models/DatabaseModels/Host.js +84 -0
  71. package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
  72. package/build/dist/Models/DatabaseModels/Incident.js +324 -0
  73. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  74. package/build/dist/Models/DatabaseModels/Index.js +0 -2
  75. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  76. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +84 -0
  77. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  78. package/build/dist/Models/DatabaseModels/RunbookAgent.js +16 -2
  79. package/build/dist/Models/DatabaseModels/RunbookAgent.js.map +1 -1
  80. package/build/dist/Server/EnvironmentConfig.js +8 -0
  81. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  82. package/build/dist/Server/Infrastructure/ClickhouseConfig.js +9 -1
  83. package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
  84. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +12 -3
  85. package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
  86. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js +49 -0
  87. package/build/dist/Server/Infrastructure/InMemoryTTLCache.js.map +1 -0
  88. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js.map +1 -1
  89. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js +42 -0
  90. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js.map +1 -0
  91. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js +22 -0
  92. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js.map +1 -0
  93. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js +100 -0
  94. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779302536475-AttachKubernetesAndDockerToIncidentAndAlert.js.map +1 -0
  95. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js +28 -0
  96. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779303924241-AttachServiceToIncidentAndAlert.js.map +1 -0
  97. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  98. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  99. package/build/dist/Server/Middleware/TelemetryIngest.js +2 -26
  100. package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
  101. package/build/dist/Server/Middleware/UserAuthorization.js +1 -7
  102. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  103. package/build/dist/Server/Services/AlertService.js +2 -1
  104. package/build/dist/Server/Services/AlertService.js.map +1 -1
  105. package/build/dist/Server/Services/AnalyticsDatabaseService.js +23 -2
  106. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  107. package/build/dist/Server/Services/IncidentService.js +2 -1
  108. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  109. package/build/dist/Server/Services/Index.js +0 -2
  110. package/build/dist/Server/Services/Index.js.map +1 -1
  111. package/build/dist/Server/Services/LogAggregationService.js +46 -4
  112. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  113. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +28 -24
  114. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  115. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +1 -1
  116. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  117. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +18 -2
  118. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  119. package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -0
  120. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  121. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +83 -0
  122. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  123. package/build/dist/Server/Services/TraceAggregationService.js +66 -6
  124. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  125. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +2 -1
  126. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  127. package/build/dist/Server/Utils/Telemetry/Telemetry.js +26 -0
  128. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  129. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +3 -7
  130. package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
  131. package/build/dist/Types/Dashboard/DashboardComponentType.js +0 -1
  132. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  133. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  134. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  135. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js +13 -1
  136. package/build/dist/Types/Dashboard/DashboardComponents/DashboardTableComponent.js.map +1 -1
  137. package/build/dist/Types/Dashboard/DashboardTemplates.js +142 -42
  138. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  139. package/build/dist/Types/Monitor/MonitorType.js +1 -1
  140. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  141. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +27 -7
  142. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  143. package/build/dist/Types/Permission.js +0 -40
  144. package/build/dist/Types/Permission.js.map +1 -1
  145. package/build/dist/Types/Telemetry/ServiceType.js +20 -0
  146. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -0
  147. package/build/dist/UI/Components/Forms/Validation.js +2 -2
  148. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  149. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +106 -16
  150. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  151. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +67 -1
  152. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  153. package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
  154. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js +68 -16
  155. package/build/dist/Utils/Dashboard/Components/DashboardTableComponent.js.map +1 -1
  156. package/build/dist/Utils/Dashboard/Components/Index.js +0 -4
  157. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  158. package/package.json +1 -2
  159. package/Models/DatabaseModels/ServiceDependency.ts +0 -529
  160. package/Server/Services/ServiceDependencyService.ts +0 -48
  161. package/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.ts +0 -27
  162. package/Typings/elkjs.d.ts +0 -30
  163. package/UI/Components/Graphs/ServiceDependencyGraph.tsx +0 -286
  164. package/Utils/Dashboard/Components/DashboardHostMetricChartComponent.ts +0 -132
  165. package/build/dist/Models/DatabaseModels/ServiceDependency.js +0 -545
  166. package/build/dist/Models/DatabaseModels/ServiceDependency.js.map +0 -1
  167. package/build/dist/Server/Services/ServiceDependencyService.js +0 -47
  168. package/build/dist/Server/Services/ServiceDependencyService.js.map +0 -1
  169. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js +0 -11
  170. package/build/dist/Types/Dashboard/DashboardComponents/DashboardHostMetricChartComponent.js.map +0 -1
  171. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js +0 -206
  172. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js.map +0 -1
  173. package/build/dist/Utils/Dashboard/Components/DashboardHostMetricChartComponent.js +0 -113
  174. package/build/dist/Utils/Dashboard/Components/DashboardHostMetricChartComponent.js.map +0 -1
@@ -9,6 +9,7 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
9
9
  import ObjectID from "../../Types/ObjectID";
10
10
  import Permission from "../../Types/Permission";
11
11
  import { SpanStatus } from "./Span";
12
+ import ServiceType from "../../Types/Telemetry/ServiceType";
12
13
 
13
14
  export default class ExceptionInstance extends AnalyticsBaseModel {
14
15
  public constructor() {
@@ -44,7 +45,8 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
44
45
  const serviceIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
45
46
  key: "serviceId",
46
47
  title: "Service ID",
47
- description: "ID of the Service which created the log",
48
+ description:
49
+ "ID of the resource the exception belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by serviceType)",
48
50
  required: true,
49
51
  type: TableColumnType.ObjectID,
50
52
  accessControl: {
@@ -69,6 +71,41 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
69
71
  },
70
72
  });
71
73
 
74
+ const serviceTypeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
75
+ key: "serviceType",
76
+ title: "Service Type",
77
+ description:
78
+ "Discriminator for serviceId — tells the read side which resource table to dispatch to",
79
+ required: false,
80
+ type: TableColumnType.Text,
81
+ skipIndex: {
82
+ name: "idx_service_type",
83
+ type: SkipIndexType.Set,
84
+ params: [10],
85
+ granularity: 4,
86
+ },
87
+ accessControl: {
88
+ read: [
89
+ Permission.ProjectOwner,
90
+ Permission.ProjectAdmin,
91
+ Permission.ProjectMember,
92
+ Permission.TelemetryAdmin,
93
+ Permission.TelemetryMember,
94
+ Permission.TelemetryViewer,
95
+ Permission.ReadTelemetryException,
96
+ ],
97
+ create: [
98
+ Permission.ProjectOwner,
99
+ Permission.ProjectAdmin,
100
+ Permission.ProjectMember,
101
+ Permission.TelemetryAdmin,
102
+ Permission.TelemetryMember,
103
+ Permission.CreateTelemetryException,
104
+ ],
105
+ update: [],
106
+ },
107
+ });
108
+
72
109
  const timeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
73
110
  key: "time",
74
111
  title: "Time",
@@ -601,6 +638,7 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
601
638
  tableColumns: [
602
639
  projectIdColumn,
603
640
  serviceIdColumn,
641
+ serviceTypeColumn,
604
642
  timeColumn,
605
643
  timeUnixNanoColumn,
606
644
  exceptionTypeColumn,
@@ -648,6 +686,14 @@ export default class ExceptionInstance extends AnalyticsBaseModel {
648
686
  this.setColumnValue("serviceId", v);
649
687
  }
650
688
 
689
+ public get serviceType(): ServiceType | undefined {
690
+ return this.getColumnValue("serviceType") as ServiceType | undefined;
691
+ }
692
+
693
+ public set serviceType(v: ServiceType | undefined) {
694
+ this.setColumnValue("serviceType", v);
695
+ }
696
+
651
697
  public get time(): Date | undefined {
652
698
  return this.getColumnValue("time") as Date | undefined;
653
699
  }
@@ -13,6 +13,7 @@ import ObjectID from "../../Types/ObjectID";
13
13
  import Permission from "../../Types/Permission";
14
14
  import LogSeverity from "../../Types/Log/LogSeverity";
15
15
  import Service from "../DatabaseModels/Service";
16
+ import ServiceType from "../../Types/Telemetry/ServiceType";
16
17
 
17
18
  @OperationalResource()
18
19
  @OwnedThrough("serviceId", Service)
@@ -50,7 +51,8 @@ export default class Log extends AnalyticsBaseModel {
50
51
  const serviceIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
51
52
  key: "serviceId",
52
53
  title: "Service ID",
53
- description: "ID of the Service which created the log",
54
+ description:
55
+ "ID of the resource the log belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by serviceType)",
54
56
  required: true,
55
57
  type: TableColumnType.ObjectID,
56
58
  accessControl: {
@@ -75,6 +77,41 @@ export default class Log extends AnalyticsBaseModel {
75
77
  },
76
78
  });
77
79
 
80
+ const serviceTypeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
81
+ key: "serviceType",
82
+ title: "Service Type",
83
+ description:
84
+ "Discriminator for serviceId — tells the read side which resource table to dispatch to",
85
+ required: false,
86
+ type: TableColumnType.Text,
87
+ skipIndex: {
88
+ name: "idx_service_type",
89
+ type: SkipIndexType.Set,
90
+ params: [10],
91
+ granularity: 4,
92
+ },
93
+ accessControl: {
94
+ read: [
95
+ Permission.ProjectOwner,
96
+ Permission.ProjectAdmin,
97
+ Permission.ProjectMember,
98
+ Permission.TelemetryAdmin,
99
+ Permission.TelemetryMember,
100
+ Permission.TelemetryViewer,
101
+ Permission.ReadTelemetryServiceLog,
102
+ ],
103
+ create: [
104
+ Permission.ProjectOwner,
105
+ Permission.ProjectAdmin,
106
+ Permission.ProjectMember,
107
+ Permission.TelemetryAdmin,
108
+ Permission.TelemetryMember,
109
+ Permission.CreateTelemetryServiceLog,
110
+ ],
111
+ update: [],
112
+ },
113
+ });
114
+
78
115
  const timeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
79
116
  key: "time",
80
117
  title: "Time",
@@ -506,6 +543,7 @@ export default class Log extends AnalyticsBaseModel {
506
543
  tableColumns: [
507
544
  projectIdColumn,
508
545
  serviceIdColumn,
546
+ serviceTypeColumn,
509
547
  timeColumn,
510
548
  timeUnixNanoColumn,
511
549
  severityTextColumn,
@@ -550,6 +588,14 @@ export default class Log extends AnalyticsBaseModel {
550
588
  this.setColumnValue("serviceId", v);
551
589
  }
552
590
 
591
+ public get serviceType(): ServiceType | undefined {
592
+ return this.getColumnValue("serviceType") as ServiceType | undefined;
593
+ }
594
+
595
+ public set serviceType(v: ServiceType | undefined) {
596
+ this.setColumnValue("serviceType", v);
597
+ }
598
+
553
599
  public set body(v: string | undefined) {
554
600
  this.setColumnValue("body", v);
555
601
  }
@@ -12,6 +12,7 @@ import { JSONObject } from "../../Types/JSON";
12
12
  import ObjectID from "../../Types/ObjectID";
13
13
  import Permission from "../../Types/Permission";
14
14
  import Service from "../DatabaseModels/Service";
15
+ import ServiceType from "../../Types/Telemetry/ServiceType";
15
16
 
16
17
  export enum AggregationTemporality {
17
18
  Delta = "Delta",
@@ -26,13 +27,6 @@ export enum MetricPointType {
26
27
  Summary = "Summary",
27
28
  }
28
29
 
29
- export enum ServiceType {
30
- OpenTelemetry = "OpenTelemetry",
31
- Monitor = "Monitor",
32
- Alert = "Alert",
33
- Incident = "Incident",
34
- }
35
-
36
30
  @OperationalResource()
37
31
  @OwnedThrough("serviceId", Service)
38
32
  export default class Metric extends AnalyticsBaseModel {
@@ -9,6 +9,7 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
9
9
  import { JSONObject } from "../../Types/JSON";
10
10
  import ObjectID from "../../Types/ObjectID";
11
11
  import Permission from "../../Types/Permission";
12
+ import ServiceType from "../../Types/Telemetry/ServiceType";
12
13
 
13
14
  export default class Profile extends AnalyticsBaseModel {
14
15
  public constructor() {
@@ -44,7 +45,8 @@ export default class Profile extends AnalyticsBaseModel {
44
45
  const serviceIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
45
46
  key: "serviceId",
46
47
  title: "Service ID",
47
- description: "ID of the Service which created the profile",
48
+ description:
49
+ "ID of the resource the profile belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by serviceType)",
48
50
  required: true,
49
51
  type: TableColumnType.ObjectID,
50
52
  accessControl: {
@@ -69,6 +71,41 @@ export default class Profile extends AnalyticsBaseModel {
69
71
  },
70
72
  });
71
73
 
74
+ const serviceTypeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
75
+ key: "serviceType",
76
+ title: "Service Type",
77
+ description:
78
+ "Discriminator for serviceId — tells the read side which resource table to dispatch to",
79
+ required: false,
80
+ type: TableColumnType.Text,
81
+ skipIndex: {
82
+ name: "idx_service_type",
83
+ type: SkipIndexType.Set,
84
+ params: [10],
85
+ granularity: 4,
86
+ },
87
+ accessControl: {
88
+ read: [
89
+ Permission.ProjectOwner,
90
+ Permission.ProjectAdmin,
91
+ Permission.ProjectMember,
92
+ Permission.TelemetryAdmin,
93
+ Permission.TelemetryMember,
94
+ Permission.TelemetryViewer,
95
+ Permission.ReadTelemetryServiceProfiles,
96
+ ],
97
+ create: [
98
+ Permission.ProjectOwner,
99
+ Permission.ProjectAdmin,
100
+ Permission.ProjectMember,
101
+ Permission.TelemetryAdmin,
102
+ Permission.TelemetryMember,
103
+ Permission.CreateTelemetryServiceProfiles,
104
+ ],
105
+ update: [],
106
+ },
107
+ });
108
+
72
109
  const profileIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
73
110
  key: "profileId",
74
111
  title: "Profile ID",
@@ -613,6 +650,7 @@ export default class Profile extends AnalyticsBaseModel {
613
650
  tableColumns: [
614
651
  projectIdColumn,
615
652
  serviceIdColumn,
653
+ serviceTypeColumn,
616
654
  profileIdColumn,
617
655
  traceIdColumn,
618
656
  spanIdColumn,
@@ -654,6 +692,14 @@ export default class Profile extends AnalyticsBaseModel {
654
692
  this.setColumnValue("serviceId", v);
655
693
  }
656
694
 
695
+ public get serviceType(): ServiceType | undefined {
696
+ return this.getColumnValue("serviceType") as ServiceType | undefined;
697
+ }
698
+
699
+ public set serviceType(v: ServiceType | undefined) {
700
+ this.setColumnValue("serviceType", v);
701
+ }
702
+
657
703
  public get profileId(): string | undefined {
658
704
  return this.getColumnValue("profileId") as string | undefined;
659
705
  }
@@ -9,6 +9,7 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
9
9
  import { JSONObject } from "../../Types/JSON";
10
10
  import ObjectID from "../../Types/ObjectID";
11
11
  import Permission from "../../Types/Permission";
12
+ import ServiceType from "../../Types/Telemetry/ServiceType";
12
13
 
13
14
  export default class ProfileSample extends AnalyticsBaseModel {
14
15
  public constructor() {
@@ -44,7 +45,8 @@ export default class ProfileSample extends AnalyticsBaseModel {
44
45
  const serviceIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
45
46
  key: "serviceId",
46
47
  title: "Service ID",
47
- description: "ID of the Service which created the profile",
48
+ description:
49
+ "ID of the resource the profile sample belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by serviceType)",
48
50
  required: true,
49
51
  type: TableColumnType.ObjectID,
50
52
  accessControl: {
@@ -69,6 +71,41 @@ export default class ProfileSample extends AnalyticsBaseModel {
69
71
  },
70
72
  });
71
73
 
74
+ const serviceTypeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
75
+ key: "serviceType",
76
+ title: "Service Type",
77
+ description:
78
+ "Discriminator for serviceId — tells the read side which resource table to dispatch to",
79
+ required: false,
80
+ type: TableColumnType.Text,
81
+ skipIndex: {
82
+ name: "idx_service_type",
83
+ type: SkipIndexType.Set,
84
+ params: [10],
85
+ granularity: 4,
86
+ },
87
+ accessControl: {
88
+ read: [
89
+ Permission.ProjectOwner,
90
+ Permission.ProjectAdmin,
91
+ Permission.ProjectMember,
92
+ Permission.TelemetryAdmin,
93
+ Permission.TelemetryMember,
94
+ Permission.TelemetryViewer,
95
+ Permission.ReadTelemetryServiceProfiles,
96
+ ],
97
+ create: [
98
+ Permission.ProjectOwner,
99
+ Permission.ProjectAdmin,
100
+ Permission.ProjectMember,
101
+ Permission.TelemetryAdmin,
102
+ Permission.TelemetryMember,
103
+ Permission.CreateTelemetryServiceProfiles,
104
+ ],
105
+ update: [],
106
+ },
107
+ });
108
+
72
109
  const profileIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
73
110
  key: "profileId",
74
111
  title: "Profile ID",
@@ -475,6 +512,7 @@ export default class ProfileSample extends AnalyticsBaseModel {
475
512
  tableColumns: [
476
513
  projectIdColumn,
477
514
  serviceIdColumn,
515
+ serviceTypeColumn,
478
516
  profileIdColumn,
479
517
  traceIdColumn,
480
518
  spanIdColumn,
@@ -523,6 +561,14 @@ export default class ProfileSample extends AnalyticsBaseModel {
523
561
  this.setColumnValue("serviceId", v);
524
562
  }
525
563
 
564
+ public get serviceType(): ServiceType | undefined {
565
+ return this.getColumnValue("serviceType") as ServiceType | undefined;
566
+ }
567
+
568
+ public set serviceType(v: ServiceType | undefined) {
569
+ this.setColumnValue("serviceType", v);
570
+ }
571
+
526
572
  public get profileId(): string | undefined {
527
573
  return this.getColumnValue("profileId") as string | undefined;
528
574
  }
@@ -12,6 +12,7 @@ import { JSONObject } from "../../Types/JSON";
12
12
  import ObjectID from "../../Types/ObjectID";
13
13
  import Permission from "../../Types/Permission";
14
14
  import Service from "../DatabaseModels/Service";
15
+ import ServiceType from "../../Types/Telemetry/ServiceType";
15
16
 
16
17
  export enum SpanKind {
17
18
  Server = "SPAN_KIND_SERVER",
@@ -81,7 +82,8 @@ export default class Span extends AnalyticsBaseModel {
81
82
  const serviceIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
82
83
  key: "serviceId",
83
84
  title: "Service ID",
84
- description: "ID of the Service which created the log",
85
+ description:
86
+ "ID of the resource the span belongs to (Service / Host / DockerHost / KubernetesCluster / Monitor — disambiguated by serviceType)",
85
87
  required: true,
86
88
  type: TableColumnType.ObjectID,
87
89
  accessControl: {
@@ -106,6 +108,41 @@ export default class Span extends AnalyticsBaseModel {
106
108
  },
107
109
  });
108
110
 
111
+ const serviceTypeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
112
+ key: "serviceType",
113
+ title: "Service Type",
114
+ description:
115
+ "Discriminator for serviceId — tells the read side which resource table to dispatch to",
116
+ required: false,
117
+ type: TableColumnType.Text,
118
+ skipIndex: {
119
+ name: "idx_service_type",
120
+ type: SkipIndexType.Set,
121
+ params: [10],
122
+ granularity: 4,
123
+ },
124
+ accessControl: {
125
+ read: [
126
+ Permission.ProjectOwner,
127
+ Permission.ProjectAdmin,
128
+ Permission.ProjectMember,
129
+ Permission.TelemetryAdmin,
130
+ Permission.TelemetryMember,
131
+ Permission.TelemetryViewer,
132
+ Permission.ReadTelemetryServiceTraces,
133
+ ],
134
+ create: [
135
+ Permission.ProjectOwner,
136
+ Permission.ProjectAdmin,
137
+ Permission.ProjectMember,
138
+ Permission.TelemetryAdmin,
139
+ Permission.TelemetryMember,
140
+ Permission.CreateTelemetryServiceTraces,
141
+ ],
142
+ update: [],
143
+ },
144
+ });
145
+
109
146
  const startTimeColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
110
147
  key: "startTime",
111
148
  title: "Start Time",
@@ -766,6 +803,7 @@ export default class Span extends AnalyticsBaseModel {
766
803
  tableColumns: [
767
804
  projectIdColumn,
768
805
  serviceIdColumn,
806
+ serviceTypeColumn,
769
807
  startTimeColumn,
770
808
  endTimeColumn,
771
809
  startTimeUnixNanoColumn,
@@ -867,6 +905,14 @@ export default class Span extends AnalyticsBaseModel {
867
905
  this.setColumnValue("serviceId", v);
868
906
  }
869
907
 
908
+ public get serviceType(): ServiceType | undefined {
909
+ return this.getColumnValue("serviceType") as ServiceType | undefined;
910
+ }
911
+
912
+ public set serviceType(v: ServiceType | undefined) {
913
+ this.setColumnValue("serviceType", v);
914
+ }
915
+
870
916
  public get startTime(): Date | undefined {
871
917
  return this.getColumnValue("startTime") as Date | undefined;
872
918
  }