@oneuptime/common 10.5.9 → 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/TelemetryException.ts +46 -34
- package/Models/DatabaseModels/TelemetryUsageBilling.ts +35 -2
- package/Server/API/AIAgentDataAPI.ts +25 -7
- package/Server/API/TelemetryExceptionAPI.ts +6 -2
- 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 +8 -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/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/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/TelemetryExceptionAPI.js +6 -2
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- 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 +8 -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/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 +1 -1
|
@@ -10,22 +10,27 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { MeteredPlanUtil } from "../Types/Billing/MeteredPlan/AllMeteredPlans";
|
|
11
11
|
import DatabaseService from "./DatabaseService";
|
|
12
12
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
13
|
-
import LIMIT_MAX
|
|
13
|
+
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
14
14
|
import OneUptimeDate from "../../Types/Date";
|
|
15
15
|
import Decimal from "../../Types/Decimal";
|
|
16
16
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
17
17
|
import ProductType from "../../Types/MeteredPlan/ProductType";
|
|
18
|
+
import ObjectID from "../../Types/ObjectID";
|
|
18
19
|
import Model, { DEFAULT_RETENTION_IN_DAYS, } from "../../Models/DatabaseModels/TelemetryUsageBilling";
|
|
19
20
|
import ServiceService from "./ServiceService";
|
|
21
|
+
import ProjectService from "./ProjectService";
|
|
20
22
|
import SpanService from "./SpanService";
|
|
21
23
|
import LogService from "./LogService";
|
|
22
24
|
import MetricService from "./MetricService";
|
|
23
25
|
import ExceptionInstanceService from "./ExceptionInstanceService";
|
|
24
26
|
import ProfileService from "./ProfileService";
|
|
25
27
|
import ProfileSampleService from "./ProfileSampleService";
|
|
26
|
-
import AnalyticsQueryHelper from "../Types/AnalyticsDatabase/QueryHelper";
|
|
27
28
|
import DiskSize from "../../Types/DiskSize";
|
|
28
29
|
import logger from "../Utils/Logger";
|
|
30
|
+
import HostService from "./HostService";
|
|
31
|
+
import DockerHostService from "./DockerHostService";
|
|
32
|
+
import KubernetesClusterService from "./KubernetesClusterService";
|
|
33
|
+
import ServiceType from "../../Types/Telemetry/ServiceType";
|
|
29
34
|
import { AverageSpanRowSizeInBytes, AverageLogRowSizeInBytes, AverageMetricRowSizeInBytes, AverageExceptionRowSizeInBytes, AverageProfileRowSizeInBytes, AverageProfileSampleRowSizeInBytes, IsBillingEnabled, } from "../EnvironmentConfig";
|
|
30
35
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
31
36
|
export class Service extends DatabaseService {
|
|
@@ -54,7 +59,7 @@ export class Service extends DatabaseService {
|
|
|
54
59
|
});
|
|
55
60
|
}
|
|
56
61
|
async stageTelemetryUsageForProject(data) {
|
|
57
|
-
var _a;
|
|
62
|
+
var _a, _b;
|
|
58
63
|
if (!IsBillingEnabled) {
|
|
59
64
|
return;
|
|
60
65
|
}
|
|
@@ -82,13 +87,102 @@ export class Service extends DatabaseService {
|
|
|
82
87
|
const usageDayString = OneUptimeDate.getDateString(usageDate);
|
|
83
88
|
const startOfDay = OneUptimeDate.getStartOfDay(usageDate);
|
|
84
89
|
const endOfDay = OneUptimeDate.getEndOfDay(usageDate);
|
|
85
|
-
const
|
|
90
|
+
const usageByServiceId = new Map();
|
|
91
|
+
const addUsage = (rows, fallbackRowSizeInBytes) => {
|
|
92
|
+
for (const row of rows) {
|
|
93
|
+
const bytes = row.estimatedBytes > 0
|
|
94
|
+
? row.estimatedBytes
|
|
95
|
+
: row.rowCount * fallbackRowSizeInBytes;
|
|
96
|
+
const existing = usageByServiceId.get(row.serviceId);
|
|
97
|
+
if (existing) {
|
|
98
|
+
existing.bytes += bytes;
|
|
99
|
+
if (!existing.serviceType && row.serviceType) {
|
|
100
|
+
existing.serviceType = row.serviceType;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
usageByServiceId.set(row.serviceId, {
|
|
105
|
+
serviceType: row.serviceType,
|
|
106
|
+
bytes,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
try {
|
|
112
|
+
if (data.productType === ProductType.Traces) {
|
|
113
|
+
addUsage(await SpanService.groupTelemetryUsageByService({
|
|
114
|
+
projectId: data.projectId,
|
|
115
|
+
timestampColumnName: "startTime",
|
|
116
|
+
startDate: startOfDay,
|
|
117
|
+
endDate: endOfDay,
|
|
118
|
+
}), averageRowSizeInBytes);
|
|
119
|
+
addUsage(await ExceptionInstanceService.groupTelemetryUsageByService({
|
|
120
|
+
projectId: data.projectId,
|
|
121
|
+
timestampColumnName: "time",
|
|
122
|
+
startDate: startOfDay,
|
|
123
|
+
endDate: endOfDay,
|
|
124
|
+
}), averageExceptionRowSizeInBytes);
|
|
125
|
+
}
|
|
126
|
+
else if (data.productType === ProductType.Logs) {
|
|
127
|
+
addUsage(await LogService.groupTelemetryUsageByService({
|
|
128
|
+
projectId: data.projectId,
|
|
129
|
+
timestampColumnName: "time",
|
|
130
|
+
startDate: startOfDay,
|
|
131
|
+
endDate: endOfDay,
|
|
132
|
+
}), averageRowSizeInBytes);
|
|
133
|
+
}
|
|
134
|
+
else if (data.productType === ProductType.Metrics) {
|
|
135
|
+
addUsage(await MetricService.groupTelemetryUsageByService({
|
|
136
|
+
projectId: data.projectId,
|
|
137
|
+
timestampColumnName: "time",
|
|
138
|
+
startDate: startOfDay,
|
|
139
|
+
endDate: endOfDay,
|
|
140
|
+
}), averageRowSizeInBytes);
|
|
141
|
+
}
|
|
142
|
+
else if (data.productType === ProductType.Profiles) {
|
|
143
|
+
addUsage(await ProfileService.groupTelemetryUsageByService({
|
|
144
|
+
projectId: data.projectId,
|
|
145
|
+
timestampColumnName: "startTime",
|
|
146
|
+
startDate: startOfDay,
|
|
147
|
+
endDate: endOfDay,
|
|
148
|
+
}), averageRowSizeInBytes);
|
|
149
|
+
addUsage(await ProfileSampleService.groupTelemetryUsageByService({
|
|
150
|
+
projectId: data.projectId,
|
|
151
|
+
timestampColumnName: "time",
|
|
152
|
+
startDate: startOfDay,
|
|
153
|
+
endDate: endOfDay,
|
|
154
|
+
}), averageProfileSampleRowSizeInBytes);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
logger.error(`Failed to aggregate telemetry usage for project ${data.projectId.toString()} (${data.productType}):`);
|
|
159
|
+
logger.error(error);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (usageByServiceId.size === 0) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
/*
|
|
166
|
+
* Resolve retention per resource (Service / Host / DockerHost /
|
|
167
|
+
* KubernetesCluster overrides), defaulting to the project default for
|
|
168
|
+
* everything else — including the unattributed bucket. Retention
|
|
169
|
+
* scales the billed cost, so we honor per-resource overrides.
|
|
170
|
+
*/
|
|
171
|
+
const retentionByServiceId = await this.buildTelemetryRetentionMap(data.projectId);
|
|
172
|
+
const projectDefaultRetentionInDays = await this.getProjectDefaultRetentionInDays(data.projectId);
|
|
173
|
+
/*
|
|
174
|
+
* Skip serviceIds already staged for this day so re-runs of the cron
|
|
175
|
+
* don't double-count (updateUsageBilling accumulates into the day's
|
|
176
|
+
* row). One query instead of a findOneBy per serviceId.
|
|
177
|
+
*/
|
|
178
|
+
const alreadyStaged = await this.findBy({
|
|
86
179
|
query: {
|
|
87
180
|
projectId: data.projectId,
|
|
181
|
+
productType: data.productType,
|
|
182
|
+
day: usageDayString,
|
|
88
183
|
},
|
|
89
184
|
select: {
|
|
90
|
-
|
|
91
|
-
retainTelemetryDataForDays: true,
|
|
185
|
+
serviceId: true,
|
|
92
186
|
},
|
|
93
187
|
skip: 0,
|
|
94
188
|
limit: LIMIT_MAX,
|
|
@@ -96,162 +190,117 @@ export class Service extends DatabaseService {
|
|
|
96
190
|
isRoot: true,
|
|
97
191
|
},
|
|
98
192
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
193
|
+
const stagedServiceIds = new Set(alreadyStaged
|
|
194
|
+
.map((row) => {
|
|
195
|
+
var _a;
|
|
196
|
+
return (_a = row.serviceId) === null || _a === void 0 ? void 0 : _a.toString();
|
|
197
|
+
})
|
|
198
|
+
.filter((id) => {
|
|
199
|
+
return Boolean(id);
|
|
200
|
+
}));
|
|
201
|
+
for (const [serviceIdStr, usage] of usageByServiceId) {
|
|
202
|
+
/*
|
|
203
|
+
* Monitor telemetry is billed via the Active Monitoring plan, and
|
|
204
|
+
* Alert/Incident telemetry is OneUptime's own operational data —
|
|
205
|
+
* neither is charged as ingested telemetry volume.
|
|
206
|
+
*/
|
|
207
|
+
if (usage.serviceType === ServiceType.Monitor ||
|
|
208
|
+
usage.serviceType === ServiceType.Alert ||
|
|
209
|
+
usage.serviceType === ServiceType.Incident) {
|
|
104
210
|
continue;
|
|
105
211
|
}
|
|
106
|
-
|
|
107
|
-
query: {
|
|
108
|
-
projectId: data.projectId,
|
|
109
|
-
productType: data.productType,
|
|
110
|
-
serviceId: service.id,
|
|
111
|
-
day: usageDayString,
|
|
112
|
-
},
|
|
113
|
-
select: {
|
|
114
|
-
_id: true,
|
|
115
|
-
},
|
|
116
|
-
props: {
|
|
117
|
-
isRoot: true,
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
if (existingEntry) {
|
|
212
|
+
if (stagedServiceIds.has(serviceIdStr)) {
|
|
121
213
|
continue;
|
|
122
214
|
}
|
|
123
|
-
|
|
124
|
-
try {
|
|
125
|
-
if (data.productType === ProductType.Traces) {
|
|
126
|
-
const spanCount = await SpanService.countBy({
|
|
127
|
-
query: {
|
|
128
|
-
projectId: data.projectId,
|
|
129
|
-
serviceId: service.id,
|
|
130
|
-
startTime: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
131
|
-
},
|
|
132
|
-
skip: 0,
|
|
133
|
-
limit: LIMIT_INFINITY,
|
|
134
|
-
props: {
|
|
135
|
-
isRoot: true,
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
const exceptionCount = await ExceptionInstanceService.countBy({
|
|
139
|
-
query: {
|
|
140
|
-
projectId: data.projectId,
|
|
141
|
-
serviceId: service.id,
|
|
142
|
-
time: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
143
|
-
},
|
|
144
|
-
skip: 0,
|
|
145
|
-
limit: LIMIT_INFINITY,
|
|
146
|
-
props: {
|
|
147
|
-
isRoot: true,
|
|
148
|
-
},
|
|
149
|
-
});
|
|
150
|
-
const totalSpanCount = spanCount.toNumber();
|
|
151
|
-
const totalExceptionCount = exceptionCount.toNumber();
|
|
152
|
-
if (totalSpanCount <= 0 && totalExceptionCount <= 0) {
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
estimatedBytes =
|
|
156
|
-
totalSpanCount * averageRowSizeInBytes +
|
|
157
|
-
totalExceptionCount * averageExceptionRowSizeInBytes;
|
|
158
|
-
}
|
|
159
|
-
else if (data.productType === ProductType.Logs) {
|
|
160
|
-
const count = await LogService.countBy({
|
|
161
|
-
query: {
|
|
162
|
-
projectId: data.projectId,
|
|
163
|
-
serviceId: service.id,
|
|
164
|
-
time: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
165
|
-
},
|
|
166
|
-
skip: 0,
|
|
167
|
-
limit: LIMIT_INFINITY,
|
|
168
|
-
props: {
|
|
169
|
-
isRoot: true,
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
const totalRowCount = count.toNumber();
|
|
173
|
-
if (totalRowCount <= 0) {
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
estimatedBytes = totalRowCount * averageRowSizeInBytes;
|
|
177
|
-
}
|
|
178
|
-
else if (data.productType === ProductType.Metrics) {
|
|
179
|
-
const count = await MetricService.countBy({
|
|
180
|
-
query: {
|
|
181
|
-
projectId: data.projectId,
|
|
182
|
-
serviceId: service.id,
|
|
183
|
-
time: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
184
|
-
},
|
|
185
|
-
skip: 0,
|
|
186
|
-
limit: LIMIT_INFINITY,
|
|
187
|
-
props: {
|
|
188
|
-
isRoot: true,
|
|
189
|
-
},
|
|
190
|
-
});
|
|
191
|
-
const totalRowCount = count.toNumber();
|
|
192
|
-
if (totalRowCount <= 0) {
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
estimatedBytes = totalRowCount * averageRowSizeInBytes;
|
|
196
|
-
}
|
|
197
|
-
else if (data.productType === ProductType.Profiles) {
|
|
198
|
-
const profileCount = await ProfileService.countBy({
|
|
199
|
-
query: {
|
|
200
|
-
projectId: data.projectId,
|
|
201
|
-
serviceId: service.id,
|
|
202
|
-
startTime: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
203
|
-
},
|
|
204
|
-
skip: 0,
|
|
205
|
-
limit: LIMIT_INFINITY,
|
|
206
|
-
props: {
|
|
207
|
-
isRoot: true,
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
|
-
const profileSampleCount = await ProfileSampleService.countBy({
|
|
211
|
-
query: {
|
|
212
|
-
projectId: data.projectId,
|
|
213
|
-
serviceId: service.id,
|
|
214
|
-
time: AnalyticsQueryHelper.inBetween(startOfDay, endOfDay),
|
|
215
|
-
},
|
|
216
|
-
skip: 0,
|
|
217
|
-
limit: LIMIT_INFINITY,
|
|
218
|
-
props: {
|
|
219
|
-
isRoot: true,
|
|
220
|
-
},
|
|
221
|
-
});
|
|
222
|
-
const totalProfileCount = profileCount.toNumber();
|
|
223
|
-
const totalProfileSampleCount = profileSampleCount.toNumber();
|
|
224
|
-
if (totalProfileCount <= 0 && totalProfileSampleCount <= 0) {
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
estimatedBytes =
|
|
228
|
-
totalProfileCount * averageRowSizeInBytes +
|
|
229
|
-
totalProfileSampleCount * averageProfileSampleRowSizeInBytes;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
logger.error(`Failed to compute telemetry usage for service ${(_a = service.id) === null || _a === void 0 ? void 0 : _a.toString()}:`);
|
|
234
|
-
logger.error(error);
|
|
235
|
-
continue;
|
|
236
|
-
}
|
|
237
|
-
if (estimatedBytes <= 0) {
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
const estimatedGigabytes = DiskSize.byteSizeToGB(estimatedBytes);
|
|
215
|
+
const estimatedGigabytes = DiskSize.byteSizeToGB(usage.bytes);
|
|
241
216
|
if (!Number.isFinite(estimatedGigabytes) || estimatedGigabytes <= 0) {
|
|
242
217
|
continue;
|
|
243
218
|
}
|
|
244
|
-
const
|
|
219
|
+
const retentionInDays = (_a = retentionByServiceId.get(serviceIdStr)) !== null && _a !== void 0 ? _a : projectDefaultRetentionInDays;
|
|
220
|
+
/*
|
|
221
|
+
* Legacy rows (pre-discriminator) and any null serviceType are
|
|
222
|
+
* treated as OpenTelemetry — historically every billed serviceId was
|
|
223
|
+
* a real Service.
|
|
224
|
+
*/
|
|
225
|
+
const serviceType = (_b = usage.serviceType) !== null && _b !== void 0 ? _b : ServiceType.OpenTelemetry;
|
|
245
226
|
await this.updateUsageBilling({
|
|
246
227
|
projectId: data.projectId,
|
|
247
228
|
productType: data.productType,
|
|
248
|
-
serviceId:
|
|
229
|
+
serviceId: new ObjectID(serviceIdStr),
|
|
230
|
+
serviceType: serviceType,
|
|
249
231
|
dataIngestedInGB: estimatedGigabytes,
|
|
250
|
-
retentionInDays:
|
|
232
|
+
retentionInDays: retentionInDays,
|
|
251
233
|
usageDate: usageDate,
|
|
252
234
|
});
|
|
253
235
|
}
|
|
254
236
|
}
|
|
237
|
+
/*
|
|
238
|
+
* Map of resourceId -> retainTelemetryDataForDays for every resource in
|
|
239
|
+
* the project that can own telemetry (Service, Host, DockerHost,
|
|
240
|
+
* KubernetesCluster). Used to scale billed cost by the actual retention
|
|
241
|
+
* applied to each resource's telemetry. Resources without an override
|
|
242
|
+
* (and the unattributed bucket) fall back to the project default.
|
|
243
|
+
*/
|
|
244
|
+
async buildTelemetryRetentionMap(projectId) {
|
|
245
|
+
const retentionByServiceId = new Map();
|
|
246
|
+
const services = await ServiceService.findBy({
|
|
247
|
+
query: { projectId: projectId },
|
|
248
|
+
select: { _id: true, retainTelemetryDataForDays: true },
|
|
249
|
+
skip: 0,
|
|
250
|
+
limit: LIMIT_MAX,
|
|
251
|
+
props: { isRoot: true },
|
|
252
|
+
});
|
|
253
|
+
for (const service of services) {
|
|
254
|
+
if (service.id && service.retainTelemetryDataForDays) {
|
|
255
|
+
retentionByServiceId.set(service.id.toString(), service.retainTelemetryDataForDays);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
const hosts = await HostService.findBy({
|
|
259
|
+
query: { projectId: projectId },
|
|
260
|
+
select: { _id: true, retainTelemetryDataForDays: true },
|
|
261
|
+
skip: 0,
|
|
262
|
+
limit: LIMIT_MAX,
|
|
263
|
+
props: { isRoot: true },
|
|
264
|
+
});
|
|
265
|
+
for (const host of hosts) {
|
|
266
|
+
if (host.id && host.retainTelemetryDataForDays) {
|
|
267
|
+
retentionByServiceId.set(host.id.toString(), host.retainTelemetryDataForDays);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const dockerHosts = await DockerHostService.findBy({
|
|
271
|
+
query: { projectId: projectId },
|
|
272
|
+
select: { _id: true, retainTelemetryDataForDays: true },
|
|
273
|
+
skip: 0,
|
|
274
|
+
limit: LIMIT_MAX,
|
|
275
|
+
props: { isRoot: true },
|
|
276
|
+
});
|
|
277
|
+
for (const dockerHost of dockerHosts) {
|
|
278
|
+
if (dockerHost.id && dockerHost.retainTelemetryDataForDays) {
|
|
279
|
+
retentionByServiceId.set(dockerHost.id.toString(), dockerHost.retainTelemetryDataForDays);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const clusters = await KubernetesClusterService.findBy({
|
|
283
|
+
query: { projectId: projectId },
|
|
284
|
+
select: { _id: true, retainTelemetryDataForDays: true },
|
|
285
|
+
skip: 0,
|
|
286
|
+
limit: LIMIT_MAX,
|
|
287
|
+
props: { isRoot: true },
|
|
288
|
+
});
|
|
289
|
+
for (const cluster of clusters) {
|
|
290
|
+
if (cluster.id && cluster.retainTelemetryDataForDays) {
|
|
291
|
+
retentionByServiceId.set(cluster.id.toString(), cluster.retainTelemetryDataForDays);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return retentionByServiceId;
|
|
295
|
+
}
|
|
296
|
+
async getProjectDefaultRetentionInDays(projectId) {
|
|
297
|
+
const project = await ProjectService.findOneById({
|
|
298
|
+
id: projectId,
|
|
299
|
+
select: { defaultTelemetryRetentionInDays: true },
|
|
300
|
+
props: { isRoot: true },
|
|
301
|
+
});
|
|
302
|
+
return ((project === null || project === void 0 ? void 0 : project.defaultTelemetryRetentionInDays) || DEFAULT_RETENTION_IN_DAYS);
|
|
303
|
+
}
|
|
255
304
|
async updateUsageBilling(data) {
|
|
256
305
|
var _a, _b;
|
|
257
306
|
if (data.productType !== ProductType.Traces &&
|
|
@@ -315,6 +364,9 @@ export class Service extends DatabaseService {
|
|
|
315
364
|
usageBilling.productType = data.productType;
|
|
316
365
|
usageBilling.dataIngestedInGB = new Decimal(data.dataIngestedInGB);
|
|
317
366
|
usageBilling.serviceId = data.serviceId;
|
|
367
|
+
if (data.serviceType) {
|
|
368
|
+
usageBilling.serviceType = data.serviceType;
|
|
369
|
+
}
|
|
318
370
|
usageBilling.retainTelemetryDataForDays = data.retentionInDays;
|
|
319
371
|
usageBilling.isReportedToBillingProvider = false;
|
|
320
372
|
usageBilling.createdAt = usageDate;
|
|
@@ -382,6 +434,18 @@ __decorate([
|
|
|
382
434
|
__metadata("design:paramtypes", [Object]),
|
|
383
435
|
__metadata("design:returntype", Promise)
|
|
384
436
|
], Service.prototype, "stageTelemetryUsageForProject", null);
|
|
437
|
+
__decorate([
|
|
438
|
+
CaptureSpan(),
|
|
439
|
+
__metadata("design:type", Function),
|
|
440
|
+
__metadata("design:paramtypes", [ObjectID]),
|
|
441
|
+
__metadata("design:returntype", Promise)
|
|
442
|
+
], Service.prototype, "buildTelemetryRetentionMap", null);
|
|
443
|
+
__decorate([
|
|
444
|
+
CaptureSpan(),
|
|
445
|
+
__metadata("design:type", Function),
|
|
446
|
+
__metadata("design:paramtypes", [ObjectID]),
|
|
447
|
+
__metadata("design:returntype", Promise)
|
|
448
|
+
], Service.prototype, "getProjectDefaultRetentionInDays", null);
|
|
385
449
|
__decorate([
|
|
386
450
|
CaptureSpan(),
|
|
387
451
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TelemetryUsageBillingService.js","sourceRoot":"","sources":["../../../../Server/Services/TelemetryUsageBillingService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TelemetryUsageBillingService.js","sourceRoot":"","sources":["../../../../Server/Services/TelemetryUsageBillingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -439,6 +439,20 @@ export default class ModelPermission {
|
|
|
439
439
|
allowedResourceIds.add(id);
|
|
440
440
|
}
|
|
441
441
|
}
|
|
442
|
+
/*
|
|
443
|
+
* Telemetry with no owning resource (the unattributed "Unknown"
|
|
444
|
+
* bucket) is tagged with the projectId in place of a resource id. It
|
|
445
|
+
* belongs to the project, not any owner, so an Owned-scoped user
|
|
446
|
+
* (project-level catch-all access) sees it. Gated on hasOwnedGrant:
|
|
447
|
+
* a purely Labels-scoped user asked for label-matching telemetry, and
|
|
448
|
+
* the unattributed bucket carries no labels, so it stays excluded for
|
|
449
|
+
* them.
|
|
450
|
+
*/
|
|
451
|
+
if (hasOwnedGrant &&
|
|
452
|
+
model.ownedThrough.includeProjectScope &&
|
|
453
|
+
props.tenantId) {
|
|
454
|
+
allowedResourceIds.add(props.tenantId.toString());
|
|
455
|
+
}
|
|
442
456
|
const fkColumn = model.ownedThrough.fkColumn;
|
|
443
457
|
const idList = allowedResourceIds.size > 0
|
|
444
458
|
? Array.from(allowedResourceIds)
|
|
@@ -466,40 +480,51 @@ export default class ModelPermission {
|
|
|
466
480
|
const ownerTableRegistry =
|
|
467
481
|
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
468
482
|
require("../Database/Permissions/OwnerTableRegistry").default;
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
483
|
+
/*
|
|
484
|
+
* Telemetry serviceId is polymorphic — it can reference any resource
|
|
485
|
+
* type flagged `canOwnTelemetry` in the registry (Service, Monitor,
|
|
486
|
+
* Host, DockerHost, KubernetesCluster). Resolve ownership across all of
|
|
487
|
+
* them so a user who owns any such resource sees its telemetry, not
|
|
488
|
+
* just owned Services. The polymorphic set lives only in the registry
|
|
489
|
+
* (single source of truth); the resolved union is the same for every
|
|
490
|
+
* telemetry analytics model, so the single per-request `ownedIds`
|
|
491
|
+
* cache slot still holds it.
|
|
492
|
+
*/
|
|
493
|
+
for (const entry of ownerTableRegistry.values()) {
|
|
494
|
+
if (!entry.canOwnTelemetry) {
|
|
495
|
+
continue;
|
|
496
|
+
}
|
|
497
|
+
const fkColumn = entry.fkColumn;
|
|
498
|
+
if (props.userId) {
|
|
499
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
500
|
+
const userOwnedRows = await entry.ownerUserService.findBy({
|
|
501
|
+
query: Object.assign({ userId: props.userId }, (props.tenantId ? { projectId: props.tenantId } : {})),
|
|
502
|
+
select: { [fkColumn]: true },
|
|
503
|
+
props: { isRoot: true },
|
|
504
|
+
skip: 0,
|
|
505
|
+
limit: LIMIT_MAX,
|
|
506
|
+
});
|
|
507
|
+
for (const row of userOwnedRows) {
|
|
508
|
+
const id = row[fkColumn];
|
|
509
|
+
if (id) {
|
|
510
|
+
result.add(id.toString());
|
|
511
|
+
}
|
|
487
512
|
}
|
|
488
513
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
514
|
+
if (props.userTeamIds && props.userTeamIds.length > 0) {
|
|
515
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
516
|
+
const teamOwnedRows = await entry.ownerTeamService.findBy({
|
|
517
|
+
query: Object.assign({ teamId: QueryHelper.any(props.userTeamIds) }, (props.tenantId ? { projectId: props.tenantId } : {})),
|
|
518
|
+
select: { [fkColumn]: true },
|
|
519
|
+
props: { isRoot: true },
|
|
520
|
+
skip: 0,
|
|
521
|
+
limit: LIMIT_MAX,
|
|
522
|
+
});
|
|
523
|
+
for (const row of teamOwnedRows) {
|
|
524
|
+
const id = row[fkColumn];
|
|
525
|
+
if (id) {
|
|
526
|
+
result.add(id.toString());
|
|
527
|
+
}
|
|
503
528
|
}
|
|
504
529
|
}
|
|
505
530
|
}
|
|
@@ -535,41 +560,37 @@ export default class ModelPermission {
|
|
|
535
560
|
if (cached) {
|
|
536
561
|
return cached;
|
|
537
562
|
}
|
|
538
|
-
const ServiceService =
|
|
539
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
540
|
-
require("../../Services/ServiceService").default;
|
|
541
|
-
const MonitorService =
|
|
542
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
543
|
-
require("../../Services/MonitorService").default;
|
|
544
563
|
const tenantFilter = props.tenantId
|
|
545
564
|
? { projectId: props.tenantId }
|
|
546
565
|
: {};
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
566
|
+
const ownerTableRegistry =
|
|
567
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
568
|
+
require("../Database/Permissions/OwnerTableRegistry").default;
|
|
569
|
+
/*
|
|
570
|
+
* Telemetry serviceId is polymorphic across every resource type
|
|
571
|
+
* flagged `canOwnTelemetry` in the registry (Service, Monitor, Host,
|
|
572
|
+
* DockerHost, KubernetesCluster), each of which carries labels. Find
|
|
573
|
+
* rows of each whose labels intersect the user's. Keeping this set in
|
|
574
|
+
* the registry (single source of truth) means a new telemetry-owning
|
|
575
|
+
* resource is picked up here automatically — no edits needed.
|
|
576
|
+
*/
|
|
577
|
+
for (const entry of ownerTableRegistry.values()) {
|
|
578
|
+
if (!entry.canOwnTelemetry || !entry.modelService) {
|
|
579
|
+
continue;
|
|
559
580
|
}
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
581
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
582
|
+
const rows = await entry.modelService.findBy({
|
|
583
|
+
query: Object.assign({ labels: labelIds }, tenantFilter),
|
|
584
|
+
select: { _id: true },
|
|
585
|
+
props: { isRoot: true },
|
|
586
|
+
skip: 0,
|
|
587
|
+
limit: LIMIT_MAX,
|
|
588
|
+
});
|
|
589
|
+
for (const row of rows) {
|
|
590
|
+
const id = row._id;
|
|
591
|
+
if (id) {
|
|
592
|
+
result.add(id.toString());
|
|
593
|
+
}
|
|
573
594
|
}
|
|
574
595
|
}
|
|
575
596
|
cache.labeledIds.set(cacheKey, result);
|