@oneuptime/common 10.5.8 → 10.5.17
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 +1 -1
- package/Models/AnalyticsModels/Log.ts +1 -1
- package/Models/AnalyticsModels/Metric.ts +1 -1
- package/Models/AnalyticsModels/Profile.ts +1 -1
- package/Models/AnalyticsModels/ProfileSample.ts +1 -1
- package/Models/AnalyticsModels/Span.ts +1 -1
- package/Models/DatabaseModels/SmsLog.ts +111 -0
- package/Models/DatabaseModels/TelemetryException.ts +46 -34
- package/Models/DatabaseModels/TelemetryUsageBilling.ts +35 -2
- package/Server/API/AIAgentDataAPI.ts +25 -7
- package/Server/API/DashboardAPI.ts +616 -0
- package/Server/API/TelemetryExceptionAPI.ts +6 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780317745887-AddDeliveryTrackingToSmsLog.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780381124553-MigrationName.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780382837019-MigrationName.ts +24 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780387560604-MigrationName.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780388219225-MigrationName.ts +34 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Infrastructure/QueueWorker.ts +40 -1
- package/Server/Services/AnalyticsDatabaseService.ts +87 -0
- package/Server/Services/DatabaseService.ts +73 -0
- package/Server/Services/TelemetryExceptionService.ts +24 -49
- package/Server/Services/TelemetryUsageBillingService.ts +289 -166
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +102 -72
- package/Server/Types/Database/Permissions/OwnedScopePermission.ts +81 -60
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +67 -0
- package/Server/Utils/Logger.ts +12 -1
- package/Server/Utils/StartServer.ts +13 -5
- package/Server/Utils/Telemetry/ContextSpanProcessor.ts +48 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +16 -35
- package/Server/Utils/Telemetry/TelemetryContext.ts +190 -0
- package/Server/Utils/Telemetry.ts +18 -2
- package/Types/Database/AccessControl/OwnedThrough.ts +31 -3
- package/Types/SmsStatus.ts +16 -0
- package/Types/Telemetry/ServiceType.ts +10 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +16 -0
- package/UI/Utils/Project.ts +6 -0
- package/UI/Utils/Telemetry/Telemetry.ts +65 -0
- package/UI/Utils/TelemetryService.ts +150 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/SmsLog.js +112 -0
- package/build/dist/Models/DatabaseModels/SmsLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +47 -33
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +36 -2
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +24 -8
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +459 -2
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +6 -2
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780317745887-AddDeliveryTrackingToSmsLog.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780317745887-AddDeliveryTrackingToSmsLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780381124553-MigrationName.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780381124553-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780382837019-MigrationName.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780382837019-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780387560604-MigrationName.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780387560604-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780388219225-MigrationName.js +25 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780388219225-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +31 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +59 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +62 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +16 -41
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +211 -147
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +84 -63
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +67 -49
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +51 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +8 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +12 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ContextSpanProcessor.js +37 -0
- package/build/dist/Server/Utils/Telemetry/ContextSpanProcessor.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +15 -24
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryContext.js +124 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryContext.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry.js +12 -1
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/OwnedThrough.js +7 -2
- package/build/dist/Types/Database/AccessControl/OwnedThrough.js.map +1 -1
- package/build/dist/Types/SmsStatus.js +15 -0
- package/build/dist/Types/SmsStatus.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +10 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +15 -0
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Utils/Project.js +5 -0
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/UI/Utils/Telemetry/Telemetry.js +44 -0
- package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +113 -0
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AIAgentService from "../Services/AIAgentService";
|
|
2
2
|
import LlmProviderService from "../Services/LlmProviderService";
|
|
3
3
|
import TelemetryExceptionService from "../Services/TelemetryExceptionService";
|
|
4
|
+
import ServiceService from "../Services/ServiceService";
|
|
4
5
|
import ServiceCodeRepositoryService from "../Services/ServiceCodeRepositoryService";
|
|
5
6
|
import CodeRepositoryService from "../Services/CodeRepositoryService";
|
|
6
7
|
import AIAgentTaskPullRequestService from "../Services/AIAgentTaskPullRequestService";
|
|
@@ -68,7 +69,7 @@ export default class AIAgentDataAPI {
|
|
|
68
69
|
});
|
|
69
70
|
// Get exception details with telemetry service info
|
|
70
71
|
this.router.post("/ai-agent-data/get-exception-details", async (req, res, next) => {
|
|
71
|
-
var _a, _b
|
|
72
|
+
var _a, _b;
|
|
72
73
|
try {
|
|
73
74
|
const data = req.body;
|
|
74
75
|
// Validate AI Agent credentials
|
|
@@ -91,11 +92,7 @@ export default class AIAgentDataAPI {
|
|
|
91
92
|
exceptionType: true,
|
|
92
93
|
fingerprint: true,
|
|
93
94
|
serviceId: true,
|
|
94
|
-
|
|
95
|
-
_id: true,
|
|
96
|
-
name: true,
|
|
97
|
-
description: true,
|
|
98
|
-
},
|
|
95
|
+
serviceType: true,
|
|
99
96
|
},
|
|
100
97
|
props: {
|
|
101
98
|
isRoot: true,
|
|
@@ -105,6 +102,25 @@ export default class AIAgentDataAPI {
|
|
|
105
102
|
return Response.sendErrorResponse(req, res, new BadDataException("Exception not found"));
|
|
106
103
|
}
|
|
107
104
|
logger.debug(`Exception details fetched: ${exception._id} - ${(_a = exception.message) === null || _a === void 0 ? void 0 : _a.substring(0, 100)}`, getLogAttributesFromRequest(req));
|
|
105
|
+
/*
|
|
106
|
+
* serviceId is polymorphic — resolve the Service only when it is
|
|
107
|
+
* a real Service. findOneById returns null for Host / DockerHost /
|
|
108
|
+
* KubernetesCluster / unattributed serviceIds (they aren't
|
|
109
|
+
* Services), preserving the previous "name only for real
|
|
110
|
+
* services" behaviour without the dropped ORM relation.
|
|
111
|
+
*/
|
|
112
|
+
const exceptionService = exception.serviceId
|
|
113
|
+
? await ServiceService.findOneById({
|
|
114
|
+
id: exception.serviceId,
|
|
115
|
+
select: {
|
|
116
|
+
name: true,
|
|
117
|
+
description: true,
|
|
118
|
+
},
|
|
119
|
+
props: {
|
|
120
|
+
isRoot: true,
|
|
121
|
+
},
|
|
122
|
+
})
|
|
123
|
+
: null;
|
|
108
124
|
return Response.sendJsonObjectResponse(req, res, {
|
|
109
125
|
exception: {
|
|
110
126
|
id: (_b = exception._id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
@@ -116,8 +132,8 @@ export default class AIAgentDataAPI {
|
|
|
116
132
|
service: exception.serviceId
|
|
117
133
|
? {
|
|
118
134
|
id: exception.serviceId.toString(),
|
|
119
|
-
name:
|
|
120
|
-
description:
|
|
135
|
+
name: exceptionService === null || exceptionService === void 0 ? void 0 : exceptionService.name,
|
|
136
|
+
description: exceptionService === null || exceptionService === void 0 ? void 0 : exceptionService.description,
|
|
121
137
|
}
|
|
122
138
|
: null,
|
|
123
139
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAgentDataAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIAgentDataAPI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AIAgentDataAPI.js","sourceRoot":"","sources":["../../../../Server/API/AIAgentDataAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,194 @@ import { DASHBOARD_MASTER_PASSWORD_INVALID_MESSAGE } from "../../Types/Dashboard
|
|
|
15
15
|
import JSONFunctions from "../../Types/JSONFunctions";
|
|
16
16
|
import TelemetryAttributeService from "../Services/TelemetryAttributeService";
|
|
17
17
|
import TelemetryType from "../../Types/Telemetry/TelemetryType";
|
|
18
|
+
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
19
|
+
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
20
|
+
import MetricService from "../Services/MetricService";
|
|
21
|
+
import MetricTypeService from "../Services/MetricTypeService";
|
|
22
|
+
import PositiveNumber from "../../Types/PositiveNumber";
|
|
23
|
+
import Incident from "../../Models/DatabaseModels/Incident";
|
|
24
|
+
import Alert from "../../Models/DatabaseModels/Alert";
|
|
25
|
+
import Monitor from "../../Models/DatabaseModels/Monitor";
|
|
26
|
+
import Host from "../../Models/DatabaseModels/Host";
|
|
27
|
+
import KubernetesResource from "../../Models/DatabaseModels/KubernetesResource";
|
|
28
|
+
import DockerHost from "../../Models/DatabaseModels/DockerHost";
|
|
29
|
+
import DockerResource from "../../Models/DatabaseModels/DockerResource";
|
|
30
|
+
import Span from "../../Models/AnalyticsModels/Span";
|
|
31
|
+
import Log from "../../Models/AnalyticsModels/Log";
|
|
32
|
+
import IncidentService from "../Services/IncidentService";
|
|
33
|
+
import AlertService from "../Services/AlertService";
|
|
34
|
+
import MonitorService from "../Services/MonitorService";
|
|
35
|
+
import HostService from "../Services/HostService";
|
|
36
|
+
import KubernetesResourceService from "../Services/KubernetesResourceService";
|
|
37
|
+
import DockerHostService from "../Services/DockerHostService";
|
|
38
|
+
import DockerResourceService from "../Services/DockerResourceService";
|
|
39
|
+
import SpanService from "../Services/SpanService";
|
|
40
|
+
import LogService from "../Services/LogService";
|
|
41
|
+
const DEFAULT_DASHBOARD_RESOURCE_LIMIT = 100;
|
|
42
|
+
const PUBLIC_DASHBOARD_RESOURCES = {
|
|
43
|
+
incident: {
|
|
44
|
+
modelType: Incident,
|
|
45
|
+
service: IncidentService,
|
|
46
|
+
select: {
|
|
47
|
+
_id: true,
|
|
48
|
+
title: true,
|
|
49
|
+
createdAt: true,
|
|
50
|
+
currentIncidentState: { name: true, color: true },
|
|
51
|
+
incidentSeverity: { name: true, color: true },
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
alert: {
|
|
55
|
+
modelType: Alert,
|
|
56
|
+
service: AlertService,
|
|
57
|
+
select: {
|
|
58
|
+
_id: true,
|
|
59
|
+
title: true,
|
|
60
|
+
createdAt: true,
|
|
61
|
+
currentAlertState: { name: true, color: true },
|
|
62
|
+
alertSeverity: { name: true, color: true },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
monitor: {
|
|
66
|
+
modelType: Monitor,
|
|
67
|
+
service: MonitorService,
|
|
68
|
+
select: {
|
|
69
|
+
_id: true,
|
|
70
|
+
name: true,
|
|
71
|
+
monitorType: true,
|
|
72
|
+
currentMonitorStatus: { name: true, color: true },
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
host: {
|
|
76
|
+
modelType: Host,
|
|
77
|
+
service: HostService,
|
|
78
|
+
select: {
|
|
79
|
+
_id: true,
|
|
80
|
+
name: true,
|
|
81
|
+
hostIdentifier: true,
|
|
82
|
+
otelCollectorStatus: true,
|
|
83
|
+
osType: true,
|
|
84
|
+
osVersion: true,
|
|
85
|
+
cpuCores: true,
|
|
86
|
+
totalMemoryBytes: true,
|
|
87
|
+
lastSeenAt: true,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
"kubernetes-resource": {
|
|
91
|
+
modelType: KubernetesResource,
|
|
92
|
+
service: KubernetesResourceService,
|
|
93
|
+
select: {
|
|
94
|
+
_id: true,
|
|
95
|
+
name: true,
|
|
96
|
+
namespaceKey: true,
|
|
97
|
+
kind: true,
|
|
98
|
+
phase: true,
|
|
99
|
+
isReady: true,
|
|
100
|
+
hasMemoryPressure: true,
|
|
101
|
+
hasDiskPressure: true,
|
|
102
|
+
hasPidPressure: true,
|
|
103
|
+
containerCount: true,
|
|
104
|
+
latestCpuPercent: true,
|
|
105
|
+
latestMemoryBytes: true,
|
|
106
|
+
controllerDeploymentName: true,
|
|
107
|
+
controllerCronJobName: true,
|
|
108
|
+
resourceCreationTimestamp: true,
|
|
109
|
+
lastSeenAt: true,
|
|
110
|
+
kubernetesClusterId: true,
|
|
111
|
+
kubernetesCluster: { name: true },
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
"docker-host": {
|
|
115
|
+
modelType: DockerHost,
|
|
116
|
+
service: DockerHostService,
|
|
117
|
+
select: {
|
|
118
|
+
_id: true,
|
|
119
|
+
name: true,
|
|
120
|
+
otelCollectorStatus: true,
|
|
121
|
+
containersRunning: true,
|
|
122
|
+
containersStopped: true,
|
|
123
|
+
containersPaused: true,
|
|
124
|
+
osType: true,
|
|
125
|
+
osVersion: true,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
"docker-container": {
|
|
129
|
+
modelType: DockerResource,
|
|
130
|
+
service: DockerResourceService,
|
|
131
|
+
select: {
|
|
132
|
+
_id: true,
|
|
133
|
+
name: true,
|
|
134
|
+
imageName: true,
|
|
135
|
+
state: true,
|
|
136
|
+
latestCpuPercent: true,
|
|
137
|
+
latestMemoryBytes: true,
|
|
138
|
+
dockerHostId: true,
|
|
139
|
+
dockerHost: { name: true },
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
"docker-image": {
|
|
143
|
+
modelType: DockerResource,
|
|
144
|
+
service: DockerResourceService,
|
|
145
|
+
select: {
|
|
146
|
+
_id: true,
|
|
147
|
+
name: true,
|
|
148
|
+
containerId: true,
|
|
149
|
+
dockerHostId: true,
|
|
150
|
+
dockerHost: { name: true },
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
"docker-network": {
|
|
154
|
+
modelType: DockerResource,
|
|
155
|
+
service: DockerResourceService,
|
|
156
|
+
select: {
|
|
157
|
+
_id: true,
|
|
158
|
+
name: true,
|
|
159
|
+
state: true,
|
|
160
|
+
dockerHostId: true,
|
|
161
|
+
dockerHost: { name: true },
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
"docker-volume": {
|
|
165
|
+
modelType: DockerResource,
|
|
166
|
+
service: DockerResourceService,
|
|
167
|
+
select: {
|
|
168
|
+
_id: true,
|
|
169
|
+
name: true,
|
|
170
|
+
state: true,
|
|
171
|
+
dockerHostId: true,
|
|
172
|
+
dockerHost: { name: true },
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
span: {
|
|
176
|
+
modelType: Span,
|
|
177
|
+
service: SpanService,
|
|
178
|
+
select: {
|
|
179
|
+
startTime: true,
|
|
180
|
+
name: true,
|
|
181
|
+
statusCode: true,
|
|
182
|
+
durationUnixNano: true,
|
|
183
|
+
traceId: true,
|
|
184
|
+
spanId: true,
|
|
185
|
+
kind: true,
|
|
186
|
+
serviceId: true,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
log: {
|
|
190
|
+
modelType: Log,
|
|
191
|
+
service: LogService,
|
|
192
|
+
select: {
|
|
193
|
+
time: true,
|
|
194
|
+
severityText: true,
|
|
195
|
+
body: true,
|
|
196
|
+
serviceId: true,
|
|
197
|
+
traceId: true,
|
|
198
|
+
spanId: true,
|
|
199
|
+
attributes: true,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
};
|
|
18
203
|
export default class DashboardAPI extends BaseAPI {
|
|
19
204
|
constructor() {
|
|
20
|
-
var _a, _b, _c, _d, _e, _f;
|
|
205
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
21
206
|
super(Dashboard, DashboardService);
|
|
22
207
|
// SEO endpoint - resolve dashboard by ID or domain
|
|
23
208
|
this.router.get(`${(_a = new this.entityType()
|
|
@@ -278,8 +463,190 @@ export default class DashboardAPI extends BaseAPI {
|
|
|
278
463
|
next(err);
|
|
279
464
|
}
|
|
280
465
|
});
|
|
466
|
+
/*
|
|
467
|
+
* Public metric-type lookup for dashboard charts.
|
|
468
|
+
*
|
|
469
|
+
* The private `/metric-type/get-list` CRUD route requires a logged-in
|
|
470
|
+
* session with Telemetry read permission; public dashboards have no
|
|
471
|
+
* session, so the shared chart code used to fall through to it, 401 →
|
|
472
|
+
* the global API error handler redirected the viewer to /accounts/login.
|
|
473
|
+
* Mirror it here scoped to the dashboard's owning projectId.
|
|
474
|
+
* Authorization reuses DashboardService.hasReadAccess (public flag, IP
|
|
475
|
+
* whitelist, master password) — never falls back to project-wide read.
|
|
476
|
+
*/
|
|
281
477
|
this.router.post(`${(_f = new this.entityType()
|
|
282
|
-
.getCrudApiPath()) === null || _f === void 0 ? void 0 : _f.toString()}/
|
|
478
|
+
.getCrudApiPath()) === null || _f === void 0 ? void 0 : _f.toString()}/metric-types/:dashboardId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
479
|
+
try {
|
|
480
|
+
const dashboardId = new ObjectID(req.params["dashboardId"]);
|
|
481
|
+
const accessResult = await DashboardService.hasReadAccess({
|
|
482
|
+
dashboardId,
|
|
483
|
+
req,
|
|
484
|
+
});
|
|
485
|
+
if (!accessResult.hasReadAccess) {
|
|
486
|
+
throw (accessResult.error ||
|
|
487
|
+
new BadDataException("Access denied to this dashboard."));
|
|
488
|
+
}
|
|
489
|
+
const dashboard = await DashboardService.findOneById({
|
|
490
|
+
id: dashboardId,
|
|
491
|
+
select: {
|
|
492
|
+
_id: true,
|
|
493
|
+
projectId: true,
|
|
494
|
+
dashboardViewConfig: true,
|
|
495
|
+
},
|
|
496
|
+
props: {
|
|
497
|
+
isRoot: true,
|
|
498
|
+
},
|
|
499
|
+
});
|
|
500
|
+
if (!dashboard || !dashboard.projectId) {
|
|
501
|
+
throw new NotFoundException("Dashboard not found");
|
|
502
|
+
}
|
|
503
|
+
/*
|
|
504
|
+
* Only expose metric types the dashboard actually charts, so a
|
|
505
|
+
* public viewer cannot enumerate the owning project's full metric
|
|
506
|
+
* catalog.
|
|
507
|
+
*/
|
|
508
|
+
const allowedMetricNames = DashboardAPI.collectDashboardMetricNames(dashboard.dashboardViewConfig);
|
|
509
|
+
if (allowedMetricNames.size === 0) {
|
|
510
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
511
|
+
metricTypes: [],
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
const metricTypes = await MetricTypeService.findBy({
|
|
515
|
+
query: {
|
|
516
|
+
projectId: dashboard.projectId,
|
|
517
|
+
},
|
|
518
|
+
select: {
|
|
519
|
+
name: true,
|
|
520
|
+
unit: true,
|
|
521
|
+
},
|
|
522
|
+
skip: 0,
|
|
523
|
+
limit: LIMIT_PER_PROJECT,
|
|
524
|
+
sort: {
|
|
525
|
+
name: SortOrder.Ascending,
|
|
526
|
+
},
|
|
527
|
+
props: {
|
|
528
|
+
isRoot: true,
|
|
529
|
+
},
|
|
530
|
+
});
|
|
531
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
532
|
+
metricTypes: metricTypes
|
|
533
|
+
.filter((metricType) => {
|
|
534
|
+
return Boolean(metricType.name && allowedMetricNames.has(metricType.name));
|
|
535
|
+
})
|
|
536
|
+
.map((metricType) => {
|
|
537
|
+
return {
|
|
538
|
+
name: metricType.name || "",
|
|
539
|
+
unit: metricType.unit || "",
|
|
540
|
+
};
|
|
541
|
+
}),
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
catch (err) {
|
|
545
|
+
next(err);
|
|
546
|
+
}
|
|
547
|
+
});
|
|
548
|
+
/*
|
|
549
|
+
* Public metric aggregation for dashboard charts/values/gauges/tables.
|
|
550
|
+
*
|
|
551
|
+
* Mirrors the private `/metrics/aggregate` route (which requires a
|
|
552
|
+
* logged-in session). The client-supplied projectId is IGNORED and the
|
|
553
|
+
* aggregation is pinned to the dashboard's owning projectId, so a public
|
|
554
|
+
* viewer can only read metrics belonging to this dashboard's project and
|
|
555
|
+
* never another tenant's. Authorization reuses
|
|
556
|
+
* DashboardService.hasReadAccess.
|
|
557
|
+
*/
|
|
558
|
+
this.router.post(`${(_g = new this.entityType()
|
|
559
|
+
.getCrudApiPath()) === null || _g === void 0 ? void 0 : _g.toString()}/metrics-aggregate/:dashboardId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
560
|
+
try {
|
|
561
|
+
const dashboardId = new ObjectID(req.params["dashboardId"]);
|
|
562
|
+
const accessResult = await DashboardService.hasReadAccess({
|
|
563
|
+
dashboardId,
|
|
564
|
+
req,
|
|
565
|
+
});
|
|
566
|
+
if (!accessResult.hasReadAccess) {
|
|
567
|
+
throw (accessResult.error ||
|
|
568
|
+
new BadDataException("Access denied to this dashboard."));
|
|
569
|
+
}
|
|
570
|
+
if (!req.body || !req.body["aggregateBy"]) {
|
|
571
|
+
throw new BadDataException("aggregateBy is required.");
|
|
572
|
+
}
|
|
573
|
+
const dashboard = await DashboardService.findOneById({
|
|
574
|
+
id: dashboardId,
|
|
575
|
+
select: {
|
|
576
|
+
_id: true,
|
|
577
|
+
projectId: true,
|
|
578
|
+
dashboardViewConfig: true,
|
|
579
|
+
},
|
|
580
|
+
props: {
|
|
581
|
+
isRoot: true,
|
|
582
|
+
},
|
|
583
|
+
});
|
|
584
|
+
if (!dashboard || !dashboard.projectId) {
|
|
585
|
+
throw new NotFoundException("Dashboard not found");
|
|
586
|
+
}
|
|
587
|
+
const aggregateBy = Object.assign(Object.assign({}, JSONFunctions.deserialize(req.body["aggregateBy"])), {
|
|
588
|
+
/*
|
|
589
|
+
* Run as root: authorization is already enforced by hasReadAccess
|
|
590
|
+
* above and the project scope is pinned below.
|
|
591
|
+
*/
|
|
592
|
+
props: {
|
|
593
|
+
isRoot: true,
|
|
594
|
+
} });
|
|
595
|
+
/*
|
|
596
|
+
* Restrict aggregation to the metric names this dashboard actually
|
|
597
|
+
* charts. Without this, a public viewer who knows the dashboard ID
|
|
598
|
+
* could aggregate any metric in the owning project. Variable
|
|
599
|
+
* interpolation only rewrites attribute filters, never the metric
|
|
600
|
+
* name, so the stored view config is an exact allowlist.
|
|
601
|
+
*/
|
|
602
|
+
const allowedMetricNames = DashboardAPI.collectDashboardMetricNames(dashboard.dashboardViewConfig);
|
|
603
|
+
const requestedMetricName = aggregateBy.query
|
|
604
|
+
? aggregateBy.query["name"]
|
|
605
|
+
: undefined;
|
|
606
|
+
if (typeof requestedMetricName !== "string" ||
|
|
607
|
+
!allowedMetricNames.has(requestedMetricName)) {
|
|
608
|
+
throw new BadDataException("This metric is not part of this dashboard.");
|
|
609
|
+
}
|
|
610
|
+
/*
|
|
611
|
+
* Security: never trust a client-supplied projectId on a public,
|
|
612
|
+
* unauthenticated endpoint. Pin the aggregation to the dashboard's
|
|
613
|
+
* project before it reaches the database service.
|
|
614
|
+
*/
|
|
615
|
+
aggregateBy.query = Object.assign(Object.assign({}, (aggregateBy.query || {})), { projectId: dashboard.projectId });
|
|
616
|
+
const aggregateResult = await MetricService.aggregateBy(aggregateBy);
|
|
617
|
+
const responseBody = Object.assign({}, aggregateResult);
|
|
618
|
+
return Response.sendJsonObjectResponse(req, res, responseBody);
|
|
619
|
+
}
|
|
620
|
+
catch (err) {
|
|
621
|
+
next(err);
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
/*
|
|
625
|
+
* Public resource lists for non-metric dashboard widgets (incident /
|
|
626
|
+
* alert / monitor / trace / log / kubernetes / docker / host lists).
|
|
627
|
+
*
|
|
628
|
+
* Each widget renders a fixed set of columns; the server pins the select
|
|
629
|
+
* to exactly those columns (see PUBLIC_DASHBOARD_RESOURCES) and forces the
|
|
630
|
+
* project scope to the dashboard's project, so a public viewer can only
|
|
631
|
+
* read the data the widget was built to show, for this dashboard's
|
|
632
|
+
* project. Authorization reuses DashboardService.hasReadAccess.
|
|
633
|
+
*/
|
|
634
|
+
this.router.post(`${(_h = new this.entityType()
|
|
635
|
+
.getCrudApiPath()) === null || _h === void 0 ? void 0 : _h.toString()}/resource-list/:dashboardId/:resourceType`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
636
|
+
try {
|
|
637
|
+
const resourceType = req.params["resourceType"];
|
|
638
|
+
const config = PUBLIC_DASHBOARD_RESOURCES[resourceType];
|
|
639
|
+
if (!config) {
|
|
640
|
+
throw new BadDataException(`Unsupported dashboard resource type: ${resourceType}`);
|
|
641
|
+
}
|
|
642
|
+
await DashboardAPI.servePublicResourceList({ req, res, config });
|
|
643
|
+
}
|
|
644
|
+
catch (err) {
|
|
645
|
+
next(err);
|
|
646
|
+
}
|
|
647
|
+
});
|
|
648
|
+
this.router.post(`${(_j = new this.entityType()
|
|
649
|
+
.getCrudApiPath()) === null || _j === void 0 ? void 0 : _j.toString()}/master-password/:dashboardId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
283
650
|
try {
|
|
284
651
|
if (!req.params["dashboardId"]) {
|
|
285
652
|
throw new BadDataException("Dashboard ID not found");
|
|
@@ -326,6 +693,96 @@ export default class DashboardAPI extends BaseAPI {
|
|
|
326
693
|
}
|
|
327
694
|
});
|
|
328
695
|
}
|
|
696
|
+
/*
|
|
697
|
+
* Walk a stored dashboard view config and collect every metric name it
|
|
698
|
+
* references (chart/value/gauge/table widgets all carry their metric in a
|
|
699
|
+
* `metricName` field somewhere under their query config). Used to build an
|
|
700
|
+
* allowlist for the public metric endpoints so an anonymous viewer can only
|
|
701
|
+
* read the metrics this dashboard was built to show.
|
|
702
|
+
*/
|
|
703
|
+
static collectDashboardMetricNames(dashboardViewConfig) {
|
|
704
|
+
const metricNames = new Set();
|
|
705
|
+
const walk = (node) => {
|
|
706
|
+
if (!node || typeof node !== "object") {
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
if (Array.isArray(node)) {
|
|
710
|
+
for (const item of node) {
|
|
711
|
+
walk(item);
|
|
712
|
+
}
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
const obj = node;
|
|
716
|
+
const metricName = obj["metricName"];
|
|
717
|
+
if (typeof metricName === "string" && metricName.trim().length > 0) {
|
|
718
|
+
metricNames.add(metricName);
|
|
719
|
+
}
|
|
720
|
+
for (const key of Object.keys(obj)) {
|
|
721
|
+
walk(obj[key]);
|
|
722
|
+
}
|
|
723
|
+
};
|
|
724
|
+
walk(dashboardViewConfig);
|
|
725
|
+
return metricNames;
|
|
726
|
+
}
|
|
727
|
+
/*
|
|
728
|
+
* Shared handler for the public resource-list endpoint. Loads the
|
|
729
|
+
* dashboard, enforces read access, pins the query to the dashboard's
|
|
730
|
+
* project, and lists the resource using the registry's FIXED select.
|
|
731
|
+
*/
|
|
732
|
+
static async servePublicResourceList(data) {
|
|
733
|
+
const { req, res, config } = data;
|
|
734
|
+
const dashboardId = new ObjectID(req.params["dashboardId"]);
|
|
735
|
+
const accessResult = await DashboardService.hasReadAccess({ dashboardId, req });
|
|
736
|
+
if (!accessResult.hasReadAccess) {
|
|
737
|
+
throw (accessResult.error ||
|
|
738
|
+
new BadDataException("Access denied to this dashboard."));
|
|
739
|
+
}
|
|
740
|
+
const dashboard = await DashboardService.findOneById({
|
|
741
|
+
id: dashboardId,
|
|
742
|
+
select: {
|
|
743
|
+
_id: true,
|
|
744
|
+
projectId: true,
|
|
745
|
+
},
|
|
746
|
+
props: {
|
|
747
|
+
isRoot: true,
|
|
748
|
+
},
|
|
749
|
+
});
|
|
750
|
+
if (!dashboard || !dashboard.projectId) {
|
|
751
|
+
throw new NotFoundException("Dashboard not found");
|
|
752
|
+
}
|
|
753
|
+
const query = req.body && req.body["query"]
|
|
754
|
+
? JSONFunctions.deserialize(req.body["query"])
|
|
755
|
+
: {};
|
|
756
|
+
/*
|
|
757
|
+
* Security: pin to the dashboard's project; never trust a client-supplied
|
|
758
|
+
* projectId on a public, unauthenticated endpoint.
|
|
759
|
+
*/
|
|
760
|
+
query["projectId"] = dashboard.projectId;
|
|
761
|
+
const sort = req.body && req.body["sort"]
|
|
762
|
+
? JSONFunctions.deserialize(req.body["sort"])
|
|
763
|
+
: {};
|
|
764
|
+
const requestedLimit = req.query["limit"]
|
|
765
|
+
? parseInt(req.query["limit"], 10)
|
|
766
|
+
: DEFAULT_DASHBOARD_RESOURCE_LIMIT;
|
|
767
|
+
const limit = Math.min(Number.isFinite(requestedLimit) && requestedLimit > 0
|
|
768
|
+
? requestedLimit
|
|
769
|
+
: DEFAULT_DASHBOARD_RESOURCE_LIMIT, LIMIT_PER_PROJECT);
|
|
770
|
+
const requestedSkip = req.query["skip"]
|
|
771
|
+
? parseInt(req.query["skip"], 10)
|
|
772
|
+
: 0;
|
|
773
|
+
const skip = Number.isFinite(requestedSkip) && requestedSkip > 0 ? requestedSkip : 0;
|
|
774
|
+
const list = await config.service.findBy({
|
|
775
|
+
query: query,
|
|
776
|
+
select: config.select,
|
|
777
|
+
sort: sort,
|
|
778
|
+
limit: limit,
|
|
779
|
+
skip: skip,
|
|
780
|
+
props: {
|
|
781
|
+
isRoot: true,
|
|
782
|
+
},
|
|
783
|
+
});
|
|
784
|
+
return Response.sendEntityArrayResponse(req, res, list, new PositiveNumber(list.length), config.modelType);
|
|
785
|
+
}
|
|
329
786
|
static getFileAsBase64JSONObject(file) {
|
|
330
787
|
if (!file || !file.file) {
|
|
331
788
|
return null;
|