@oneuptime/common 10.7.2 → 10.8.1
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/DatabaseModels/CloudResource.ts +846 -0
- package/Models/DatabaseModels/CloudResourceInstance.ts +276 -0
- package/Models/DatabaseModels/CloudResourceLabelRule.ts +510 -0
- package/Models/DatabaseModels/CloudResourceOwnerRule.ts +592 -0
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Host.ts +209 -0
- package/Models/DatabaseModels/Index.ts +36 -0
- package/Models/DatabaseModels/RumApplication.ts +731 -0
- package/Models/DatabaseModels/RumApplicationClient.ts +229 -0
- package/Models/DatabaseModels/RumApplicationLabelRule.ts +510 -0
- package/Models/DatabaseModels/RumApplicationOwnerRule.ts +592 -0
- package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +486 -0
- package/Models/DatabaseModels/RumApplicationOwnerUser.ts +485 -0
- package/Models/DatabaseModels/ServerlessFunction.ts +881 -0
- package/Models/DatabaseModels/ServerlessFunctionInstance.ts +212 -0
- package/Models/DatabaseModels/ServerlessFunctionLabelRule.ts +510 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerRule.ts +592 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +486 -0
- package/Models/DatabaseModels/Service.ts +268 -0
- package/Models/DatabaseModels/TelemetryException.ts +15 -1
- package/Models/DatabaseModels/WorkflowLog.ts +52 -0
- package/Server/API/TelemetryAPI.ts +78 -25
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.ts +21 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.ts +108 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.ts +205 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts +195 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.ts +202 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.ts +156 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.ts +149 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
- package/Server/Infrastructure/Queue.ts +11 -0
- package/Server/Services/CloudResourceInstanceService.ts +76 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +175 -0
- package/Server/Services/CloudResourceLabelRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +192 -0
- package/Server/Services/CloudResourceOwnerRuleService.ts +14 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +10 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +10 -0
- package/Server/Services/CloudResourceService.ts +342 -0
- package/Server/Services/ExceptionAggregationService.ts +3 -0
- package/Server/Services/HostService.ts +42 -0
- package/Server/Services/LogAggregationService.ts +44 -16
- package/Server/Services/MetricAggregationService.ts +3 -0
- package/Server/Services/OpenTelemetryIngestService.ts +148 -1
- package/Server/Services/RumApplicationClientService.ts +69 -0
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +175 -0
- package/Server/Services/RumApplicationLabelRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +192 -0
- package/Server/Services/RumApplicationOwnerRuleService.ts +14 -0
- package/Server/Services/RumApplicationOwnerTeamService.ts +10 -0
- package/Server/Services/RumApplicationOwnerUserService.ts +10 -0
- package/Server/Services/RumApplicationService.ts +301 -0
- package/Server/Services/ServerlessFunctionInstanceService.ts +61 -0
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +182 -0
- package/Server/Services/ServerlessFunctionLabelRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +199 -0
- package/Server/Services/ServerlessFunctionOwnerRuleService.ts +14 -0
- package/Server/Services/ServerlessFunctionOwnerTeamService.ts +10 -0
- package/Server/Services/ServerlessFunctionOwnerUserService.ts +10 -0
- package/Server/Services/ServerlessFunctionService.ts +351 -0
- package/Server/Services/ServiceService.ts +95 -8
- package/Server/Services/TraceAggregationService.ts +131 -4
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +39 -0
- package/Server/Types/Workflow/ComponentCode.ts +9 -0
- package/Server/Types/Workflow/Components/Index.ts +2 -0
- package/Server/Types/Workflow/Components/Sleep.ts +105 -0
- package/Server/Types/Workflow/Workflow.ts +6 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +150 -0
- package/Types/Permission.ts +692 -1
- package/Types/Telemetry/ServiceType.ts +3 -0
- package/Types/Workflow/ComponentID.ts +1 -0
- package/Types/Workflow/Components/Sleep.ts +71 -0
- package/Types/Workflow/Components.ts +2 -0
- package/Types/Workflow/WorkflowStatus.ts +1 -0
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +159 -32
- package/UI/Components/Navbar/NavBar.tsx +72 -123
- package/UI/Components/Navbar/NavBarMenuModal.tsx +642 -0
- package/UI/Components/Workflow/WorkflowStatus.tsx +3 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js +871 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js +300 -0
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/CloudResourceLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Host.js +215 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +36 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +751 -0
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js +252 -0
- package/build/dist/Models/DatabaseModels/RumApplicationClient.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/RumApplicationLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js +908 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js +234 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js +520 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js +601 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Service.js +276 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLog.js +53 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +61 -23
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931746908-AddResumeStateToWorkflowLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js +53 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js +83 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780936579718-AddRumApplicationTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js +67 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780938407319-AddServerlessFunctionRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940721814-AddCloudResourceRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780940998002-AddRumApplicationRuleTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js +45 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780941762204-AddTelemetryResourceInventoryTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780985763463-AddRumApplicationSdkLanguage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780987192743-RecastCloudResourcesByEnvironment.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +3 -0
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceInstanceService.js +76 -0
- package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/CloudResourceOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +9 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceService.js +287 -0
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js +3 -0
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +29 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +36 -10
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +3 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +98 -2
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationClientService.js +70 -0
- package/build/dist/Server/Services/RumApplicationClientService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/RumApplicationOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js +9 -0
- package/build/dist/Server/Services/RumApplicationOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/RumApplicationService.js +259 -0
- package/build/dist/Server/Services/RumApplicationService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +64 -0
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +160 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +179 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js +9 -0
- package/build/dist/Server/Services/ServerlessFunctionOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js +299 -0
- package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -0
- package/build/dist/Server/Services/ServiceService.js +63 -7
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +108 -4
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +39 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Workflow/ComponentCode.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
- package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Sleep.js +85 -0
- package/build/dist/Server/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +90 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Types/Permission.js +609 -1
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +3 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/Types/Workflow/ComponentID.js +1 -0
- package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Sleep.js +64 -0
- package/build/dist/Types/Workflow/Components/Sleep.js.map +1 -0
- package/build/dist/Types/Workflow/Components.js +2 -0
- package/build/dist/Types/Workflow/Components.js.map +1 -1
- package/build/dist/Types/Workflow/WorkflowStatus.js +1 -0
- package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +113 -19
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +34 -66
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +412 -0
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js +3 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatus.js.map +1 -1
- package/package.json +1 -1
- package/UI/Components/Navbar/NavBarMenu.tsx +0 -183
- package/UI/Components/Navbar/NavBarMenuItem.tsx +0 -146
- package/build/dist/UI/Components/Navbar/NavBarMenu.js +0 -82
- package/build/dist/UI/Components/Navbar/NavBarMenu.js.map +0 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js +0 -109
- package/build/dist/UI/Components/Navbar/NavBarMenuItem.js.map +0 -1
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import DatabaseService from "./DatabaseService";
|
|
11
|
+
import Model from "../../Models/DatabaseModels/ServerlessFunction";
|
|
12
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
13
|
+
import ObjectID from "../../Types/ObjectID";
|
|
14
|
+
import QueryHelper from "../Types/Database/QueryHelper";
|
|
15
|
+
import OneUptimeDate from "../../Types/Date";
|
|
16
|
+
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
17
|
+
import GlobalCache from "../Infrastructure/GlobalCache";
|
|
18
|
+
import logger from "../Utils/Logger";
|
|
19
|
+
import crypto from "crypto";
|
|
20
|
+
import ServerlessFunctionLabelRuleEngineService from "./ServerlessFunctionLabelRuleEngineService";
|
|
21
|
+
import ServerlessFunctionOwnerRuleEngineService from "./ServerlessFunctionOwnerRuleEngineService";
|
|
22
|
+
const LAST_SEEN_CACHE_NAMESPACE = "serverless-function-last-seen";
|
|
23
|
+
const LAST_SEEN_THROTTLE_SECONDS = 60;
|
|
24
|
+
const LABELS_APPLIED_CACHE_NAMESPACE = "serverless-function-labels-applied";
|
|
25
|
+
const LABELS_APPLIED_CACHE_TTL_SECONDS = 60;
|
|
26
|
+
export class Service extends DatabaseService {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(Model);
|
|
29
|
+
}
|
|
30
|
+
async onCreateSuccess(_onCreate, createdItem) {
|
|
31
|
+
if (createdItem.projectId && createdItem.id) {
|
|
32
|
+
Promise.resolve()
|
|
33
|
+
.then(async () => {
|
|
34
|
+
await ServerlessFunctionLabelRuleEngineService.applyRulesToServerlessFunction(createdItem);
|
|
35
|
+
})
|
|
36
|
+
.then(async () => {
|
|
37
|
+
await ServerlessFunctionOwnerRuleEngineService.applyRulesToServerlessFunction(createdItem);
|
|
38
|
+
})
|
|
39
|
+
.catch((error) => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
logger.error(`Error applying serverless function rules in ServerlessFunctionService.onCreateSuccess: ${error}`, {
|
|
42
|
+
projectId: (_a = createdItem.projectId) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
43
|
+
serverlessFunctionId: (_b = createdItem.id) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return createdItem;
|
|
48
|
+
}
|
|
49
|
+
async findOrCreateByFunctionIdentifier(data) {
|
|
50
|
+
/*
|
|
51
|
+
* Look up case-insensitively. The unique guard on name/functionIdentifier
|
|
52
|
+
* (checkUniqueColumnBy -> findWithSameText) compares case-insensitively,
|
|
53
|
+
* so a case-sensitive lookup would miss an existing row on casing drift
|
|
54
|
+
* (faas.name), then fail to create it ("ServerlessFunction with the same
|
|
55
|
+
* name already exists") and wedge ingest. We keep the stored casing as-is
|
|
56
|
+
* so it stays in sync with the raw-cased resource.faas.name attribute the
|
|
57
|
+
* detail page filters on.
|
|
58
|
+
*/
|
|
59
|
+
const existingFunction = await this.findOneBy({
|
|
60
|
+
query: {
|
|
61
|
+
projectId: data.projectId,
|
|
62
|
+
functionIdentifier: QueryHelper.findWithSameText(data.functionIdentifier),
|
|
63
|
+
},
|
|
64
|
+
select: {
|
|
65
|
+
_id: true,
|
|
66
|
+
projectId: true,
|
|
67
|
+
functionIdentifier: true,
|
|
68
|
+
},
|
|
69
|
+
props: {
|
|
70
|
+
isRoot: true,
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
if (existingFunction) {
|
|
74
|
+
return existingFunction;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const newFunction = new Model();
|
|
78
|
+
newFunction.projectId = data.projectId;
|
|
79
|
+
newFunction.name = data.functionIdentifier;
|
|
80
|
+
newFunction.functionIdentifier = data.functionIdentifier;
|
|
81
|
+
newFunction.otelCollectorStatus = "connected";
|
|
82
|
+
newFunction.lastSeenAt = OneUptimeDate.getCurrentDate();
|
|
83
|
+
const createdFunction = await this.create({
|
|
84
|
+
data: newFunction,
|
|
85
|
+
props: {
|
|
86
|
+
isRoot: true,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
return createdFunction;
|
|
90
|
+
}
|
|
91
|
+
catch (_a) {
|
|
92
|
+
/*
|
|
93
|
+
* Race condition: another request created the function concurrently.
|
|
94
|
+
* Re-fetch the existing row.
|
|
95
|
+
*/
|
|
96
|
+
const reFetchedFunction = await this.findOneBy({
|
|
97
|
+
query: {
|
|
98
|
+
projectId: data.projectId,
|
|
99
|
+
functionIdentifier: QueryHelper.findWithSameText(data.functionIdentifier),
|
|
100
|
+
},
|
|
101
|
+
select: {
|
|
102
|
+
_id: true,
|
|
103
|
+
projectId: true,
|
|
104
|
+
functionIdentifier: true,
|
|
105
|
+
},
|
|
106
|
+
props: {
|
|
107
|
+
isRoot: true,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
if (reFetchedFunction) {
|
|
111
|
+
return reFetchedFunction;
|
|
112
|
+
}
|
|
113
|
+
throw new Error("Failed to create or find serverless function: " +
|
|
114
|
+
data.functionIdentifier);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async updateLastSeen(serverlessFunctionId, extra) {
|
|
118
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
119
|
+
const cacheKey = serverlessFunctionId.toString();
|
|
120
|
+
const extrasFingerprint = crypto
|
|
121
|
+
.createHash("sha1")
|
|
122
|
+
.update(JSON.stringify({
|
|
123
|
+
agentVersion: (_a = extra === null || extra === void 0 ? void 0 : extra.agentVersion) !== null && _a !== void 0 ? _a : null,
|
|
124
|
+
cloudPlatform: (_b = extra === null || extra === void 0 ? void 0 : extra.cloudPlatform) !== null && _b !== void 0 ? _b : null,
|
|
125
|
+
cloudProvider: (_c = extra === null || extra === void 0 ? void 0 : extra.cloudProvider) !== null && _c !== void 0 ? _c : null,
|
|
126
|
+
cloudRegion: (_d = extra === null || extra === void 0 ? void 0 : extra.cloudRegion) !== null && _d !== void 0 ? _d : null,
|
|
127
|
+
cloudAccountId: (_e = extra === null || extra === void 0 ? void 0 : extra.cloudAccountId) !== null && _e !== void 0 ? _e : null,
|
|
128
|
+
functionVersion: (_f = extra === null || extra === void 0 ? void 0 : extra.functionVersion) !== null && _f !== void 0 ? _f : null,
|
|
129
|
+
runtimeName: (_g = extra === null || extra === void 0 ? void 0 : extra.runtimeName) !== null && _g !== void 0 ? _g : null,
|
|
130
|
+
runtimeVersion: (_h = extra === null || extra === void 0 ? void 0 : extra.runtimeVersion) !== null && _h !== void 0 ? _h : null,
|
|
131
|
+
}))
|
|
132
|
+
.digest("hex");
|
|
133
|
+
const cached = await GlobalCache.getString(LAST_SEEN_CACHE_NAMESPACE, cacheKey);
|
|
134
|
+
if (cached === extrasFingerprint) {
|
|
135
|
+
return; // same data was written recently
|
|
136
|
+
}
|
|
137
|
+
await GlobalCache.setString(LAST_SEEN_CACHE_NAMESPACE, cacheKey, extrasFingerprint, { expiresInSeconds: LAST_SEEN_THROTTLE_SECONDS });
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
+
const data = {
|
|
140
|
+
lastSeenAt: OneUptimeDate.getCurrentDate(),
|
|
141
|
+
otelCollectorStatus: "connected",
|
|
142
|
+
};
|
|
143
|
+
if (extra === null || extra === void 0 ? void 0 : extra.agentVersion) {
|
|
144
|
+
data.agentVersion = extra.agentVersion;
|
|
145
|
+
}
|
|
146
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudPlatform) {
|
|
147
|
+
data.cloudPlatform = extra.cloudPlatform;
|
|
148
|
+
}
|
|
149
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudProvider) {
|
|
150
|
+
data.cloudProvider = extra.cloudProvider;
|
|
151
|
+
}
|
|
152
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudRegion) {
|
|
153
|
+
data.cloudRegion = extra.cloudRegion;
|
|
154
|
+
}
|
|
155
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudAccountId) {
|
|
156
|
+
data.cloudAccountId = extra.cloudAccountId;
|
|
157
|
+
}
|
|
158
|
+
if (extra === null || extra === void 0 ? void 0 : extra.functionVersion) {
|
|
159
|
+
data.functionVersion = extra.functionVersion;
|
|
160
|
+
}
|
|
161
|
+
if (extra === null || extra === void 0 ? void 0 : extra.runtimeName) {
|
|
162
|
+
data.runtimeName = extra.runtimeName;
|
|
163
|
+
}
|
|
164
|
+
if (extra === null || extra === void 0 ? void 0 : extra.runtimeVersion) {
|
|
165
|
+
data.runtimeVersion = extra.runtimeVersion;
|
|
166
|
+
}
|
|
167
|
+
await this.updateOneById({
|
|
168
|
+
id: serverlessFunctionId,
|
|
169
|
+
data: data,
|
|
170
|
+
props: {
|
|
171
|
+
isRoot: true,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Additively attach labels to a serverless function. Existing labels are
|
|
177
|
+
* never removed — manual labels set via the UI survive ingest. The set of
|
|
178
|
+
* labelIds is fingerprinted and cached for 60s so steady-state ingest with
|
|
179
|
+
* an unchanged label set costs one in-memory lookup.
|
|
180
|
+
*/
|
|
181
|
+
async attachLabels(data) {
|
|
182
|
+
var _a;
|
|
183
|
+
if (!data.labelIds || data.labelIds.length === 0) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const cacheKey = data.serverlessFunctionId.toString();
|
|
187
|
+
const fingerprint = fingerprintLabelIds(data.labelIds);
|
|
188
|
+
const cached = await GlobalCache.getString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey);
|
|
189
|
+
if (cached === fingerprint) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
const functionIdStr = data.serverlessFunctionId.toString();
|
|
194
|
+
const existingLabels = await this.getRepository()
|
|
195
|
+
.createQueryBuilder()
|
|
196
|
+
.relation(Model, "labels")
|
|
197
|
+
.of(functionIdStr)
|
|
198
|
+
.loadMany();
|
|
199
|
+
const existingIds = new Set();
|
|
200
|
+
for (const lbl of existingLabels) {
|
|
201
|
+
const idStr = (_a = lbl._id) === null || _a === void 0 ? void 0 : _a.toString();
|
|
202
|
+
if (idStr) {
|
|
203
|
+
existingIds.add(idStr);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const toAddIds = [];
|
|
207
|
+
const seen = new Set();
|
|
208
|
+
for (const id of data.labelIds) {
|
|
209
|
+
const idStr = id.toString();
|
|
210
|
+
if (existingIds.has(idStr) || seen.has(idStr)) {
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
seen.add(idStr);
|
|
214
|
+
toAddIds.push(idStr);
|
|
215
|
+
}
|
|
216
|
+
if (toAddIds.length > 0) {
|
|
217
|
+
await this.getRepository()
|
|
218
|
+
.createQueryBuilder()
|
|
219
|
+
.relation(Model, "labels")
|
|
220
|
+
.of(functionIdStr)
|
|
221
|
+
.add(toAddIds);
|
|
222
|
+
}
|
|
223
|
+
await GlobalCache.setString(LABELS_APPLIED_CACHE_NAMESPACE, cacheKey, fingerprint, { expiresInSeconds: LABELS_APPLIED_CACHE_TTL_SECONDS });
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
logger.warn(`ServerlessFunctionService.attachLabels failed for function ${data.serverlessFunctionId.toString()}: ${err instanceof Error ? err.message : String(err)}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async markDisconnectedFunctions() {
|
|
230
|
+
const fiveMinutesAgo = OneUptimeDate.addRemoveMinutes(OneUptimeDate.getCurrentDate(), -5);
|
|
231
|
+
const connectedFunctions = await this.findBy({
|
|
232
|
+
query: {
|
|
233
|
+
otelCollectorStatus: "connected",
|
|
234
|
+
lastSeenAt: QueryHelper.lessThan(fiveMinutesAgo),
|
|
235
|
+
},
|
|
236
|
+
select: {
|
|
237
|
+
_id: true,
|
|
238
|
+
},
|
|
239
|
+
limit: LIMIT_MAX,
|
|
240
|
+
skip: 0,
|
|
241
|
+
props: {
|
|
242
|
+
isRoot: true,
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
for (const serverlessFunction of connectedFunctions) {
|
|
246
|
+
if (serverlessFunction._id) {
|
|
247
|
+
await this.updateOneById({
|
|
248
|
+
id: new ObjectID(serverlessFunction._id.toString()),
|
|
249
|
+
data: {
|
|
250
|
+
otelCollectorStatus: "disconnected",
|
|
251
|
+
},
|
|
252
|
+
props: {
|
|
253
|
+
isRoot: true,
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
__decorate([
|
|
261
|
+
CaptureSpan(),
|
|
262
|
+
__metadata("design:type", Function),
|
|
263
|
+
__metadata("design:paramtypes", [Object, Model]),
|
|
264
|
+
__metadata("design:returntype", Promise)
|
|
265
|
+
], Service.prototype, "onCreateSuccess", null);
|
|
266
|
+
__decorate([
|
|
267
|
+
CaptureSpan(),
|
|
268
|
+
__metadata("design:type", Function),
|
|
269
|
+
__metadata("design:paramtypes", [Object]),
|
|
270
|
+
__metadata("design:returntype", Promise)
|
|
271
|
+
], Service.prototype, "findOrCreateByFunctionIdentifier", null);
|
|
272
|
+
__decorate([
|
|
273
|
+
CaptureSpan(),
|
|
274
|
+
__metadata("design:type", Function),
|
|
275
|
+
__metadata("design:paramtypes", [ObjectID, Object]),
|
|
276
|
+
__metadata("design:returntype", Promise)
|
|
277
|
+
], Service.prototype, "updateLastSeen", null);
|
|
278
|
+
__decorate([
|
|
279
|
+
CaptureSpan(),
|
|
280
|
+
__metadata("design:type", Function),
|
|
281
|
+
__metadata("design:paramtypes", [Object]),
|
|
282
|
+
__metadata("design:returntype", Promise)
|
|
283
|
+
], Service.prototype, "attachLabels", null);
|
|
284
|
+
__decorate([
|
|
285
|
+
CaptureSpan(),
|
|
286
|
+
__metadata("design:type", Function),
|
|
287
|
+
__metadata("design:paramtypes", []),
|
|
288
|
+
__metadata("design:returntype", Promise)
|
|
289
|
+
], Service.prototype, "markDisconnectedFunctions", null);
|
|
290
|
+
function fingerprintLabelIds(labelIds) {
|
|
291
|
+
const sorted = labelIds
|
|
292
|
+
.map((id) => {
|
|
293
|
+
return id.toString();
|
|
294
|
+
})
|
|
295
|
+
.sort();
|
|
296
|
+
return crypto.createHash("sha1").update(sorted.join(",")).digest("hex");
|
|
297
|
+
}
|
|
298
|
+
export default new Service();
|
|
299
|
+
//# sourceMappingURL=ServerlessFunctionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerlessFunctionService.js","sourceRoot":"","sources":["../../../../Server/Services/ServerlessFunctionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,25 +97,81 @@ export class Service extends DatabaseService {
|
|
|
97
97
|
* re-resolves the same serviceId) costs one in-memory cache lookup
|
|
98
98
|
* per batch instead of a DB write.
|
|
99
99
|
*/
|
|
100
|
-
async updateLastSeen(serviceId) {
|
|
100
|
+
async updateLastSeen(serviceId, extra) {
|
|
101
|
+
/*
|
|
102
|
+
* Throttle keyed on a fingerprint of the metadata so the steady-state
|
|
103
|
+
* firehose (the same serviceId re-resolved every batch) costs one
|
|
104
|
+
* in-memory cache lookup, but a changed attribute (e.g. a new
|
|
105
|
+
* service.version after a deploy) busts the cache and writes
|
|
106
|
+
* immediately. With no extras the fingerprint is constant, preserving
|
|
107
|
+
* the original "refresh lastSeenAt at most once per window" behaviour.
|
|
108
|
+
*/
|
|
101
109
|
const cacheKey = serviceId.toString();
|
|
110
|
+
const fingerprint = this.fingerprintLastSeenExtras(extra);
|
|
102
111
|
const cached = await GlobalCache.getString(LAST_SEEN_CACHE_NAMESPACE, cacheKey);
|
|
103
|
-
if (cached) {
|
|
112
|
+
if (cached === fingerprint) {
|
|
104
113
|
return;
|
|
105
114
|
}
|
|
106
|
-
await GlobalCache.setString(LAST_SEEN_CACHE_NAMESPACE, cacheKey,
|
|
115
|
+
await GlobalCache.setString(LAST_SEEN_CACHE_NAMESPACE, cacheKey, fingerprint, {
|
|
107
116
|
expiresInSeconds: LAST_SEEN_THROTTLE_SECONDS,
|
|
108
117
|
});
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
119
|
+
const data = {
|
|
120
|
+
lastSeenAt: OneUptimeDate.getCurrentDate(),
|
|
121
|
+
};
|
|
122
|
+
if (extra === null || extra === void 0 ? void 0 : extra.serviceVersion) {
|
|
123
|
+
data.serviceVersion = extra.serviceVersion;
|
|
124
|
+
}
|
|
125
|
+
if (extra === null || extra === void 0 ? void 0 : extra.deploymentEnvironment) {
|
|
126
|
+
data.deploymentEnvironment = extra.deploymentEnvironment;
|
|
127
|
+
}
|
|
128
|
+
if (extra === null || extra === void 0 ? void 0 : extra.serviceNamespace) {
|
|
129
|
+
data.serviceNamespace = extra.serviceNamespace;
|
|
130
|
+
}
|
|
131
|
+
if (extra === null || extra === void 0 ? void 0 : extra.runtimeName) {
|
|
132
|
+
data.runtimeName = extra.runtimeName;
|
|
133
|
+
}
|
|
134
|
+
if (extra === null || extra === void 0 ? void 0 : extra.runtimeVersion) {
|
|
135
|
+
data.runtimeVersion = extra.runtimeVersion;
|
|
136
|
+
}
|
|
137
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudProvider) {
|
|
138
|
+
data.cloudProvider = extra.cloudProvider;
|
|
139
|
+
}
|
|
140
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudPlatform) {
|
|
141
|
+
data.cloudPlatform = extra.cloudPlatform;
|
|
142
|
+
}
|
|
143
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudRegion) {
|
|
144
|
+
data.cloudRegion = extra.cloudRegion;
|
|
145
|
+
}
|
|
146
|
+
if (extra === null || extra === void 0 ? void 0 : extra.cloudAccountId) {
|
|
147
|
+
data.cloudAccountId = extra.cloudAccountId;
|
|
148
|
+
}
|
|
109
149
|
await this.updateOneById({
|
|
110
150
|
id: serviceId,
|
|
111
|
-
data:
|
|
112
|
-
lastSeenAt: OneUptimeDate.getCurrentDate(),
|
|
113
|
-
},
|
|
151
|
+
data: data,
|
|
114
152
|
props: {
|
|
115
153
|
isRoot: true,
|
|
116
154
|
},
|
|
117
155
|
});
|
|
118
156
|
}
|
|
157
|
+
fingerprintLastSeenExtras(extra) {
|
|
158
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
159
|
+
const normalized = {
|
|
160
|
+
serviceVersion: (_a = extra === null || extra === void 0 ? void 0 : extra.serviceVersion) !== null && _a !== void 0 ? _a : null,
|
|
161
|
+
deploymentEnvironment: (_b = extra === null || extra === void 0 ? void 0 : extra.deploymentEnvironment) !== null && _b !== void 0 ? _b : null,
|
|
162
|
+
serviceNamespace: (_c = extra === null || extra === void 0 ? void 0 : extra.serviceNamespace) !== null && _c !== void 0 ? _c : null,
|
|
163
|
+
runtimeName: (_d = extra === null || extra === void 0 ? void 0 : extra.runtimeName) !== null && _d !== void 0 ? _d : null,
|
|
164
|
+
runtimeVersion: (_e = extra === null || extra === void 0 ? void 0 : extra.runtimeVersion) !== null && _e !== void 0 ? _e : null,
|
|
165
|
+
cloudProvider: (_f = extra === null || extra === void 0 ? void 0 : extra.cloudProvider) !== null && _f !== void 0 ? _f : null,
|
|
166
|
+
cloudPlatform: (_g = extra === null || extra === void 0 ? void 0 : extra.cloudPlatform) !== null && _g !== void 0 ? _g : null,
|
|
167
|
+
cloudRegion: (_h = extra === null || extra === void 0 ? void 0 : extra.cloudRegion) !== null && _h !== void 0 ? _h : null,
|
|
168
|
+
cloudAccountId: (_j = extra === null || extra === void 0 ? void 0 : extra.cloudAccountId) !== null && _j !== void 0 ? _j : null,
|
|
169
|
+
};
|
|
170
|
+
return crypto
|
|
171
|
+
.createHash("sha1")
|
|
172
|
+
.update(JSON.stringify(normalized))
|
|
173
|
+
.digest("hex");
|
|
174
|
+
}
|
|
119
175
|
/**
|
|
120
176
|
* Additively attach labels to a telemetry service. Existing labels
|
|
121
177
|
* are never removed — manual labels set via the UI survive ingest.
|
|
@@ -193,7 +249,7 @@ __decorate([
|
|
|
193
249
|
__decorate([
|
|
194
250
|
CaptureSpan(),
|
|
195
251
|
__metadata("design:type", Function),
|
|
196
|
-
__metadata("design:paramtypes", [ObjectID]),
|
|
252
|
+
__metadata("design:paramtypes", [ObjectID, Object]),
|
|
197
253
|
__metadata("design:returntype", Promise)
|
|
198
254
|
], Service.prototype, "updateLastSeen", null);
|
|
199
255
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceService.js","sourceRoot":"","sources":["../../../../Server/Services/ServiceService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ServiceService.js","sourceRoot":"","sources":["../../../../Server/Services/ServiceService.ts"],"names":[],"mappings":"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"}
|
|
@@ -209,6 +209,92 @@ export class TraceAggregationService {
|
|
|
209
209
|
}
|
|
210
210
|
return result;
|
|
211
211
|
}
|
|
212
|
+
/*
|
|
213
|
+
* Accurate per-service and per-status counts over the FULL time window,
|
|
214
|
+
* computed with a real GROUP BY instead of the recent-N sample in
|
|
215
|
+
* getFacetValuesFromSample(). The sample saturates with whichever service
|
|
216
|
+
* is chattiest right now, so high-volume services that aren't in the most
|
|
217
|
+
* recent N root spans read 0 — the "top 1000" symptom. This GROUP BY is
|
|
218
|
+
* exact regardless of skew.
|
|
219
|
+
*
|
|
220
|
+
* It is cheap because it rides the proj_hist_by_minute aggregate projection
|
|
221
|
+
* (projectId, minute, serviceId, statusCode, isRootSpan -> count): a 1-month
|
|
222
|
+
* window reads a few thousand pre-aggregated minute rows in single-digit ms
|
|
223
|
+
* instead of scanning tens of millions of raw spans. Two things are required
|
|
224
|
+
* for ClickHouse to actually pick that projection, both load-bearing:
|
|
225
|
+
* 1. The time predicate must be on toStartOfMinute(startTime) — the
|
|
226
|
+
* projection's key expression — NOT raw startTime. A raw startTime
|
|
227
|
+
* filter references a column the aggregate projection does not store, so
|
|
228
|
+
* ClickHouse rejects the projection and full-scans. (Window edges land
|
|
229
|
+
* on minute boundaries, consistent with the minute-bucketed histogram.)
|
|
230
|
+
* 2. Every other predicate must be on a projection column. isRootSpan,
|
|
231
|
+
* serviceId and statusCode all are, so the default sidebar load and
|
|
232
|
+
* drill-down-by-service stay on the projection. A non-projection filter
|
|
233
|
+
* (kind / name / traceId / attributes) transparently falls back to a
|
|
234
|
+
* base-table scan — still correct, still bounded by max_execution_time.
|
|
235
|
+
*
|
|
236
|
+
* serviceId is intentionally NOT disambiguated by serviceType here. Resource
|
|
237
|
+
* IDs are globally unique, so a single serviceId -> count map correctly
|
|
238
|
+
* serves the service / host / docker host / k8s cluster facets once merged
|
|
239
|
+
* against each Postgres source-of-truth list (a host id never collides with
|
|
240
|
+
* a service id, so an unrelated entry is simply never looked up). Omitting
|
|
241
|
+
* the serviceType predicate keeps the query projection-eligible.
|
|
242
|
+
*/
|
|
243
|
+
static async getResourceFacetCounts(request) {
|
|
244
|
+
const statement = new Statement();
|
|
245
|
+
statement.append(`SELECT serviceId, statusCode, count() AS cnt FROM ${TraceAggregationService.TABLE_NAME}`);
|
|
246
|
+
statement.append(SQL ` WHERE projectId = ${{
|
|
247
|
+
type: TableColumnType.ObjectID,
|
|
248
|
+
value: request.projectId,
|
|
249
|
+
}} AND toStartOfMinute(startTime) >= toStartOfMinute(${{
|
|
250
|
+
type: TableColumnType.Date,
|
|
251
|
+
value: request.startTime,
|
|
252
|
+
}}) AND toStartOfMinute(startTime) <= toStartOfMinute(${{
|
|
253
|
+
type: TableColumnType.Date,
|
|
254
|
+
value: request.endTime,
|
|
255
|
+
}})`);
|
|
256
|
+
TraceAggregationService.appendCommonFilters(statement, request);
|
|
257
|
+
statement.append(" GROUP BY serviceId, statusCode");
|
|
258
|
+
/*
|
|
259
|
+
* Cap runtime below nginx's 60s proxy_read_timeout and explicitly allow
|
|
260
|
+
* projection use so proj_hist_by_minute is read when eligible (see the
|
|
261
|
+
* toStartOfMinute note above).
|
|
262
|
+
*/
|
|
263
|
+
statement.append(" SETTINGS max_execution_time = 45, timeout_overflow_mode = 'break', optimize_use_projections = 1");
|
|
264
|
+
const serviceCounts = new Map();
|
|
265
|
+
const statusCounts = new Map();
|
|
266
|
+
const dbResult = await SpanService.executeQuery(statement);
|
|
267
|
+
let rows = [];
|
|
268
|
+
try {
|
|
269
|
+
const response = await dbResult.json();
|
|
270
|
+
rows = response.data || [];
|
|
271
|
+
}
|
|
272
|
+
catch (_a) {
|
|
273
|
+
/*
|
|
274
|
+
* 'break' mode can return truncated JSON on timeout. Degrade to empty
|
|
275
|
+
* counts — the Postgres resolver still lists every resource (count 0),
|
|
276
|
+
* which is no worse than the prior transient-failure behavior.
|
|
277
|
+
*/
|
|
278
|
+
logger.warn("Resource facet count query returned unparseable response, returning empty counts");
|
|
279
|
+
return { serviceCounts, statusCounts };
|
|
280
|
+
}
|
|
281
|
+
for (const row of rows) {
|
|
282
|
+
const cnt = Number(row["cnt"] || 0);
|
|
283
|
+
const rawServiceId = row["serviceId"];
|
|
284
|
+
if (rawServiceId !== undefined && rawServiceId !== null) {
|
|
285
|
+
const serviceId = String(rawServiceId);
|
|
286
|
+
if (serviceId.length > 0) {
|
|
287
|
+
serviceCounts.set(serviceId, (serviceCounts.get(serviceId) || 0) + cnt);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const rawStatusCode = row["statusCode"];
|
|
291
|
+
if (rawStatusCode !== undefined && rawStatusCode !== null) {
|
|
292
|
+
const statusCode = String(rawStatusCode);
|
|
293
|
+
statusCounts.set(statusCode, (statusCounts.get(statusCode) || 0) + cnt);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return { serviceCounts, statusCounts };
|
|
297
|
+
}
|
|
212
298
|
static mapStatusCodeToSeries(code) {
|
|
213
299
|
if (code === 1) {
|
|
214
300
|
return "ok";
|
|
@@ -228,6 +314,15 @@ export class TraceAggregationService {
|
|
|
228
314
|
* even for multi-week ranges. The outer query then re-buckets the tiny
|
|
229
315
|
* minute-level result to the requested bucket size.
|
|
230
316
|
*
|
|
317
|
+
* The time window is filtered on toStartOfMinute(startTime) — the
|
|
318
|
+
* projection's key expression — NOT raw startTime. A raw startTime
|
|
319
|
+
* predicate references a column the aggregate projection does not store,
|
|
320
|
+
* so ClickHouse rejects proj_hist_by_minute and full-scans the base table
|
|
321
|
+
* (verified: 32M rows / ~220ms vs 1.5K rows / ~6ms with this form). The
|
|
322
|
+
* window edges round to the minute, which is consistent with the
|
|
323
|
+
* minute-bucketed output and only shifts the first/last bucket by the
|
|
324
|
+
* partial boundary minute when the range is not minute-aligned.
|
|
325
|
+
*
|
|
231
326
|
* If any non-projection filter (kind, name, traceId, nameSearchText,
|
|
232
327
|
* attributes) is active, ClickHouse transparently falls back to
|
|
233
328
|
* scanning the main table for the inner query — same cost as before.
|
|
@@ -250,14 +345,14 @@ export class TraceAggregationService {
|
|
|
250
345
|
type: TableColumnType.ObjectID,
|
|
251
346
|
value: request.projectId,
|
|
252
347
|
}}
|
|
253
|
-
AND startTime >= ${{
|
|
348
|
+
AND toStartOfMinute(startTime) >= toStartOfMinute(${{
|
|
254
349
|
type: TableColumnType.Date,
|
|
255
350
|
value: request.startTime,
|
|
256
|
-
}}
|
|
257
|
-
AND startTime <= ${{
|
|
351
|
+
}})
|
|
352
|
+
AND toStartOfMinute(startTime) <= toStartOfMinute(${{
|
|
258
353
|
type: TableColumnType.Date,
|
|
259
354
|
value: request.endTime,
|
|
260
|
-
}}
|
|
355
|
+
}})
|
|
261
356
|
`;
|
|
262
357
|
TraceAggregationService.appendCommonFilters(statement, request);
|
|
263
358
|
statement.append(" GROUP BY minute, statusCode ) GROUP BY bucket, statusCode ORDER BY bucket ASC");
|
|
@@ -434,6 +529,9 @@ TraceAggregationService.RESOURCE_FACET_KEYS = new Map([
|
|
|
434
529
|
["hostId", ServiceType.Host],
|
|
435
530
|
["dockerHostId", ServiceType.DockerHost],
|
|
436
531
|
["kubernetesClusterId", ServiceType.KubernetesCluster],
|
|
532
|
+
["serverlessFunctionId", ServiceType.ServerlessFunction],
|
|
533
|
+
["cloudResourceId", ServiceType.CloudResource],
|
|
534
|
+
["rumApplicationId", ServiceType.RealUserMonitor],
|
|
437
535
|
]);
|
|
438
536
|
TraceAggregationService.ATTRIBUTE_KEY_PATTERN = /^[a-zA-Z0-9._:/-]+$/;
|
|
439
537
|
TraceAggregationService.MAX_FACET_KEY_LENGTH = 256;
|
|
@@ -455,5 +553,11 @@ __decorate([
|
|
|
455
553
|
__metadata("design:paramtypes", [Object]),
|
|
456
554
|
__metadata("design:returntype", Promise)
|
|
457
555
|
], TraceAggregationService, "getFacetValuesFromSample", null);
|
|
556
|
+
__decorate([
|
|
557
|
+
CaptureSpan(),
|
|
558
|
+
__metadata("design:type", Function),
|
|
559
|
+
__metadata("design:paramtypes", [Object]),
|
|
560
|
+
__metadata("design:returntype", Promise)
|
|
561
|
+
], TraceAggregationService, "getResourceFacetCounts", null);
|
|
458
562
|
export default TraceAggregationService;
|
|
459
563
|
//# sourceMappingURL=TraceAggregationService.js.map
|