@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
@@ -0,0 +1,44 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+ import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
3
+
4
+ export class DropServiceDependencyTable1779277271302
5
+ implements MigrationInterface
6
+ {
7
+ public name = "DropServiceDependencyTable1779277271302";
8
+
9
+ @CaptureSpan()
10
+ public async up(queryRunner: QueryRunner): Promise<void> {
11
+ await queryRunner.query(`DROP TABLE IF EXISTS "ServiceDependency" CASCADE`);
12
+ }
13
+
14
+ @CaptureSpan()
15
+ public async down(queryRunner: QueryRunner): Promise<void> {
16
+ await queryRunner.query(
17
+ `CREATE TABLE "ServiceDependency" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "serviceId" uuid NOT NULL, "dependencyServiceId" uuid NOT NULL, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_f4c8003faa6daec34a5b97f88e8" PRIMARY KEY ("_id"))`,
18
+ );
19
+ await queryRunner.query(
20
+ `CREATE INDEX "IDX_3e2a1ef7e8795a46c2e2e9955c" ON "ServiceDependency" ("projectId")`,
21
+ );
22
+ await queryRunner.query(
23
+ `CREATE INDEX "IDX_3af01e69f3e28ae56a968bbd81" ON "ServiceDependency" ("serviceId")`,
24
+ );
25
+ await queryRunner.query(
26
+ `CREATE INDEX "IDX_c2562045902370ec46091924fc" ON "ServiceDependency" ("dependencyServiceId")`,
27
+ );
28
+ await queryRunner.query(
29
+ `ALTER TABLE "ServiceDependency" ADD CONSTRAINT "FK_3e2a1ef7e8795a46c2e2e9955c2" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
30
+ );
31
+ await queryRunner.query(
32
+ `ALTER TABLE "ServiceDependency" ADD CONSTRAINT "FK_3af01e69f3e28ae56a968bbd812" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
33
+ );
34
+ await queryRunner.query(
35
+ `ALTER TABLE "ServiceDependency" ADD CONSTRAINT "FK_c2562045902370ec46091924fc8" FOREIGN KEY ("dependencyServiceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
36
+ );
37
+ await queryRunner.query(
38
+ `ALTER TABLE "ServiceDependency" ADD CONSTRAINT "FK_cc8c8d41106bebab21d1c69e129" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
39
+ );
40
+ await queryRunner.query(
41
+ `ALTER TABLE "ServiceDependency" ADD CONSTRAINT "FK_feb830e4e4f8259a871105b16e8" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
42
+ );
43
+ }
44
+ }
@@ -0,0 +1,50 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class AddTelemetryRetentionToHostDockerKubernetes1779282769946
4
+ implements MigrationInterface
5
+ {
6
+ public name: string =
7
+ "AddTelemetryRetentionToHostDockerKubernetes1779282769946";
8
+
9
+ public async up(queryRunner: QueryRunner): Promise<void> {
10
+ await queryRunner.query(
11
+ `ALTER TABLE "Host" ADD "retainTelemetryDataForDays" integer`,
12
+ );
13
+ await queryRunner.query(
14
+ `ALTER TABLE "Host" ADD "telemetryRetentionConfig" jsonb`,
15
+ );
16
+ await queryRunner.query(
17
+ `ALTER TABLE "DockerHost" ADD "retainTelemetryDataForDays" integer`,
18
+ );
19
+ await queryRunner.query(
20
+ `ALTER TABLE "DockerHost" ADD "telemetryRetentionConfig" jsonb`,
21
+ );
22
+ await queryRunner.query(
23
+ `ALTER TABLE "KubernetesCluster" ADD "retainTelemetryDataForDays" integer`,
24
+ );
25
+ await queryRunner.query(
26
+ `ALTER TABLE "KubernetesCluster" ADD "telemetryRetentionConfig" jsonb`,
27
+ );
28
+ }
29
+
30
+ public async down(queryRunner: QueryRunner): Promise<void> {
31
+ await queryRunner.query(
32
+ `ALTER TABLE "KubernetesCluster" DROP COLUMN "telemetryRetentionConfig"`,
33
+ );
34
+ await queryRunner.query(
35
+ `ALTER TABLE "KubernetesCluster" DROP COLUMN "retainTelemetryDataForDays"`,
36
+ );
37
+ await queryRunner.query(
38
+ `ALTER TABLE "DockerHost" DROP COLUMN "telemetryRetentionConfig"`,
39
+ );
40
+ await queryRunner.query(
41
+ `ALTER TABLE "DockerHost" DROP COLUMN "retainTelemetryDataForDays"`,
42
+ );
43
+ await queryRunner.query(
44
+ `ALTER TABLE "Host" DROP COLUMN "telemetryRetentionConfig"`,
45
+ );
46
+ await queryRunner.query(
47
+ `ALTER TABLE "Host" DROP COLUMN "retainTelemetryDataForDays"`,
48
+ );
49
+ }
50
+ }
@@ -0,0 +1,253 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class AttachKubernetesAndDockerToIncidentAndAlert1779302536475
4
+ implements MigrationInterface
5
+ {
6
+ public name: string =
7
+ "AttachKubernetesAndDockerToIncidentAndAlert1779302536475";
8
+
9
+ public async up(queryRunner: QueryRunner): Promise<void> {
10
+ // IncidentKubernetesCluster
11
+ await queryRunner.query(
12
+ `CREATE TABLE "IncidentKubernetesCluster" ("incidentId" uuid NOT NULL, "kubernetesClusterId" uuid NOT NULL, CONSTRAINT "PK_0706004605b87701df3fb2fc4fb" PRIMARY KEY ("incidentId", "kubernetesClusterId"))`,
13
+ );
14
+ await queryRunner.query(
15
+ `CREATE INDEX "IDX_4d49468cbea4ece4fe7e2ecf3f" ON "IncidentKubernetesCluster" ("incidentId") `,
16
+ );
17
+ await queryRunner.query(
18
+ `CREATE INDEX "IDX_cb313f51853d6178c1ea498405" ON "IncidentKubernetesCluster" ("kubernetesClusterId") `,
19
+ );
20
+ await queryRunner.query(
21
+ `ALTER TABLE "IncidentKubernetesCluster" ADD CONSTRAINT "FK_4d49468cbea4ece4fe7e2ecf3f8" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
22
+ );
23
+ await queryRunner.query(
24
+ `ALTER TABLE "IncidentKubernetesCluster" ADD CONSTRAINT "FK_cb313f51853d6178c1ea498405e" FOREIGN KEY ("kubernetesClusterId") REFERENCES "KubernetesCluster"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
25
+ );
26
+
27
+ // IncidentKubernetesResource
28
+ await queryRunner.query(
29
+ `CREATE TABLE "IncidentKubernetesResource" ("incidentId" uuid NOT NULL, "kubernetesResourceId" uuid NOT NULL, CONSTRAINT "PK_2d7d43459ccef0edddd433dab0f" PRIMARY KEY ("incidentId", "kubernetesResourceId"))`,
30
+ );
31
+ await queryRunner.query(
32
+ `CREATE INDEX "IDX_706dad5f9b04e57516310bb107" ON "IncidentKubernetesResource" ("incidentId") `,
33
+ );
34
+ await queryRunner.query(
35
+ `CREATE INDEX "IDX_bd41e6a5b7368685534190f8e8" ON "IncidentKubernetesResource" ("kubernetesResourceId") `,
36
+ );
37
+ await queryRunner.query(
38
+ `ALTER TABLE "IncidentKubernetesResource" ADD CONSTRAINT "FK_706dad5f9b04e57516310bb1076" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
39
+ );
40
+ await queryRunner.query(
41
+ `ALTER TABLE "IncidentKubernetesResource" ADD CONSTRAINT "FK_bd41e6a5b7368685534190f8e85" FOREIGN KEY ("kubernetesResourceId") REFERENCES "KubernetesResource"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
42
+ );
43
+
44
+ // IncidentKubernetesContainer
45
+ await queryRunner.query(
46
+ `CREATE TABLE "IncidentKubernetesContainer" ("incidentId" uuid NOT NULL, "kubernetesContainerId" uuid NOT NULL, CONSTRAINT "PK_96c823347cee097c4c99d60d472" PRIMARY KEY ("incidentId", "kubernetesContainerId"))`,
47
+ );
48
+ await queryRunner.query(
49
+ `CREATE INDEX "IDX_318c277a133ab782087eee5a93" ON "IncidentKubernetesContainer" ("incidentId") `,
50
+ );
51
+ await queryRunner.query(
52
+ `CREATE INDEX "IDX_411d29efab26561877b148bb21" ON "IncidentKubernetesContainer" ("kubernetesContainerId") `,
53
+ );
54
+ await queryRunner.query(
55
+ `ALTER TABLE "IncidentKubernetesContainer" ADD CONSTRAINT "FK_318c277a133ab782087eee5a93b" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
56
+ );
57
+ await queryRunner.query(
58
+ `ALTER TABLE "IncidentKubernetesContainer" ADD CONSTRAINT "FK_411d29efab26561877b148bb218" FOREIGN KEY ("kubernetesContainerId") REFERENCES "KubernetesContainer"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
59
+ );
60
+
61
+ // IncidentDockerHost
62
+ await queryRunner.query(
63
+ `CREATE TABLE "IncidentDockerHost" ("incidentId" uuid NOT NULL, "dockerHostId" uuid NOT NULL, CONSTRAINT "PK_56a970e60a6af0ae3bc03952a82" PRIMARY KEY ("incidentId", "dockerHostId"))`,
64
+ );
65
+ await queryRunner.query(
66
+ `CREATE INDEX "IDX_364b7b272015813b8ee02314c4" ON "IncidentDockerHost" ("incidentId") `,
67
+ );
68
+ await queryRunner.query(
69
+ `CREATE INDEX "IDX_9761ce8eb83f4d63d7fef00a55" ON "IncidentDockerHost" ("dockerHostId") `,
70
+ );
71
+ await queryRunner.query(
72
+ `ALTER TABLE "IncidentDockerHost" ADD CONSTRAINT "FK_364b7b272015813b8ee02314c45" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
73
+ );
74
+ await queryRunner.query(
75
+ `ALTER TABLE "IncidentDockerHost" ADD CONSTRAINT "FK_9761ce8eb83f4d63d7fef00a55c" FOREIGN KEY ("dockerHostId") REFERENCES "DockerHost"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
76
+ );
77
+
78
+ // IncidentDockerResource
79
+ await queryRunner.query(
80
+ `CREATE TABLE "IncidentDockerResource" ("incidentId" uuid NOT NULL, "dockerResourceId" uuid NOT NULL, CONSTRAINT "PK_5c1f59bafc8278da53767c2aeae" PRIMARY KEY ("incidentId", "dockerResourceId"))`,
81
+ );
82
+ await queryRunner.query(
83
+ `CREATE INDEX "IDX_5a1cf0cb50fec5135cfd715e2c" ON "IncidentDockerResource" ("incidentId") `,
84
+ );
85
+ await queryRunner.query(
86
+ `CREATE INDEX "IDX_c90832cd0bce96661ae3e3652c" ON "IncidentDockerResource" ("dockerResourceId") `,
87
+ );
88
+ await queryRunner.query(
89
+ `ALTER TABLE "IncidentDockerResource" ADD CONSTRAINT "FK_5a1cf0cb50fec5135cfd715e2cb" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
90
+ );
91
+ await queryRunner.query(
92
+ `ALTER TABLE "IncidentDockerResource" ADD CONSTRAINT "FK_c90832cd0bce96661ae3e3652cc" FOREIGN KEY ("dockerResourceId") REFERENCES "DockerResource"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
93
+ );
94
+
95
+ // AlertKubernetesCluster
96
+ await queryRunner.query(
97
+ `CREATE TABLE "AlertKubernetesCluster" ("alertId" uuid NOT NULL, "kubernetesClusterId" uuid NOT NULL, CONSTRAINT "PK_36951c4b963d30a51d49db2f185" PRIMARY KEY ("alertId", "kubernetesClusterId"))`,
98
+ );
99
+ await queryRunner.query(
100
+ `CREATE INDEX "IDX_9c59dd1fbaa2623c55147588fa" ON "AlertKubernetesCluster" ("alertId") `,
101
+ );
102
+ await queryRunner.query(
103
+ `CREATE INDEX "IDX_b880dd9641b488d37e9c4dbc96" ON "AlertKubernetesCluster" ("kubernetesClusterId") `,
104
+ );
105
+ await queryRunner.query(
106
+ `ALTER TABLE "AlertKubernetesCluster" ADD CONSTRAINT "FK_9c59dd1fbaa2623c55147588fa4" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
107
+ );
108
+ await queryRunner.query(
109
+ `ALTER TABLE "AlertKubernetesCluster" ADD CONSTRAINT "FK_b880dd9641b488d37e9c4dbc967" FOREIGN KEY ("kubernetesClusterId") REFERENCES "KubernetesCluster"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
110
+ );
111
+
112
+ // AlertKubernetesResource
113
+ await queryRunner.query(
114
+ `CREATE TABLE "AlertKubernetesResource" ("alertId" uuid NOT NULL, "kubernetesResourceId" uuid NOT NULL, CONSTRAINT "PK_55c136562d0b3ca986eedd20344" PRIMARY KEY ("alertId", "kubernetesResourceId"))`,
115
+ );
116
+ await queryRunner.query(
117
+ `CREATE INDEX "IDX_09847045f3b90d01b5d5116a27" ON "AlertKubernetesResource" ("alertId") `,
118
+ );
119
+ await queryRunner.query(
120
+ `CREATE INDEX "IDX_04479f7cd61764c417284364e4" ON "AlertKubernetesResource" ("kubernetesResourceId") `,
121
+ );
122
+ await queryRunner.query(
123
+ `ALTER TABLE "AlertKubernetesResource" ADD CONSTRAINT "FK_09847045f3b90d01b5d5116a278" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
124
+ );
125
+ await queryRunner.query(
126
+ `ALTER TABLE "AlertKubernetesResource" ADD CONSTRAINT "FK_04479f7cd61764c417284364e49" FOREIGN KEY ("kubernetesResourceId") REFERENCES "KubernetesResource"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
127
+ );
128
+
129
+ // AlertKubernetesContainer
130
+ await queryRunner.query(
131
+ `CREATE TABLE "AlertKubernetesContainer" ("alertId" uuid NOT NULL, "kubernetesContainerId" uuid NOT NULL, CONSTRAINT "PK_5004da87e6cee38c2cdce1c015b" PRIMARY KEY ("alertId", "kubernetesContainerId"))`,
132
+ );
133
+ await queryRunner.query(
134
+ `CREATE INDEX "IDX_e5e3b19d56842d98ad736f2451" ON "AlertKubernetesContainer" ("alertId") `,
135
+ );
136
+ await queryRunner.query(
137
+ `CREATE INDEX "IDX_cc7bd03e0d9fec67856319959b" ON "AlertKubernetesContainer" ("kubernetesContainerId") `,
138
+ );
139
+ await queryRunner.query(
140
+ `ALTER TABLE "AlertKubernetesContainer" ADD CONSTRAINT "FK_e5e3b19d56842d98ad736f2451e" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
141
+ );
142
+ await queryRunner.query(
143
+ `ALTER TABLE "AlertKubernetesContainer" ADD CONSTRAINT "FK_cc7bd03e0d9fec67856319959be" FOREIGN KEY ("kubernetesContainerId") REFERENCES "KubernetesContainer"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
144
+ );
145
+
146
+ // AlertDockerHost
147
+ await queryRunner.query(
148
+ `CREATE TABLE "AlertDockerHost" ("alertId" uuid NOT NULL, "dockerHostId" uuid NOT NULL, CONSTRAINT "PK_12c730ea1126a0cccde73ce819e" PRIMARY KEY ("alertId", "dockerHostId"))`,
149
+ );
150
+ await queryRunner.query(
151
+ `CREATE INDEX "IDX_2b33c4643132be69e65dc48653" ON "AlertDockerHost" ("alertId") `,
152
+ );
153
+ await queryRunner.query(
154
+ `CREATE INDEX "IDX_e98f39fecd1bc955015882ca34" ON "AlertDockerHost" ("dockerHostId") `,
155
+ );
156
+ await queryRunner.query(
157
+ `ALTER TABLE "AlertDockerHost" ADD CONSTRAINT "FK_2b33c4643132be69e65dc48653c" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
158
+ );
159
+ await queryRunner.query(
160
+ `ALTER TABLE "AlertDockerHost" ADD CONSTRAINT "FK_e98f39fecd1bc955015882ca34b" FOREIGN KEY ("dockerHostId") REFERENCES "DockerHost"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
161
+ );
162
+
163
+ // AlertDockerResource
164
+ await queryRunner.query(
165
+ `CREATE TABLE "AlertDockerResource" ("alertId" uuid NOT NULL, "dockerResourceId" uuid NOT NULL, CONSTRAINT "PK_60dbce6b63a1cac67178bbb3998" PRIMARY KEY ("alertId", "dockerResourceId"))`,
166
+ );
167
+ await queryRunner.query(
168
+ `CREATE INDEX "IDX_8843cfc9ef7118e39a40d32548" ON "AlertDockerResource" ("alertId") `,
169
+ );
170
+ await queryRunner.query(
171
+ `CREATE INDEX "IDX_c781b3411915ba016ea3fc30fd" ON "AlertDockerResource" ("dockerResourceId") `,
172
+ );
173
+ await queryRunner.query(
174
+ `ALTER TABLE "AlertDockerResource" ADD CONSTRAINT "FK_8843cfc9ef7118e39a40d325489" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
175
+ );
176
+ await queryRunner.query(
177
+ `ALTER TABLE "AlertDockerResource" ADD CONSTRAINT "FK_c781b3411915ba016ea3fc30fd3" FOREIGN KEY ("dockerResourceId") REFERENCES "DockerResource"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
178
+ );
179
+ }
180
+
181
+ public async down(queryRunner: QueryRunner): Promise<void> {
182
+ await queryRunner.query(
183
+ `ALTER TABLE "AlertDockerResource" DROP CONSTRAINT "FK_c781b3411915ba016ea3fc30fd3"`,
184
+ );
185
+ await queryRunner.query(
186
+ `ALTER TABLE "AlertDockerResource" DROP CONSTRAINT "FK_8843cfc9ef7118e39a40d325489"`,
187
+ );
188
+ await queryRunner.query(
189
+ `ALTER TABLE "AlertDockerHost" DROP CONSTRAINT "FK_e98f39fecd1bc955015882ca34b"`,
190
+ );
191
+ await queryRunner.query(
192
+ `ALTER TABLE "AlertDockerHost" DROP CONSTRAINT "FK_2b33c4643132be69e65dc48653c"`,
193
+ );
194
+ await queryRunner.query(
195
+ `ALTER TABLE "AlertKubernetesContainer" DROP CONSTRAINT "FK_cc7bd03e0d9fec67856319959be"`,
196
+ );
197
+ await queryRunner.query(
198
+ `ALTER TABLE "AlertKubernetesContainer" DROP CONSTRAINT "FK_e5e3b19d56842d98ad736f2451e"`,
199
+ );
200
+ await queryRunner.query(
201
+ `ALTER TABLE "AlertKubernetesResource" DROP CONSTRAINT "FK_04479f7cd61764c417284364e49"`,
202
+ );
203
+ await queryRunner.query(
204
+ `ALTER TABLE "AlertKubernetesResource" DROP CONSTRAINT "FK_09847045f3b90d01b5d5116a278"`,
205
+ );
206
+ await queryRunner.query(
207
+ `ALTER TABLE "AlertKubernetesCluster" DROP CONSTRAINT "FK_b880dd9641b488d37e9c4dbc967"`,
208
+ );
209
+ await queryRunner.query(
210
+ `ALTER TABLE "AlertKubernetesCluster" DROP CONSTRAINT "FK_9c59dd1fbaa2623c55147588fa4"`,
211
+ );
212
+ await queryRunner.query(
213
+ `ALTER TABLE "IncidentDockerResource" DROP CONSTRAINT "FK_c90832cd0bce96661ae3e3652cc"`,
214
+ );
215
+ await queryRunner.query(
216
+ `ALTER TABLE "IncidentDockerResource" DROP CONSTRAINT "FK_5a1cf0cb50fec5135cfd715e2cb"`,
217
+ );
218
+ await queryRunner.query(
219
+ `ALTER TABLE "IncidentDockerHost" DROP CONSTRAINT "FK_9761ce8eb83f4d63d7fef00a55c"`,
220
+ );
221
+ await queryRunner.query(
222
+ `ALTER TABLE "IncidentDockerHost" DROP CONSTRAINT "FK_364b7b272015813b8ee02314c45"`,
223
+ );
224
+ await queryRunner.query(
225
+ `ALTER TABLE "IncidentKubernetesContainer" DROP CONSTRAINT "FK_411d29efab26561877b148bb218"`,
226
+ );
227
+ await queryRunner.query(
228
+ `ALTER TABLE "IncidentKubernetesContainer" DROP CONSTRAINT "FK_318c277a133ab782087eee5a93b"`,
229
+ );
230
+ await queryRunner.query(
231
+ `ALTER TABLE "IncidentKubernetesResource" DROP CONSTRAINT "FK_bd41e6a5b7368685534190f8e85"`,
232
+ );
233
+ await queryRunner.query(
234
+ `ALTER TABLE "IncidentKubernetesResource" DROP CONSTRAINT "FK_706dad5f9b04e57516310bb1076"`,
235
+ );
236
+ await queryRunner.query(
237
+ `ALTER TABLE "IncidentKubernetesCluster" DROP CONSTRAINT "FK_cb313f51853d6178c1ea498405e"`,
238
+ );
239
+ await queryRunner.query(
240
+ `ALTER TABLE "IncidentKubernetesCluster" DROP CONSTRAINT "FK_4d49468cbea4ece4fe7e2ecf3f8"`,
241
+ );
242
+ await queryRunner.query(`DROP TABLE "AlertDockerResource"`);
243
+ await queryRunner.query(`DROP TABLE "AlertDockerHost"`);
244
+ await queryRunner.query(`DROP TABLE "AlertKubernetesContainer"`);
245
+ await queryRunner.query(`DROP TABLE "AlertKubernetesResource"`);
246
+ await queryRunner.query(`DROP TABLE "AlertKubernetesCluster"`);
247
+ await queryRunner.query(`DROP TABLE "IncidentDockerResource"`);
248
+ await queryRunner.query(`DROP TABLE "IncidentDockerHost"`);
249
+ await queryRunner.query(`DROP TABLE "IncidentKubernetesContainer"`);
250
+ await queryRunner.query(`DROP TABLE "IncidentKubernetesResource"`);
251
+ await queryRunner.query(`DROP TABLE "IncidentKubernetesCluster"`);
252
+ }
253
+ }
@@ -0,0 +1,60 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+
3
+ export class AttachServiceToIncidentAndAlert1779303924241
4
+ implements MigrationInterface
5
+ {
6
+ public name: string = "AttachServiceToIncidentAndAlert1779303924241";
7
+
8
+ public async up(queryRunner: QueryRunner): Promise<void> {
9
+ // IncidentService
10
+ await queryRunner.query(
11
+ `CREATE TABLE "IncidentService" ("incidentId" uuid NOT NULL, "serviceId" uuid NOT NULL, CONSTRAINT "PK_f4278c4ad966e1388f6aa832b98" PRIMARY KEY ("incidentId", "serviceId"))`,
12
+ );
13
+ await queryRunner.query(
14
+ `CREATE INDEX "IDX_9b8061de368e0c38bf78fc1412" ON "IncidentService" ("incidentId") `,
15
+ );
16
+ await queryRunner.query(
17
+ `CREATE INDEX "IDX_780433e4b5ce2df00b7dc2b30b" ON "IncidentService" ("serviceId") `,
18
+ );
19
+ await queryRunner.query(
20
+ `ALTER TABLE "IncidentService" ADD CONSTRAINT "FK_9b8061de368e0c38bf78fc1412d" FOREIGN KEY ("incidentId") REFERENCES "Incident"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
21
+ );
22
+ await queryRunner.query(
23
+ `ALTER TABLE "IncidentService" ADD CONSTRAINT "FK_780433e4b5ce2df00b7dc2b30b6" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
24
+ );
25
+
26
+ // AlertService
27
+ await queryRunner.query(
28
+ `CREATE TABLE "AlertService" ("alertId" uuid NOT NULL, "serviceId" uuid NOT NULL, CONSTRAINT "PK_eb1648d9ffb96bf6c38d90c4293" PRIMARY KEY ("alertId", "serviceId"))`,
29
+ );
30
+ await queryRunner.query(
31
+ `CREATE INDEX "IDX_f250e1b41b406c65d007cc08a9" ON "AlertService" ("alertId") `,
32
+ );
33
+ await queryRunner.query(
34
+ `CREATE INDEX "IDX_c93eaf768fb41804783e246b12" ON "AlertService" ("serviceId") `,
35
+ );
36
+ await queryRunner.query(
37
+ `ALTER TABLE "AlertService" ADD CONSTRAINT "FK_f250e1b41b406c65d007cc08a9c" FOREIGN KEY ("alertId") REFERENCES "Alert"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
38
+ );
39
+ await queryRunner.query(
40
+ `ALTER TABLE "AlertService" ADD CONSTRAINT "FK_c93eaf768fb41804783e246b129" FOREIGN KEY ("serviceId") REFERENCES "Service"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
41
+ );
42
+ }
43
+
44
+ public async down(queryRunner: QueryRunner): Promise<void> {
45
+ await queryRunner.query(
46
+ `ALTER TABLE "AlertService" DROP CONSTRAINT "FK_c93eaf768fb41804783e246b129"`,
47
+ );
48
+ await queryRunner.query(
49
+ `ALTER TABLE "AlertService" DROP CONSTRAINT "FK_f250e1b41b406c65d007cc08a9c"`,
50
+ );
51
+ await queryRunner.query(
52
+ `ALTER TABLE "IncidentService" DROP CONSTRAINT "FK_780433e4b5ce2df00b7dc2b30b6"`,
53
+ );
54
+ await queryRunner.query(
55
+ `ALTER TABLE "IncidentService" DROP CONSTRAINT "FK_9b8061de368e0c38bf78fc1412d"`,
56
+ );
57
+ await queryRunner.query(`DROP TABLE "AlertService"`);
58
+ await queryRunner.query(`DROP TABLE "IncidentService"`);
59
+ }
60
+ }
@@ -338,6 +338,10 @@ import { AddOnCallDutyPolicyScheduleOwners1778929624633 } from "./1778929624633-
338
338
  import { AddOnCallIncomingCallOwnersAndRules1778931537020 } from "./1778931537020-AddOnCallIncomingCallOwnersAndRules";
339
339
  import { IncreaseSmtpUsernameLength1779125489830 } from "./1779125489830-IncreaseSmtpUsernameLength";
340
340
  import { AddTelemetryRetentionConfig1779199346010 } from "./1779199346010-AddTelemetryRetentionConfig";
341
+ import { DropServiceDependencyTable1779277271302 } from "./1779277271302-DropServiceDependencyTable";
342
+ import { AddTelemetryRetentionToHostDockerKubernetes1779282769946 } from "./1779282769946-AddTelemetryRetentionToHostDockerKubernetes";
343
+ import { AttachKubernetesAndDockerToIncidentAndAlert1779302536475 } from "./1779302536475-AttachKubernetesAndDockerToIncidentAndAlert";
344
+ import { AttachServiceToIncidentAndAlert1779303924241 } from "./1779303924241-AttachServiceToIncidentAndAlert";
341
345
  export default [
342
346
  InitialMigration,
343
347
  MigrationName1717678334852,
@@ -679,4 +683,8 @@ export default [
679
683
  AddOnCallIncomingCallOwnersAndRules1778931537020,
680
684
  IncreaseSmtpUsernameLength1779125489830,
681
685
  AddTelemetryRetentionConfig1779199346010,
686
+ DropServiceDependencyTable1779277271302,
687
+ AddTelemetryRetentionToHostDockerKubernetes1779282769946,
688
+ AttachKubernetesAndDockerToIncidentAndAlert1779302536475,
689
+ AttachServiceToIncidentAndAlert1779303924241,
682
690
  ];
@@ -7,7 +7,6 @@ import {
7
7
  NextFunction,
8
8
  } from "../../Server/Utils/Express";
9
9
  import TelemetryIngestionKeyService from "../../Server/Services/TelemetryIngestionKeyService";
10
- import TelemetryIngestionKey from "../../Models/DatabaseModels/TelemetryIngestionKey";
11
10
  import Response from "../Utils/Response";
12
11
  import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
13
12
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
@@ -65,45 +64,14 @@ export default class TelemetryIngest {
65
64
  throw new BadRequestException("Missing header: x-oneuptime-token");
66
65
  }
67
66
 
68
- let projectId: ObjectID | undefined = undefined;
69
-
70
- const token: TelemetryIngestionKey | null =
71
- await TelemetryIngestionKeyService.findOneBy({
72
- query: {
73
- secretKey: new ObjectID(oneuptimeToken?.toString() || ""),
74
- },
75
- select: {
76
- projectId: true,
77
- },
78
- props: {
79
- isRoot: true,
80
- },
81
- });
82
-
83
- if (!token) {
84
- logger.error(
85
- "Invalid service token: " + oneuptimeToken,
86
- getLogAttributesFromRequest(req as any),
67
+ const projectId: ObjectID | null =
68
+ await TelemetryIngestionKeyService.getProjectIdFromSecretKey(
69
+ oneuptimeToken.toString(),
87
70
  );
88
71
 
89
- if (isOpenTelemetryAPI) {
90
- /*
91
- * then accept the response and return success.
92
- * do not return error because it causes Otel to retry the request.
93
- */
94
- return Response.sendEmptySuccessResponse(req, res);
95
- }
96
-
97
- throw new BadRequestException(
98
- "Invalid service token: " + oneuptimeToken,
99
- );
100
- }
101
-
102
- projectId = token.projectId as ObjectID;
103
-
104
72
  if (!projectId) {
105
73
  logger.error(
106
- "Project ID not found for service token: " + oneuptimeToken,
74
+ "Invalid service token: " + oneuptimeToken,
107
75
  getLogAttributesFromRequest(req as any),
108
76
  );
109
77
 
@@ -116,11 +84,11 @@ export default class TelemetryIngest {
116
84
  }
117
85
 
118
86
  throw new BadRequestException(
119
- "Project ID not found for service token: " + oneuptimeToken,
87
+ "Invalid service token: " + oneuptimeToken,
120
88
  );
121
89
  }
122
90
 
123
- (req as TelemetryRequest).projectId = projectId as ObjectID;
91
+ (req as TelemetryRequest).projectId = projectId;
124
92
 
125
93
  // Tag span with project context for telemetry ingestion observability
126
94
  SpanUtil.addAttributesToCurrentSpan({
@@ -277,7 +277,6 @@ export default class UserMiddleware {
277
277
  req,
278
278
  tenantId,
279
279
  userId: new ObjectID(userId),
280
- isGlobalLogin: oneuptimeRequest.userAuthorization.isGlobalLogin,
281
280
  });
282
281
 
283
282
  if (userTenantAccessPermission) {
@@ -466,9 +465,8 @@ export default class UserMiddleware {
466
465
  req: ExpressRequest;
467
466
  tenantId: ObjectID;
468
467
  userId: ObjectID;
469
- isGlobalLogin: boolean;
470
468
  }): Promise<UserTenantAccessPermission | null> {
471
- const { req, tenantId, userId, isGlobalLogin } = data;
469
+ const { req, tenantId, userId } = data;
472
470
 
473
471
  const project: Project | null = await ProjectService.findOneById({
474
472
  id: tenantId,
@@ -484,14 +482,6 @@ export default class UserMiddleware {
484
482
  throw new TenantNotFoundException("Invalid tenantId");
485
483
  }
486
484
 
487
- if (!isGlobalLogin) {
488
- if (!UserMiddleware.doesSsoTokenForProjectExist(req, tenantId, userId)) {
489
- throw new NotAuthenticatedException(
490
- "This project requires OneUptime authentication. Please login to access this project.",
491
- );
492
- }
493
- }
494
-
495
485
  if (
496
486
  project.requireSsoForLogin &&
497
487
  !UserMiddleware.doesSsoTokenForProjectExist(req, tenantId, userId)
@@ -38,10 +38,8 @@ import MetricService from "./MetricService";
38
38
  import GlobalConfigService from "./GlobalConfigService";
39
39
  import GlobalConfig from "../../Models/DatabaseModels/GlobalConfig";
40
40
  import OneUptimeDate from "../../Types/Date";
41
- import Metric, {
42
- MetricPointType,
43
- ServiceType,
44
- } from "../../Models/AnalyticsModels/Metric";
41
+ import Metric, { MetricPointType } from "../../Models/AnalyticsModels/Metric";
42
+ import ServiceType from "../../Types/Telemetry/ServiceType";
45
43
  import AlertMetricType from "../../Types/Alerts/AlertMetricType";
46
44
  import AlertFeedService from "./AlertFeedService";
47
45
  import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
@@ -2,6 +2,7 @@ import { WorkflowHostname } from "../EnvironmentConfig";
2
2
  import ClickhouseDatabase, {
3
3
  ClickhouseAppInstance,
4
4
  ClickhouseClient,
5
+ ClickhouseIngestInstance,
5
6
  } from "../Infrastructure/ClickhouseDatabase";
6
7
  import ClusterKeyAuthorization from "../Middleware/ClusterKeyAuthorization";
7
8
  import CountBy from "../Types/AnalyticsDatabase/CountBy";
@@ -67,13 +68,16 @@ export default class AnalyticsDatabaseService<
67
68
  > extends BaseService {
68
69
  public modelType!: { new (): TBaseModel };
69
70
  public database!: ClickhouseDatabase;
71
+ public ingestDatabase!: ClickhouseDatabase;
70
72
  public model!: TBaseModel;
71
73
  public databaseClient!: ClickhouseClient | null;
74
+ public ingestDatabaseClient!: ClickhouseClient | null;
72
75
  public statementGenerator!: StatementGenerator<TBaseModel>;
73
76
 
74
77
  public constructor(data: {
75
78
  modelType: { new (): TBaseModel };
76
79
  database?: ClickhouseDatabase | undefined;
80
+ ingestDatabase?: ClickhouseDatabase | undefined;
77
81
  }) {
78
82
  super();
79
83
  this.modelType = data.modelType;
@@ -84,7 +88,14 @@ export default class AnalyticsDatabaseService<
84
88
  this.database = ClickhouseAppInstance; // default database
85
89
  }
86
90
 
91
+ if (data.ingestDatabase) {
92
+ this.ingestDatabase = data.ingestDatabase;
93
+ } else {
94
+ this.ingestDatabase = ClickhouseIngestInstance;
95
+ }
96
+
87
97
  this.databaseClient = this.database.getDataSource();
98
+ this.ingestDatabaseClient = this.ingestDatabase.getDataSource();
88
99
 
89
100
  this.statementGenerator = new StatementGenerator<TBaseModel>({
90
101
  modelType: this.modelType,
@@ -98,7 +109,7 @@ export default class AnalyticsDatabaseService<
98
109
  return;
99
110
  }
100
111
 
101
- const client: ClickhouseClient = this.getDatabaseClient();
112
+ const client: ClickhouseClient = this.getIngestClient();
102
113
 
103
114
  const tableName: string = this.model.tableName;
104
115
 
@@ -1040,6 +1051,8 @@ export default class AnalyticsDatabaseService<
1040
1051
  public useDefaultDatabase(): void {
1041
1052
  this.database = ClickhouseAppInstance;
1042
1053
  this.databaseClient = this.database.getDataSource();
1054
+ this.ingestDatabase = ClickhouseIngestInstance;
1055
+ this.ingestDatabaseClient = this.ingestDatabase.getDataSource();
1043
1056
  }
1044
1057
 
1045
1058
  @CaptureSpan()
@@ -1100,6 +1113,25 @@ export default class AnalyticsDatabaseService<
1100
1113
  return this.databaseClient;
1101
1114
  }
1102
1115
 
1116
+ private getIngestClient(): ClickhouseClient {
1117
+ if (!this.ingestDatabase) {
1118
+ this.useDefaultDatabase();
1119
+ }
1120
+
1121
+ if (!this.ingestDatabaseClient && this.ingestDatabase) {
1122
+ this.ingestDatabaseClient = this.ingestDatabase.getDataSource();
1123
+ }
1124
+
1125
+ if (!this.ingestDatabaseClient) {
1126
+ throw new Exception(
1127
+ ExceptionCode.DatabaseNotConnectedException,
1128
+ "ClickHouse ingest client is not connected",
1129
+ );
1130
+ }
1131
+
1132
+ return this.ingestDatabaseClient;
1133
+ }
1134
+
1103
1135
  protected async onUpdateSuccess(
1104
1136
  onUpdate: OnUpdate<TBaseModel>,
1105
1137
  _updatedItemIds: Array<ObjectID>
@@ -42,10 +42,8 @@ import MetricService from "./MetricService";
42
42
  import GlobalConfigService from "./GlobalConfigService";
43
43
  import GlobalConfig from "../../Models/DatabaseModels/GlobalConfig";
44
44
  import IncidentMetricType from "../../Types/Incident/IncidentMetricType";
45
- import Metric, {
46
- MetricPointType,
47
- ServiceType,
48
- } from "../../Models/AnalyticsModels/Metric";
45
+ import Metric, { MetricPointType } from "../../Models/AnalyticsModels/Metric";
46
+ import ServiceType from "../../Types/Telemetry/ServiceType";
49
47
  import OneUptimeDate from "../../Types/Date";
50
48
  import TelemetryUtil from "../Utils/Telemetry/Telemetry";
51
49
  import logger, { LogAttributes } from "../Utils/Logger";
@@ -161,7 +161,6 @@ import WorkflowLogService from "./WorkflowLogService";
161
161
  import WorkflowService from "./WorkflowService";
162
162
  import WorkflowVariablesService from "./WorkflowVariableService";
163
163
  import AnalyticsBaseModel from "../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
164
- import ServiceDependencyService from "./ServiceDependencyService";
165
164
  import TelemetryExceptionService from "./TelemetryExceptionService";
166
165
  import ExceptionInstanceService from "./ExceptionInstanceService";
167
166
  import ScheduledMaintenanceTemplateService from "./ScheduledMaintenanceTemplateService";
@@ -388,7 +387,6 @@ const services: Array<BaseService> = [
388
387
  ServiceService,
389
388
  ServiceOwnerTeamService,
390
389
  ServiceOwnerUserService,
391
- ServiceDependencyService,
392
390
  ServiceMonitorService,
393
391
  ServiceCodeRepositoryService,
394
392