@oneuptime/common 10.5.9 → 10.5.18
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/TelemetryAPI.ts +6 -0
- package/Server/API/TelemetryExceptionAPI.ts +6 -2
- package/Server/EnvironmentConfig.ts +27 -0
- package/Server/Infrastructure/ClickhouseDatabase.ts +21 -1
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +19 -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 +8 -0
- package/Server/Infrastructure/PostgresDatabase.ts +27 -1
- package/Server/Infrastructure/QueueWorker.ts +54 -4
- package/Server/Infrastructure/Redis.ts +11 -0
- package/Server/Services/AnalyticsDatabaseService.ts +87 -0
- package/Server/Services/DatabaseService.ts +73 -0
- package/Server/Services/TelemetryAttributeService.ts +38 -2
- 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/Express.ts +32 -0
- package/Server/Utils/GracefulShutdown.ts +194 -0
- package/Server/Utils/Logger.ts +12 -1
- package/Server/Utils/Monitor/MonitorLogUtil.ts +22 -17
- package/Server/Utils/Profiling.ts +14 -6
- package/Server/Utils/StartServer.ts +13 -5
- package/Server/Utils/Telemetry/ContextSpanProcessor.ts +48 -0
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +289 -0
- package/Server/Utils/Telemetry/SpanUtil.ts +16 -35
- package/Server/Utils/Telemetry/StackTraceParser.ts +423 -0
- package/Server/Utils/Telemetry/TelemetryContext.ts +190 -0
- package/Server/Utils/Telemetry.ts +33 -7
- package/Tests/Server/Services/TelemetryAttributeService.test.ts +83 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
- package/Types/Database/AccessControl/OwnedThrough.ts +31 -3
- package/Types/Telemetry/ServiceType.ts +10 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +7 -1
- package/UI/Components/Dictionary/Dictionary.tsx +19 -0
- package/UI/Components/Filters/FiltersForm.tsx +1 -0
- package/UI/Components/Filters/JSONFilter.tsx +2 -0
- package/UI/Components/Filters/Types/Filter.ts +1 -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/TelemetryAPI.js +4 -0
- package/build/dist/Server/API/TelemetryAPI.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/EnvironmentConfig.js +19 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js +16 -2
- package/build/dist/Server/Infrastructure/ClickhouseDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +10 -9
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.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/PostgresDatabase.js +20 -1
- package/build/dist/Server/Infrastructure/PostgresDatabase.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +40 -3
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Infrastructure/Redis.js +5 -0
- package/build/dist/Server/Infrastructure/Redis.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/TelemetryAttributeService.js +23 -1
- package/build/dist/Server/Services/TelemetryAttributeService.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/Express.js +23 -0
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/GracefulShutdown.js +145 -0
- package/build/dist/Server/Utils/GracefulShutdown.js.map +1 -0
- package/build/dist/Server/Utils/Logger.js +8 -1
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +12 -10
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
- package/build/dist/Server/Utils/Profiling.js +8 -3
- package/build/dist/Server/Utils/Profiling.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/LogExceptionExtractor.js +214 -0
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.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/StackTraceParser.js +365 -0
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -0
- 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 +22 -5
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +50 -0
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +1 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +1 -0
- 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/AutocompleteTextInput/AutocompleteTextInput.js +7 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js +10 -0
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.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);
|