@oneuptime/common 10.4.10 → 10.4.11
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.
- package/Models/AnalyticsModels/ExceptionInstance.ts +47 -1
- package/Models/AnalyticsModels/Log.ts +47 -1
- package/Models/AnalyticsModels/Metric.ts +1 -7
- package/Models/AnalyticsModels/Profile.ts +47 -1
- package/Models/AnalyticsModels/ProfileSample.ts +47 -1
- package/Models/AnalyticsModels/Span.ts +47 -1
- package/Models/DatabaseModels/DockerHost.ts +83 -0
- package/Models/DatabaseModels/Host.ts +83 -0
- package/Models/DatabaseModels/Index.ts +0 -2
- package/Models/DatabaseModels/KubernetesCluster.ts +83 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.ts +44 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.ts +50 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/AlertService.ts +2 -4
- package/Server/Services/IncidentService.ts +2 -4
- package/Server/Services/Index.ts +0 -2
- package/Server/Services/LogAggregationService.ts +54 -6
- package/Server/Services/OpenTelemetryIngestService.ts +132 -0
- package/Server/Services/TraceAggregationService.ts +83 -8
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +2 -4
- package/Server/Utils/Telemetry/Telemetry.ts +38 -0
- package/Tests/Server/Middleware/UserAuthorization.test.ts +5 -0
- package/Types/Permission.ts +0 -46
- package/Types/Telemetry/ServiceType.ts +19 -0
- package/UI/Components/Forms/Validation.ts +2 -2
- package/UI/Components/LogsViewer/LogsViewer.tsx +135 -17
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +84 -1
- package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +41 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +41 -1
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +0 -7
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js +41 -1
- package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js +41 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +41 -1
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +84 -0
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Host.js +84 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +0 -2
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js +84 -0
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779277271302-DropServiceDependencyTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779282769946-AddTelemetryRetentionToHostDockerKubernetes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +2 -1
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +2 -1
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +0 -2
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +46 -4
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -0
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +66 -6
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +2 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +26 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +3 -0
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
- package/build/dist/Types/Permission.js +0 -40
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +20 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -0
- package/build/dist/UI/Components/Forms/Validation.js +2 -2
- package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +106 -16
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +67 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -1
- package/package.json +1 -1
- package/Models/DatabaseModels/ServiceDependency.ts +0 -529
- package/Server/Services/ServiceDependencyService.ts +0 -48
- package/UI/Components/Graphs/ServiceDependencyGraph.tsx +0 -286
- package/build/dist/Models/DatabaseModels/ServiceDependency.js +0 -545
- package/build/dist/Models/DatabaseModels/ServiceDependency.js.map +0 -1
- package/build/dist/Server/Services/ServiceDependencyService.js +0 -47
- package/build/dist/Server/Services/ServiceDependencyService.js.map +0 -1
- package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js +0 -206
- package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
}
|
|
@@ -19,6 +19,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
|
|
|
19
19
|
import IconProp from "../../Types/Icon/IconProp";
|
|
20
20
|
import ObjectID from "../../Types/ObjectID";
|
|
21
21
|
import Permission from "../../Types/Permission";
|
|
22
|
+
import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
|
|
22
23
|
import {
|
|
23
24
|
Column,
|
|
24
25
|
Entity,
|
|
@@ -739,4 +740,86 @@ export default class DockerHost extends BaseModel {
|
|
|
739
740
|
},
|
|
740
741
|
})
|
|
741
742
|
public labels?: Array<Label> = undefined;
|
|
743
|
+
|
|
744
|
+
@ColumnAccessControl({
|
|
745
|
+
create: [
|
|
746
|
+
Permission.ProjectOwner,
|
|
747
|
+
Permission.ProjectAdmin,
|
|
748
|
+
Permission.ProjectMember,
|
|
749
|
+
Permission.SettingsAdmin,
|
|
750
|
+
Permission.SettingsMember,
|
|
751
|
+
Permission.CreateDockerHost,
|
|
752
|
+
],
|
|
753
|
+
read: [
|
|
754
|
+
Permission.ProjectOwner,
|
|
755
|
+
Permission.ProjectAdmin,
|
|
756
|
+
Permission.ProjectMember,
|
|
757
|
+
Permission.Viewer,
|
|
758
|
+
Permission.SettingsAdmin,
|
|
759
|
+
Permission.SettingsMember,
|
|
760
|
+
Permission.SettingsViewer,
|
|
761
|
+
Permission.ReadDockerHost,
|
|
762
|
+
],
|
|
763
|
+
update: [
|
|
764
|
+
Permission.ProjectOwner,
|
|
765
|
+
Permission.ProjectAdmin,
|
|
766
|
+
Permission.ProjectMember,
|
|
767
|
+
Permission.SettingsAdmin,
|
|
768
|
+
Permission.SettingsMember,
|
|
769
|
+
Permission.EditDockerHost,
|
|
770
|
+
],
|
|
771
|
+
})
|
|
772
|
+
@TableColumn({
|
|
773
|
+
type: TableColumnType.Number,
|
|
774
|
+
title: "Retain Telemetry Data For Days",
|
|
775
|
+
description:
|
|
776
|
+
"Number of days to retain telemetry data for this Docker host. Leave blank to use the project-wide default.",
|
|
777
|
+
})
|
|
778
|
+
@Column({
|
|
779
|
+
type: ColumnType.Number,
|
|
780
|
+
nullable: true,
|
|
781
|
+
unique: false,
|
|
782
|
+
})
|
|
783
|
+
public retainTelemetryDataForDays?: number = undefined;
|
|
784
|
+
|
|
785
|
+
@ColumnAccessControl({
|
|
786
|
+
create: [
|
|
787
|
+
Permission.ProjectOwner,
|
|
788
|
+
Permission.ProjectAdmin,
|
|
789
|
+
Permission.ProjectMember,
|
|
790
|
+
Permission.SettingsAdmin,
|
|
791
|
+
Permission.SettingsMember,
|
|
792
|
+
Permission.CreateDockerHost,
|
|
793
|
+
],
|
|
794
|
+
read: [
|
|
795
|
+
Permission.ProjectOwner,
|
|
796
|
+
Permission.ProjectAdmin,
|
|
797
|
+
Permission.ProjectMember,
|
|
798
|
+
Permission.Viewer,
|
|
799
|
+
Permission.SettingsAdmin,
|
|
800
|
+
Permission.SettingsMember,
|
|
801
|
+
Permission.SettingsViewer,
|
|
802
|
+
Permission.ReadDockerHost,
|
|
803
|
+
],
|
|
804
|
+
update: [
|
|
805
|
+
Permission.ProjectOwner,
|
|
806
|
+
Permission.ProjectAdmin,
|
|
807
|
+
Permission.ProjectMember,
|
|
808
|
+
Permission.SettingsAdmin,
|
|
809
|
+
Permission.SettingsMember,
|
|
810
|
+
Permission.EditDockerHost,
|
|
811
|
+
],
|
|
812
|
+
})
|
|
813
|
+
@TableColumn({
|
|
814
|
+
type: TableColumnType.JSON,
|
|
815
|
+
required: false,
|
|
816
|
+
title: "Telemetry Data Retention Overrides",
|
|
817
|
+
description:
|
|
818
|
+
"Per-pillar retention overrides for this Docker host (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the Docker host default, then the project's retention settings.",
|
|
819
|
+
})
|
|
820
|
+
@Column({
|
|
821
|
+
type: ColumnType.JSON,
|
|
822
|
+
nullable: true,
|
|
823
|
+
})
|
|
824
|
+
public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
|
|
742
825
|
}
|
|
@@ -21,6 +21,7 @@ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
|
|
|
21
21
|
import IconProp from "../../Types/Icon/IconProp";
|
|
22
22
|
import ObjectID from "../../Types/ObjectID";
|
|
23
23
|
import Permission from "../../Types/Permission";
|
|
24
|
+
import TelemetryRetentionConfig from "../../Types/Telemetry/TelemetryRetentionConfig";
|
|
24
25
|
import {
|
|
25
26
|
Column,
|
|
26
27
|
Entity,
|
|
@@ -1055,4 +1056,86 @@ export default class Host extends BaseModel {
|
|
|
1055
1056
|
},
|
|
1056
1057
|
})
|
|
1057
1058
|
public labels?: Array<Label> = undefined;
|
|
1059
|
+
|
|
1060
|
+
@ColumnAccessControl({
|
|
1061
|
+
create: [
|
|
1062
|
+
Permission.ProjectOwner,
|
|
1063
|
+
Permission.ProjectAdmin,
|
|
1064
|
+
Permission.ProjectMember,
|
|
1065
|
+
Permission.SettingsAdmin,
|
|
1066
|
+
Permission.SettingsMember,
|
|
1067
|
+
Permission.CreateHost,
|
|
1068
|
+
],
|
|
1069
|
+
read: [
|
|
1070
|
+
Permission.ProjectOwner,
|
|
1071
|
+
Permission.ProjectAdmin,
|
|
1072
|
+
Permission.ProjectMember,
|
|
1073
|
+
Permission.Viewer,
|
|
1074
|
+
Permission.SettingsAdmin,
|
|
1075
|
+
Permission.SettingsMember,
|
|
1076
|
+
Permission.SettingsViewer,
|
|
1077
|
+
Permission.ReadHost,
|
|
1078
|
+
],
|
|
1079
|
+
update: [
|
|
1080
|
+
Permission.ProjectOwner,
|
|
1081
|
+
Permission.ProjectAdmin,
|
|
1082
|
+
Permission.ProjectMember,
|
|
1083
|
+
Permission.SettingsAdmin,
|
|
1084
|
+
Permission.SettingsMember,
|
|
1085
|
+
Permission.EditHost,
|
|
1086
|
+
],
|
|
1087
|
+
})
|
|
1088
|
+
@TableColumn({
|
|
1089
|
+
type: TableColumnType.Number,
|
|
1090
|
+
title: "Retain Telemetry Data For Days",
|
|
1091
|
+
description:
|
|
1092
|
+
"Number of days to retain telemetry data for this host. Leave blank to use the project-wide default.",
|
|
1093
|
+
})
|
|
1094
|
+
@Column({
|
|
1095
|
+
type: ColumnType.Number,
|
|
1096
|
+
nullable: true,
|
|
1097
|
+
unique: false,
|
|
1098
|
+
})
|
|
1099
|
+
public retainTelemetryDataForDays?: number = undefined;
|
|
1100
|
+
|
|
1101
|
+
@ColumnAccessControl({
|
|
1102
|
+
create: [
|
|
1103
|
+
Permission.ProjectOwner,
|
|
1104
|
+
Permission.ProjectAdmin,
|
|
1105
|
+
Permission.ProjectMember,
|
|
1106
|
+
Permission.SettingsAdmin,
|
|
1107
|
+
Permission.SettingsMember,
|
|
1108
|
+
Permission.CreateHost,
|
|
1109
|
+
],
|
|
1110
|
+
read: [
|
|
1111
|
+
Permission.ProjectOwner,
|
|
1112
|
+
Permission.ProjectAdmin,
|
|
1113
|
+
Permission.ProjectMember,
|
|
1114
|
+
Permission.Viewer,
|
|
1115
|
+
Permission.SettingsAdmin,
|
|
1116
|
+
Permission.SettingsMember,
|
|
1117
|
+
Permission.SettingsViewer,
|
|
1118
|
+
Permission.ReadHost,
|
|
1119
|
+
],
|
|
1120
|
+
update: [
|
|
1121
|
+
Permission.ProjectOwner,
|
|
1122
|
+
Permission.ProjectAdmin,
|
|
1123
|
+
Permission.ProjectMember,
|
|
1124
|
+
Permission.SettingsAdmin,
|
|
1125
|
+
Permission.SettingsMember,
|
|
1126
|
+
Permission.EditHost,
|
|
1127
|
+
],
|
|
1128
|
+
})
|
|
1129
|
+
@TableColumn({
|
|
1130
|
+
type: TableColumnType.JSON,
|
|
1131
|
+
required: false,
|
|
1132
|
+
title: "Telemetry Data Retention Overrides",
|
|
1133
|
+
description:
|
|
1134
|
+
"Per-pillar retention overrides for this host (logs by severity, traces by status, metrics, profiles). Unset fields fall back to the host default, then the project's retention settings.",
|
|
1135
|
+
})
|
|
1136
|
+
@Column({
|
|
1137
|
+
type: ColumnType.JSON,
|
|
1138
|
+
nullable: true,
|
|
1139
|
+
})
|
|
1140
|
+
public telemetryRetentionConfig?: TelemetryRetentionConfig = undefined;
|
|
1058
1141
|
}
|
|
@@ -226,7 +226,6 @@ import RunbookExecution from "./RunbookExecution";
|
|
|
226
226
|
import RunbookOwnerTeam from "./RunbookOwnerTeam";
|
|
227
227
|
import RunbookOwnerUser from "./RunbookOwnerUser";
|
|
228
228
|
import RunbookRule from "./RunbookRule";
|
|
229
|
-
import ServiceDependency from "./ServiceDependency";
|
|
230
229
|
import ServiceMonitor from "./ServiceMonitor";
|
|
231
230
|
|
|
232
231
|
import UserTotpAuth from "./UserTotpAuth";
|
|
@@ -618,7 +617,6 @@ const AllModelTypes: Array<{
|
|
|
618
617
|
Service,
|
|
619
618
|
ServiceOwnerTeam,
|
|
620
619
|
ServiceOwnerUser,
|
|
621
|
-
ServiceDependency,
|
|
622
620
|
ServiceMonitor,
|
|
623
621
|
ServiceCodeRepository,
|
|
624
622
|
|