@oneuptime/common 10.8.1 → 11.0.0
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/AnalyticsBaseModel/AnalyticsBaseModel.ts +16 -18
- package/Models/AnalyticsModels/AuditLog.ts +3 -1
- package/Models/AnalyticsModels/ExceptionInstance.ts +200 -82
- package/Models/AnalyticsModels/Index.ts +7 -2
- package/Models/AnalyticsModels/Log.ts +197 -81
- package/Models/AnalyticsModels/Metric.ts +199 -86
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +44 -25
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +23 -20
- package/Models/AnalyticsModels/{MetricItemAggMV1mByHost.ts → MetricItemAggMV1mByHostV2.ts} +58 -47
- package/Models/AnalyticsModels/MonitorLog.ts +5 -1
- package/Models/AnalyticsModels/Profile.ts +206 -85
- package/Models/AnalyticsModels/ProfileSample.ts +196 -83
- package/Models/AnalyticsModels/Span.ts +218 -85
- package/Models/DatabaseModels/CloudResourceInstance.ts +1 -2
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +1 -2
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +1 -2
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/Service.ts +29 -0
- package/Models/DatabaseModels/TelemetryEntity.ts +393 -0
- package/Models/DatabaseModels/TelemetryEntityRelationship.ts +294 -0
- package/Models/DatabaseModels/TelemetryException.ts +13 -12
- package/Models/DatabaseModels/TelemetryUsageBilling.ts +5 -5
- package/Server/API/AIAgentDataAPI.ts +13 -12
- package/Server/API/DashboardAPI.ts +2 -2
- package/Server/API/TelemetryAPI.ts +656 -141
- package/Server/API/TelemetryExceptionAPI.ts +2 -2
- package/Server/Infrastructure/ClickhouseConfig.ts +12 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.ts +1 -3
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.ts +6 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.ts +18 -6
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781011482945-MigrationName.ts +2317 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.ts +48 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.ts +70 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.ts +207 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.ts +24 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
- package/Server/Infrastructure/Queue.ts +36 -3
- package/Server/Middleware/TelemetryIngest.ts +27 -22
- package/Server/Services/AlertService.ts +9 -9
- package/Server/Services/AnalyticsDatabaseService.ts +204 -35
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +4 -1
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +4 -1
- package/Server/Services/ExceptionAggregationService.ts +41 -18
- package/Server/Services/HostService.ts +2 -1
- package/Server/Services/IncidentService.ts +19 -19
- package/Server/Services/Index.ts +6 -2
- package/Server/Services/LogAggregationService.ts +116 -43
- package/Server/Services/MetricAggregationService.ts +29 -14
- package/Server/Services/MetricBaselineService.ts +34 -34
- package/Server/Services/MetricItemAggMV1mByHostV2Service.ts +30 -0
- package/Server/Services/MetricService.ts +119 -31
- package/Server/Services/OpenTelemetryIngestService.ts +189 -51
- package/Server/Services/ProfileAggregationService.ts +904 -126
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +4 -1
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +4 -1
- package/Server/Services/ServerlessFunctionInstanceService.ts +4 -2
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +7 -2
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +7 -2
- package/Server/Services/ServiceService.ts +6 -0
- package/Server/Services/SpanService.ts +274 -14
- package/Server/Services/TelemetryEntityRelationshipService.ts +71 -0
- package/Server/Services/TelemetryEntityService.ts +246 -0
- package/Server/Services/TelemetryExceptionService.ts +27 -23
- package/Server/Services/TelemetryUsageBillingService.ts +38 -31
- package/Server/Services/TraceAggregationService.ts +875 -43
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +43 -2
- package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -2
- package/Server/Types/Database/Permissions/BasePermission.ts +37 -1
- package/Server/Types/Database/Permissions/OwnedScopePermission.ts +21 -3
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +1 -0
- package/Server/Types/Database/QueryHelper.ts +41 -0
- package/Server/Utils/Alert/AlertPrivacyFilter.ts +9 -2
- package/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.ts +9 -2
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +95 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +133 -0
- package/Server/Utils/Incident/IncidentPrivacyFilter.ts +9 -2
- package/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.ts +9 -2
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +1 -1
- package/Server/Utils/Monitor/MonitorLogUtil.ts +1 -2
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +3 -4
- package/Server/Utils/PrivacyFilterUtil.ts +72 -0
- package/Server/Utils/Profile/PprofEncoder.ts +135 -11
- package/Server/Utils/Telemetry/EntityRegistry.ts +316 -0
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +9 -3
- package/Server/Utils/Telemetry/TelemetryEntity.ts +783 -0
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +79 -4
- package/Tests/Server/Services/LogAggregationService.test.ts +7 -2
- package/Tests/Server/Services/ProfileAggregationService.test.ts +280 -0
- package/Tests/Server/Services/ProfileBreakdown.test.ts +161 -0
- package/Tests/Server/Services/ProfileFunctionFocus.test.ts +349 -0
- package/Tests/Server/Services/TelemetryAttributeService.test.ts +1 -1
- package/Tests/Server/Services/TraceAggregationService.test.ts +403 -0
- package/Tests/Server/Types/AnalyticsDatabase/ModelPermissionOwnedScope.test.ts +114 -0
- package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +189 -0
- package/Tests/Server/Types/Database/Permissions/BasePermission.test.ts +118 -0
- package/Tests/Server/Types/Database/Permissions/OwnedScopePermission.test.ts +159 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +275 -8
- package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +177 -0
- package/Tests/Server/Utils/Profile/PprofEncoder.test.ts +276 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +761 -0
- package/Tests/Types/Monitor/MonitorStepEntityScope.test.ts +275 -0
- package/Tests/Types/Text.test.ts +52 -0
- package/Tests/Utils/Telemetry/EntityKey.test.ts +150 -0
- package/Tests/Utils/Telemetry/EntityKeySqlParity.test.ts +40 -0
- package/Tests/Utils/Telemetry/EntityRelationship.test.ts +150 -0
- package/Tests/Utils/UUID.test.ts +47 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +14 -9
- package/Types/AnalyticsDatabase/TableColumnType.ts +1 -0
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +37 -0
- package/Types/Dashboard/DashboardTemplates.ts +4 -5
- package/Types/Log/LogQueryParser.ts +2 -2
- package/Types/Log/LogQueryToFilter.ts +2 -2
- package/Types/Monitor/MonitorStepExceptionMonitor.ts +19 -1
- package/Types/Monitor/MonitorStepLogMonitor.ts +20 -1
- package/Types/Monitor/MonitorStepMetricMonitor.ts +27 -0
- package/Types/Monitor/MonitorStepProfileMonitor.ts +19 -1
- package/Types/Monitor/MonitorStepTraceMonitor.ts +18 -1
- package/Types/Monitor/MonitorType.ts +8 -1
- package/Types/ObjectID.ts +10 -0
- package/Types/Permission.ts +4 -2
- package/Types/Telemetry/EntityRelationshipType.ts +31 -0
- package/Types/Telemetry/EntityType.ts +33 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +2 -0
- package/Types/Text.ts +34 -0
- package/Types/Trace/TraceAggregationType.ts +1 -0
- package/Types/Trace/TraceRecordingRuleDefinition.ts +74 -0
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +14 -14
- package/UI/Components/Forms/Fields/FormField.tsx +18 -12
- package/UI/Components/Input/Input.tsx +3 -1
- package/UI/Components/LogsViewer/LogsViewer.tsx +12 -9
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +10 -9
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +1 -1
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +2 -2
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +4 -4
- package/UI/Components/LogsViewer/components/LogsTable.tsx +5 -3
- package/UI/Components/Navbar/NavBarMenuModal.tsx +81 -44
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +33 -10
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +18 -3
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +91 -68
- package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +9 -2
- package/UI/Components/TextArea/TextArea.tsx +3 -1
- package/UI/Components/Toast/Toast.tsx +4 -2
- package/UI/Utils/LogExport.ts +2 -2
- package/UI/Utils/TelemetryService.ts +20 -20
- package/Utils/Dashboard/Components/DashboardTraceChartComponent.ts +134 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/Telemetry/EntityKey.ts +151 -0
- package/Utils/Telemetry/EntityRelationship.ts +113 -0
- package/Utils/Traces/CriticalPath.ts +7 -7
- package/Utils/UUID.ts +57 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js +14 -13
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/AuditLog.js +2 -1
- package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +125 -22
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Index.js +7 -2
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +123 -22
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +125 -27
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +38 -21
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +17 -16
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/{MetricItemAggMV1mByHost.js → MetricItemAggMV1mByHostV2.js} +54 -42
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHostV2.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +4 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Profile.js +132 -26
- package/build/dist/Models/AnalyticsModels/Profile.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ProfileSample.js +121 -23
- package/build/dist/Models/AnalyticsModels/ProfileSample.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +144 -26
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceInstance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +30 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js +419 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +317 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js +12 -12
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js +7 -7
- package/build/dist/Models/DatabaseModels/TelemetryUsageBilling.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +14 -13
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +2 -2
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +425 -129
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +2 -2
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js +12 -0
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780931863719-AddTelemetryResourceMetadataColumns.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780933132562-AddServerlessFunctionTables.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1780935387827-AddCloudResourceTables.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781011482945-MigrationName.js +798 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781011482945-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js +29 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781100000001-RenameTelemetryServiceIdToPrimaryEntityId.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000000-AddTelemetryEntityTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js +33 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781200000001-AddTelemetryEntityRelationshipTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js +78 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781250074195-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781300000000-AddTelemetryEntityLabels.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1781400000000-AddServiceTelemetrySdkLanguage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +14 -3
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +16 -18
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +9 -9
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +115 -40
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +38 -18
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +2 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +19 -19
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +6 -2
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +100 -42
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +27 -14
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricBaselineService.js +28 -28
- package/build/dist/Server/Services/MetricBaselineService.js.map +1 -1
- package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js +28 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByHostV2Service.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +116 -31
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +103 -36
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ProfileAggregationService.js +613 -105
- package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +4 -2
- package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +2 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +2 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +9 -5
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +217 -15
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +72 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryEntityService.js +201 -0
- package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryExceptionService.js +18 -18
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +27 -21
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +568 -43
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +38 -2
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +36 -2
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +25 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +17 -3
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +1 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +31 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/Alert/AlertPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/AlertEpisode/AlertEpisodePrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +97 -3
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/Incident/IncidentPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js +3 -2
- package/build/dist/Server/Utils/IncidentEpisode/IncidentEpisodePrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js +1 -2
- package/build/dist/Server/Utils/Monitor/MonitorLogUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +3 -4
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/PrivacyFilterUtil.js +47 -0
- package/build/dist/Server/Utils/PrivacyFilterUtil.js.map +1 -0
- package/build/dist/Server/Utils/Profile/PprofEncoder.js +132 -4
- package/build/dist/Server/Utils/Profile/PprofEncoder.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +228 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +5 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +569 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +14 -9
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js +1 -0
- package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +4 -5
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/Log/LogQueryParser.js +2 -2
- package/build/dist/Types/Log/LogQueryParser.js.map +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepExceptionMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepLogMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepLogMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +13 -0
- package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepProfileMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js +9 -1
- package/build/dist/Types/Monitor/MonitorStepTraceMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +8 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/ObjectID.js +9 -0
- package/build/dist/Types/ObjectID.js.map +1 -1
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityRelationshipType.js +32 -0
- package/build/dist/Types/Telemetry/EntityRelationshipType.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +34 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -0
- package/build/dist/Types/Text.js +32 -1
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/Types/Trace/TraceAggregationType.js +1 -0
- package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -1
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +50 -1
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +15 -12
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +3 -1
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +10 -9
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +8 -8
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +2 -2
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +4 -4
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +3 -3
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +43 -30
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +6 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -3
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +18 -10
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +4 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
- package/build/dist/UI/Components/TextArea/TextArea.js +3 -1
- package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
- package/build/dist/UI/Components/Toast/Toast.js +4 -2
- package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
- package/build/dist/UI/Utils/LogExport.js +2 -2
- package/build/dist/UI/Utils/LogExport.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +16 -16
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js +110 -0
- package/build/dist/Utils/Dashboard/Components/DashboardTraceChartComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Telemetry/EntityKey.js +115 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js +71 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -0
- package/build/dist/Utils/Traces/CriticalPath.js +5 -5
- package/build/dist/Utils/Traces/CriticalPath.js.map +1 -1
- package/build/dist/Utils/UUID.js +50 -0
- package/build/dist/Utils/UUID.js.map +1 -1
- package/package.json +2 -1
- package/tsconfig.json +10 -1
- package/Server/Services/MetricItemAggMV1mByHostService.ts +0 -30
- package/Types/Profile/ProfileMetricType.ts +0 -16
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +0 -1
- package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js +0 -28
- package/build/dist/Server/Services/MetricItemAggMV1mByHostService.js.map +0 -1
- package/build/dist/Tests/MockType.js +0 -5
- package/build/dist/Tests/MockType.js.map +0 -1
- package/build/dist/Tests/Models/AnalyticsModels/Log.test.js +0 -12
- package/build/dist/Tests/Models/AnalyticsModels/Log.test.js.map +0 -1
- package/build/dist/Tests/Models/File.test.js +0 -10
- package/build/dist/Tests/Models/File.test.js.map +0 -1
- package/build/dist/Tests/Server/API/BaseAPI.test.js +0 -590
- package/build/dist/Tests/Server/API/BaseAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/Helpers.js +0 -27
- package/build/dist/Tests/Server/API/Helpers.js.map +0 -1
- package/build/dist/Tests/Server/API/ProbeAPI.test.js +0 -84
- package/build/dist/Tests/Server/API/ProbeAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/ProjectAPI.test.js +0 -170
- package/build/dist/Tests/Server/API/ProjectAPI.test.js.map +0 -1
- package/build/dist/Tests/Server/API/UserSmsApi.test.js +0 -177
- package/build/dist/Tests/Server/API/UserSmsApi.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js +0 -63
- package/build/dist/Tests/Server/Middleware/BearerTokenAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js +0 -58
- package/build/dist/Tests/Server/Middleware/ClusterKeyAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js +0 -101
- package/build/dist/Tests/Server/Middleware/NotificationMiddleware.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js +0 -160
- package/build/dist/Tests/Server/Middleware/ProjectAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +0 -410
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js +0 -165
- package/build/dist/Tests/Server/Services/AlertEpisodeMemberService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js +0 -193
- package/build/dist/Tests/Server/Services/AlertEpisodeService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js +0 -435
- package/build/dist/Tests/Server/Services/AlertGroupingEngineService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js +0 -320
- package/build/dist/Tests/Server/Services/AlertGroupingRuleService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +0 -266
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/BillingService.test.js +0 -910
- package/build/dist/Tests/Server/Services/BillingService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js +0 -75
- package/build/dist/Tests/Server/Services/LogAggregationService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/ProbeService.test.js +0 -127
- package/build/dist/Tests/Server/Services/ProbeService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js +0 -114
- package/build/dist/Tests/Server/Services/ScheduledMaintenanceService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/TeamMemberService.test.js +0 -106
- package/build/dist/Tests/Server/Services/TeamMemberService.test.js.map +0 -1
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js +0 -50
- package/build/dist/Tests/Server/Services/TelemetryAttributeService.test.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Init.js +0 -4
- package/build/dist/Tests/Server/TestingUtils/Init.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js +0 -9
- package/build/dist/Tests/Server/TestingUtils/Postgres/TestDataSourceOptions.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js +0 -16
- package/build/dist/Tests/Server/TestingUtils/Redis/TestRedisOptions.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js +0 -125
- package/build/dist/Tests/Server/TestingUtils/Services/BillingServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js +0 -39
- package/build/dist/Tests/Server/TestingUtils/Services/ProjectServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js +0 -20
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js +0 -31
- package/build/dist/Tests/Server/TestingUtils/Services/ScheduledMaintenanceStateServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js +0 -14
- package/build/dist/Tests/Server/TestingUtils/Services/TeamMemberServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js +0 -21
- package/build/dist/Tests/Server/TestingUtils/Services/TeamServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/Types.js +0 -2
- package/build/dist/Tests/Server/TestingUtils/Services/Types.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js +0 -37
- package/build/dist/Tests/Server/TestingUtils/Services/UserServiceHelper.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js +0 -13
- package/build/dist/Tests/Server/TestingUtils/__mocks__/Stripe.mock.js.map +0 -1
- package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js +0 -22
- package/build/dist/Tests/Server/TestingUtils/__mocks__/TestDatabase.mock.js.map +0 -1
- package/build/dist/Tests/Server/Types/Domain.test.js +0 -78
- package/build/dist/Tests/Server/Types/Domain.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js +0 -94
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/Statement.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js +0 -459
- package/build/dist/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Cookie.test.js +0 -83
- package/build/dist/Tests/Server/Utils/Cookie.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/CronTab.test.js +0 -29
- package/build/dist/Tests/Server/Utils/CronTab.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/JsonToCsv.test.js +0 -114
- package/build/dist/Tests/Server/Utils/JsonToCsv.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +0 -606
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js +0 -255
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js +0 -142
- package/build/dist/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/StatusPageResource.test.js +0 -122
- package/build/dist/Tests/Server/Utils/StatusPageResource.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js +0 -0
- package/build/dist/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.js.map +0 -1
- package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js +0 -205
- package/build/dist/Tests/Server/Utils/VM/VMAPI.test.js.map +0 -1
- package/build/dist/Tests/Spy.js +0 -4
- package/build/dist/Tests/Spy.js.map +0 -1
- package/build/dist/Tests/Types/API/ErrorResponse.test.js +0 -13
- package/build/dist/Tests/Types/API/ErrorResponse.test.js.map +0 -1
- package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js +0 -33
- package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js.map +0 -1
- package/build/dist/Tests/Types/API/HTTPMethod.test.js +0 -16
- package/build/dist/Tests/Types/API/HTTPMethod.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Headers.test.js +0 -14
- package/build/dist/Tests/Types/API/Headers.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Hostname.test.js +0 -22
- package/build/dist/Tests/Types/API/Hostname.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Protocal.test.js +0 -19
- package/build/dist/Tests/Types/API/Protocal.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Response.test.js +0 -14
- package/build/dist/Tests/Types/API/Response.test.js.map +0 -1
- package/build/dist/Tests/Types/API/ResponseType.test.js +0 -13
- package/build/dist/Tests/Types/API/ResponseType.test.js.map +0 -1
- package/build/dist/Tests/Types/API/Route.test.js +0 -30
- package/build/dist/Tests/Types/API/Route.test.js.map +0 -1
- package/build/dist/Tests/Types/API/StatusCode.test.js +0 -26
- package/build/dist/Tests/Types/API/StatusCode.test.js.map +0 -1
- package/build/dist/Tests/Types/API/URL.test.js +0 -33
- package/build/dist/Tests/Types/API/URL.test.js.map +0 -1
- package/build/dist/Tests/Types/Alerts/AlertEventType.test.js +0 -34
- package/build/dist/Tests/Types/Alerts/AlertEventType.test.js.map +0 -1
- package/build/dist/Tests/Types/Alerts/AlertType.test.js +0 -19
- package/build/dist/Tests/Types/Alerts/AlertType.test.js.map +0 -1
- package/build/dist/Tests/Types/AppEnvironment.test.js +0 -13
- package/build/dist/Tests/Types/AppEnvironment.test.js.map +0 -1
- package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js +0 -13
- package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js.map +0 -1
- package/build/dist/Tests/Types/ArrayUtil.test.js +0 -71
- package/build/dist/Tests/Types/ArrayUtil.test.js.map +0 -1
- package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js +0 -181
- package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js.map +0 -1
- package/build/dist/Tests/Types/BrandColors.test.js +0 -124
- package/build/dist/Tests/Types/BrandColors.test.js.map +0 -1
- package/build/dist/Tests/Types/Char.test.js +0 -82
- package/build/dist/Tests/Types/Char.test.js.map +0 -1
- package/build/dist/Tests/Types/Code/CodeType.test.js +0 -13
- package/build/dist/Tests/Types/Code/CodeType.test.js.map +0 -1
- package/build/dist/Tests/Types/Color.test.js +0 -44
- package/build/dist/Tests/Types/Color.test.js.map +0 -1
- package/build/dist/Tests/Types/Company/CompanySize.test.js +0 -20
- package/build/dist/Tests/Types/Company/CompanySize.test.js.map +0 -1
- package/build/dist/Tests/Types/Company/JobRole.test.js +0 -22
- package/build/dist/Tests/Types/Company/JobRole.test.js.map +0 -1
- package/build/dist/Tests/Types/Countries.test.js +0 -249
- package/build/dist/Tests/Types/Countries.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/ColumnLength.test.js +0 -43
- package/build/dist/Tests/Types/Database/ColumnLength.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/ColumnType.test.js +0 -79
- package/build/dist/Tests/Types/Database/ColumnType.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Columns.test.js +0 -20
- package/build/dist/Tests/Types/Database/Columns.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/CompareBase.test.js +0 -37
- package/build/dist/Tests/Types/Database/CompareBase.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Date.test.js +0 -62
- package/build/dist/Tests/Types/Database/Date.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/EqualTo.test.js +0 -65
- package/build/dist/Tests/Types/Database/EqualTo.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/EqualToOrNull.test.js +0 -62
- package/build/dist/Tests/Types/Database/EqualToOrNull.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/InBetween.test.js +0 -72
- package/build/dist/Tests/Types/Database/InBetween.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/LimitMax.test.js +0 -18
- package/build/dist/Tests/Types/Database/LimitMax.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/NotEqual.test.js +0 -19
- package/build/dist/Tests/Types/Database/NotEqual.test.js.map +0 -1
- package/build/dist/Tests/Types/Database/Search.test.js +0 -10
- package/build/dist/Tests/Types/Database/Search.test.js.map +0 -1
- package/build/dist/Tests/Types/DatabaseType.test.js +0 -7
- package/build/dist/Tests/Types/DatabaseType.test.js.map +0 -1
- package/build/dist/Tests/Types/Date.test.js +0 -194
- package/build/dist/Tests/Types/Date.test.js.map +0 -1
- package/build/dist/Tests/Types/Dictionary.test.js +0 -25
- package/build/dist/Tests/Types/Dictionary.test.js.map +0 -1
- package/build/dist/Tests/Types/Domain.test.js +0 -54
- package/build/dist/Tests/Types/Domain.test.js.map +0 -1
- package/build/dist/Tests/Types/Email/Email.test.js +0 -51
- package/build/dist/Tests/Types/Email/Email.test.js.map +0 -1
- package/build/dist/Tests/Types/EmailWithName.test.js +0 -36
- package/build/dist/Tests/Types/EmailWithName.test.js.map +0 -1
- package/build/dist/Tests/Types/EncryptionAlgorithm.test.js +0 -7
- package/build/dist/Tests/Types/EncryptionAlgorithm.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/ApiException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/ApiException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadDataException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/BadDataException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadOperationException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/BadOperationException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/BadRequestException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/BadRequestException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js +0 -10
- package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/Exception.test.js +0 -15
- package/build/dist/Tests/Types/Exception/Exception.test.js.map +0 -1
- package/build/dist/Tests/Types/Exception/NotImplementedException.test.js +0 -12
- package/build/dist/Tests/Types/Exception/NotImplementedException.test.js.map +0 -1
- package/build/dist/Tests/Types/File.test.js +0 -22
- package/build/dist/Tests/Types/File.test.js.map +0 -1
- package/build/dist/Tests/Types/HashedString.test.js +0 -51
- package/build/dist/Tests/Types/HashedString.test.js.map +0 -1
- package/build/dist/Tests/Types/Html.test.js +0 -8
- package/build/dist/Tests/Types/Html.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IP.test.js +0 -65
- package/build/dist/Tests/Types/IP/IP.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPType.test.js +0 -10
- package/build/dist/Tests/Types/IP/IPType.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPv4.test.js +0 -17
- package/build/dist/Tests/Types/IP/IPv4.test.js.map +0 -1
- package/build/dist/Tests/Types/IP/IPv6.test.js +0 -17
- package/build/dist/Tests/Types/IP/IPv6.test.js.map +0 -1
- package/build/dist/Tests/Types/JSON.test.js +0 -37
- package/build/dist/Tests/Types/JSON.test.js.map +0 -1
- package/build/dist/Tests/Types/JSONFunctions.test.js +0 -38
- package/build/dist/Tests/Types/JSONFunctions.test.js.map +0 -1
- package/build/dist/Tests/Types/ListData.test.js +0 -34
- package/build/dist/Tests/Types/ListData.test.js.map +0 -1
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js +0 -121
- package/build/dist/Tests/Types/Monitor/KubernetesAlertTemplates.test.js.map +0 -1
- package/build/dist/Tests/Types/Name.test.js +0 -26
- package/build/dist/Tests/Types/Name.test.js.map +0 -1
- package/build/dist/Tests/Types/ObjectID.test.js +0 -12
- package/build/dist/Tests/Types/ObjectID.test.js.map +0 -1
- package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js +0 -530
- package/build/dist/Tests/Types/OnCallDutyPolicy/LayerUtil.test.js.map +0 -1
- package/build/dist/Tests/Types/Permission.test.js +0 -99
- package/build/dist/Tests/Types/Permission.test.js.map +0 -1
- package/build/dist/Tests/Types/Phone.test.js +0 -37
- package/build/dist/Tests/Types/Phone.test.js.map +0 -1
- package/build/dist/Tests/Types/Port.test.js +0 -35
- package/build/dist/Tests/Types/Port.test.js.map +0 -1
- package/build/dist/Tests/Types/PositiveNumber.test.js +0 -101
- package/build/dist/Tests/Types/PositiveNumber.test.js.map +0 -1
- package/build/dist/Tests/Types/SecuritySeverity.test.js +0 -16
- package/build/dist/Tests/Types/SecuritySeverity.test.js.map +0 -1
- package/build/dist/Tests/Types/SerializableObject.test.js +0 -37
- package/build/dist/Tests/Types/SerializableObject.test.js.map +0 -1
- package/build/dist/Tests/Types/Sleep.test.js +0 -14
- package/build/dist/Tests/Types/Sleep.test.js.map +0 -1
- package/build/dist/Tests/Types/Text.test.js +0 -8
- package/build/dist/Tests/Types/Text.test.js.map +0 -1
- package/build/dist/Tests/Types/Timezone.test.js +0 -596
- package/build/dist/Tests/Types/Timezone.test.js.map +0 -1
- package/build/dist/Tests/Types/Typeof.test.js +0 -16
- package/build/dist/Tests/Types/Typeof.test.js.map +0 -1
- package/build/dist/Tests/Types/UserType.test.js +0 -16
- package/build/dist/Tests/Types/UserType.test.js.map +0 -1
- package/build/dist/Tests/Types/Version.test.js +0 -35
- package/build/dist/Tests/Types/Version.test.js.map +0 -1
- package/build/dist/Tests/Types/XML.test.js +0 -35
- package/build/dist/Tests/Types/XML.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/404.test.js +0 -59
- package/build/dist/Tests/UI/Components/404.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Alert.test.js +0 -83
- package/build/dist/Tests/UI/Components/Alert.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Badge.test.js +0 -59
- package/build/dist/Tests/UI/Components/Badge.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/BasicForm.test.js +0 -92
- package/build/dist/Tests/UI/Components/BasicForm.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Breadcrumbs.test.js +0 -69
- package/build/dist/Tests/UI/Components/Breadcrumbs.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Button.test.js +0 -104
- package/build/dist/Tests/UI/Components/Button.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Card.test.js +0 -81
- package/build/dist/Tests/UI/Components/Card.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ColorViewer.test.js +0 -42
- package/build/dist/Tests/UI/Components/ColorViewer.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ComponentsModal.test.js +0 -233
- package/build/dist/Tests/UI/Components/ComponentsModal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ConfirmModal.test.js +0 -57
- package/build/dist/Tests/UI/Components/ConfirmModal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js +0 -84
- package/build/dist/Tests/UI/Components/DictionaryOfStrings.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Dropdown.test.js +0 -146
- package/build/dist/Tests/UI/Components/Dropdown.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js +0 -229
- package/build/dist/Tests/UI/Components/DuplicateModel.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js +0 -26
- package/build/dist/Tests/UI/Components/EmptyState/EmptyState.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ErrorBoundary.test.js +0 -32
- package/build/dist/Tests/UI/Components/ErrorBoundary.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/FilePicker.test.js +0 -342
- package/build/dist/Tests/UI/Components/FilePicker.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/HiddenText.test.js +0 -50
- package/build/dist/Tests/UI/Components/HiddenText.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Input.test.js +0 -223
- package/build/dist/Tests/UI/Components/Input.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Item.test.js +0 -58
- package/build/dist/Tests/UI/Components/Item.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/List.test.js +0 -83
- package/build/dist/Tests/UI/Components/List.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Loader.test.js +0 -19
- package/build/dist/Tests/UI/Components/Loader.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/MarkdownEditor.test.js +0 -85
- package/build/dist/Tests/UI/Components/MarkdownEditor.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/MasterPage.test.js +0 -46
- package/build/dist/Tests/UI/Components/MasterPage.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Modal.test.js +0 -127
- package/build/dist/Tests/UI/Components/Modal.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/NavBar.test.js +0 -52
- package/build/dist/Tests/UI/Components/NavBar.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/OrderedStatesList.test.js +0 -86
- package/build/dist/Tests/UI/Components/OrderedStatesList.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Pagination.test.js +0 -137
- package/build/dist/Tests/UI/Components/Pagination.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Pill.test.js +0 -55
- package/build/dist/Tests/UI/Components/Pill.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Probe.test.js +0 -52
- package/build/dist/Tests/UI/Components/Probe.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/ProgressBar.test.js +0 -41
- package/build/dist/Tests/UI/Components/ProgressBar.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/RadioButtons.test.js +0 -66
- package/build/dist/Tests/UI/Components/RadioButtons.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js +0 -99
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/SideOver.test.js +0 -77
- package/build/dist/Tests/UI/Components/SideOver.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Tabs.test.js +0 -56
- package/build/dist/Tests/UI/Components/Tabs.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Template/Template.test.js +0 -15
- package/build/dist/Tests/UI/Components/Template/Template.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TextArea.test.js +0 -112
- package/build/dist/Tests/UI/Components/TextArea.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js +0 -352
- package/build/dist/Tests/UI/Components/TimePicker/TimePicker.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Toast.test.js +0 -48
- package/build/dist/Tests/UI/Components/Toast.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/Toggle.test.js +0 -95
- package/build/dist/Tests/UI/Components/Toggle.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/TopSection.test.js +0 -33
- package/build/dist/Tests/UI/Components/TopSection.test.js.map +0 -1
- package/build/dist/Tests/UI/Components/XAxis.test.js +0 -21
- package/build/dist/Tests/UI/Components/XAxis.test.js.map +0 -1
- package/build/dist/Tests/UI/Index.js +0 -2
- package/build/dist/Tests/UI/Index.js.map +0 -1
- package/build/dist/Tests/UI/Mocks/FileMock.js +0 -3
- package/build/dist/Tests/UI/Mocks/FileMock.js.map +0 -1
- package/build/dist/Tests/Utils/API.test.js +0 -399
- package/build/dist/Tests/Utils/API.test.js.map +0 -1
- package/build/dist/Tests/Utils/Analytics.test.js +0 -67
- package/build/dist/Tests/Utils/Analytics.test.js.map +0 -1
- package/build/dist/Tests/Utils/CronTime.test.js +0 -22
- package/build/dist/Tests/Utils/CronTime.test.js.map +0 -1
- package/build/dist/Tests/Utils/Faker.test.js +0 -27
- package/build/dist/Tests/Utils/Faker.test.js.map +0 -1
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js +0 -187
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +0 -1
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +0 -224
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +0 -1
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +0 -180
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +0 -1
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +0 -142
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +0 -1
- package/build/dist/Tests/Utils/Slug.test.js +0 -20
- package/build/dist/Tests/Utils/Slug.test.js.map +0 -1
- package/build/dist/Tests/Utils/UUID.test.js +0 -48
- package/build/dist/Tests/Utils/UUID.test.js.map +0 -1
- package/build/dist/Tests/jest.setup.js +0 -30
- package/build/dist/Tests/jest.setup.js.map +0 -1
- package/build/dist/Types/Profile/ProfileMetricType.js +0 -17
- package/build/dist/Types/Profile/ProfileMetricType.js.map +0 -1
|
@@ -7,11 +7,11 @@ import ServiceType from "../../Types/Telemetry/ServiceType";
|
|
|
7
7
|
* Telemetry that arrives without an OTel service.name (and with no
|
|
8
8
|
* host / docker / k8s resource signal) is not backed by a Service row.
|
|
9
9
|
* The ingest path tags those analytics rows with the projectId in the
|
|
10
|
-
* `
|
|
10
|
+
* `primaryEntityId` column under ServiceType.Unknown (see
|
|
11
11
|
* OtelIngestBaseService.resolveTelemetryResource). The read side has no
|
|
12
12
|
* Service to resolve, so we represent that telemetry with a synthetic,
|
|
13
13
|
* non-persisted Service whose id is the projectId — that way the
|
|
14
|
-
* existing
|
|
14
|
+
* existing primaryEntityId -> Service lookups in the telemetry views resolve
|
|
15
15
|
* it to a labelled "Unknown Service" entry without any per-view special
|
|
16
16
|
* casing. A real Service._id is never equal to a projectId, so this
|
|
17
17
|
* never collides with a genuine service.
|
|
@@ -19,8 +19,8 @@ import ServiceType from "../../Types/Telemetry/ServiceType";
|
|
|
19
19
|
export const UNKNOWN_SERVICE_NAME: string = "Unknown Service";
|
|
20
20
|
|
|
21
21
|
/*
|
|
22
|
-
* Result of resolving a telemetry row's polymorphic (
|
|
23
|
-
*
|
|
22
|
+
* Result of resolving a telemetry row's polymorphic (primaryEntityId,
|
|
23
|
+
* primaryEntityType) to something renderable. Either a Service (a real
|
|
24
24
|
* OpenTelemetry service, or the synthetic "Unknown Service" for the
|
|
25
25
|
* unattributed bucket) — or a plain `label` for infrastructure resource
|
|
26
26
|
* types (Host / DockerHost / KubernetesCluster) that have no Service row.
|
|
@@ -32,25 +32,25 @@ export interface ResolvedTelemetryResource {
|
|
|
32
32
|
|
|
33
33
|
export default class TelemetryServiceUtil {
|
|
34
34
|
/*
|
|
35
|
-
* True when a telemetry row's
|
|
35
|
+
* True when a telemetry row's primaryEntityId is the synthetic "Unknown
|
|
36
36
|
* Service" — i.e. it equals the projectId (ServiceType.Unknown). Used
|
|
37
37
|
* to suppress navigation to a per-service detail page that does not
|
|
38
38
|
* exist for unattributed telemetry.
|
|
39
39
|
*/
|
|
40
40
|
public static isUnknownServiceId(
|
|
41
|
-
|
|
41
|
+
primaryEntityId: ObjectID | string | null | undefined,
|
|
42
42
|
projectId: ObjectID | null | undefined,
|
|
43
43
|
): boolean {
|
|
44
|
-
if (!
|
|
44
|
+
if (!primaryEntityId || !projectId) {
|
|
45
45
|
return false;
|
|
46
46
|
}
|
|
47
|
-
return
|
|
47
|
+
return primaryEntityId.toString() === projectId.toString();
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/*
|
|
51
51
|
* Build the synthetic Service used to render unattributed telemetry.
|
|
52
|
-
* Not persisted — id is the projectId so that
|
|
53
|
-
* lookups (which key on the analytics row's
|
|
52
|
+
* Not persisted — id is the projectId so that primaryEntityId -> Service
|
|
53
|
+
* lookups (which key on the analytics row's primaryEntityId) resolve to it.
|
|
54
54
|
*/
|
|
55
55
|
public static getUnknownService(projectId: ObjectID): Service {
|
|
56
56
|
const service: Service = new Service();
|
|
@@ -61,7 +61,7 @@ export default class TelemetryServiceUtil {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/*
|
|
64
|
-
* Resolve a telemetry row's polymorphic (
|
|
64
|
+
* Resolve a telemetry row's polymorphic (primaryEntityId, primaryEntityType) to a
|
|
65
65
|
* renderable resource, given the project's loaded Services. Replaces the
|
|
66
66
|
* old server-side `service` ORM relation on TelemetryException: a real
|
|
67
67
|
* Service resolves from the loaded list, the unattributed bucket resolves
|
|
@@ -70,12 +70,12 @@ export default class TelemetryServiceUtil {
|
|
|
70
70
|
* them). Mirrors how the ClickHouse analytics rows are resolved.
|
|
71
71
|
*/
|
|
72
72
|
public static resolveTelemetryResource(data: {
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
primaryEntityId: ObjectID | string | null | undefined;
|
|
74
|
+
primaryEntityType: ServiceType | string | null | undefined;
|
|
75
75
|
services: Array<Service>;
|
|
76
76
|
projectId: ObjectID | null | undefined;
|
|
77
77
|
}): ResolvedTelemetryResource {
|
|
78
|
-
const serviceIdStr: string | undefined = data.
|
|
78
|
+
const serviceIdStr: string | undefined = data.primaryEntityId?.toString();
|
|
79
79
|
|
|
80
80
|
// Real Service (OpenTelemetry) — resolve from the loaded list.
|
|
81
81
|
if (serviceIdStr) {
|
|
@@ -87,11 +87,11 @@ export default class TelemetryServiceUtil {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
// Unattributed (Unknown) bucket —
|
|
90
|
+
// Unattributed (Unknown) bucket — primaryEntityId is the projectId.
|
|
91
91
|
if (
|
|
92
92
|
data.projectId &&
|
|
93
|
-
(data.
|
|
94
|
-
this.isUnknownServiceId(data.
|
|
93
|
+
(data.primaryEntityType === ServiceType.Unknown ||
|
|
94
|
+
this.isUnknownServiceId(data.primaryEntityId, data.projectId))
|
|
95
95
|
) {
|
|
96
96
|
return { service: this.getUnknownService(data.projectId) };
|
|
97
97
|
}
|
|
@@ -102,8 +102,8 @@ export default class TelemetryServiceUtil {
|
|
|
102
102
|
[ServiceType.DockerHost]: "Docker host telemetry",
|
|
103
103
|
[ServiceType.KubernetesCluster]: "Kubernetes telemetry",
|
|
104
104
|
};
|
|
105
|
-
const label: string | undefined = data.
|
|
106
|
-
? typeLabels[data.
|
|
105
|
+
const label: string | undefined = data.primaryEntityType
|
|
106
|
+
? typeLabels[data.primaryEntityType.toString()]
|
|
107
107
|
: undefined;
|
|
108
108
|
if (label) {
|
|
109
109
|
return { label: label };
|
|
@@ -115,7 +115,7 @@ export default class TelemetryServiceUtil {
|
|
|
115
115
|
/*
|
|
116
116
|
* Append the synthetic "Unknown Service" to a loaded service list, but
|
|
117
117
|
* only when the telemetry in view actually references it (some
|
|
118
|
-
*
|
|
118
|
+
* primaryEntityId equals the projectId). Avoids showing an empty "Unknown
|
|
119
119
|
* Service" entry for projects that always set service.name. Idempotent.
|
|
120
120
|
*/
|
|
121
121
|
public static withUnknownServiceIfReferenced(data: {
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import DashboardTraceChartComponent from "../../../Types/Dashboard/DashboardComponents/DashboardTraceChartComponent";
|
|
2
|
+
import { ObjectType } from "../../../Types/JSON";
|
|
3
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
4
|
+
import DashboardBaseComponentUtil from "./DashboardBaseComponent";
|
|
5
|
+
import {
|
|
6
|
+
ComponentArgument,
|
|
7
|
+
ComponentArgumentSection,
|
|
8
|
+
ComponentInputType,
|
|
9
|
+
} from "../../../Types/Dashboard/DashboardComponents/ComponentArgument";
|
|
10
|
+
import DashboardComponentType from "../../../Types/Dashboard/DashboardComponentType";
|
|
11
|
+
|
|
12
|
+
const DisplaySection: ComponentArgumentSection = {
|
|
13
|
+
name: "Display Options",
|
|
14
|
+
description: "Configure the widget title and metric",
|
|
15
|
+
order: 1,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const QuerySection: ComponentArgumentSection = {
|
|
19
|
+
name: "Query",
|
|
20
|
+
description: "Which spans to aggregate and how to split them",
|
|
21
|
+
order: 2,
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default class DashboardTraceChartComponentUtil extends DashboardBaseComponentUtil {
|
|
25
|
+
public static override getDefaultComponent(): DashboardTraceChartComponent {
|
|
26
|
+
return {
|
|
27
|
+
_type: ObjectType.DashboardComponent,
|
|
28
|
+
componentType: DashboardComponentType.TraceChart,
|
|
29
|
+
widthInDashboardUnits: 8,
|
|
30
|
+
heightInDashboardUnits: 5,
|
|
31
|
+
topInDashboardUnits: 0,
|
|
32
|
+
leftInDashboardUnits: 0,
|
|
33
|
+
componentId: ObjectID.generate(),
|
|
34
|
+
minHeightInDashboardUnits: 3,
|
|
35
|
+
minWidthInDashboardUnits: 6,
|
|
36
|
+
arguments: {
|
|
37
|
+
metric: "count",
|
|
38
|
+
topLimit: 10,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public static override getComponentConfigArguments(): Array<
|
|
44
|
+
ComponentArgument<DashboardTraceChartComponent>
|
|
45
|
+
> {
|
|
46
|
+
const componentArguments: Array<
|
|
47
|
+
ComponentArgument<DashboardTraceChartComponent>
|
|
48
|
+
> = [];
|
|
49
|
+
|
|
50
|
+
componentArguments.push({
|
|
51
|
+
name: "Title",
|
|
52
|
+
description: "Header shown above the chart",
|
|
53
|
+
required: false,
|
|
54
|
+
type: ComponentInputType.Text,
|
|
55
|
+
id: "title",
|
|
56
|
+
section: DisplaySection,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
componentArguments.push({
|
|
60
|
+
name: "Metric",
|
|
61
|
+
description: "Span aggregation to chart over time",
|
|
62
|
+
required: false,
|
|
63
|
+
type: ComponentInputType.Dropdown,
|
|
64
|
+
id: "metric",
|
|
65
|
+
section: DisplaySection,
|
|
66
|
+
dropdownOptions: [
|
|
67
|
+
{ label: "Request Count", value: "count" },
|
|
68
|
+
{ label: "Error Count", value: "errorCount" },
|
|
69
|
+
{ label: "Avg Response Time", value: "avgDuration" },
|
|
70
|
+
{ label: "Median Response Time (P50)", value: "p50Duration" },
|
|
71
|
+
{ label: "P90 Response Time", value: "p90Duration" },
|
|
72
|
+
{ label: "P95 Response Time", value: "p95Duration" },
|
|
73
|
+
{ label: "P99 Response Time", value: "p99Duration" },
|
|
74
|
+
{ label: "Min Response Time", value: "minDuration" },
|
|
75
|
+
{ label: "Max Response Time", value: "maxDuration" },
|
|
76
|
+
],
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
componentArguments.push({
|
|
80
|
+
name: "Span Name Contains",
|
|
81
|
+
description:
|
|
82
|
+
"Only include spans whose name contains this text (e.g. /Shipment/ShipShipment)",
|
|
83
|
+
required: false,
|
|
84
|
+
type: ComponentInputType.Text,
|
|
85
|
+
id: "spanNameContains",
|
|
86
|
+
placeholder: "/Shipment/ShipShipment",
|
|
87
|
+
section: QuerySection,
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
componentArguments.push({
|
|
91
|
+
name: "Attribute Filters",
|
|
92
|
+
description:
|
|
93
|
+
"Attribute equality filters, ANDed — key=value pairs separated by semicolons (e.g. url.host=torginol.starship.online; http.method=POST)",
|
|
94
|
+
required: false,
|
|
95
|
+
type: ComponentInputType.Text,
|
|
96
|
+
id: "attributeFilters",
|
|
97
|
+
placeholder: "url.host=torginol.starship.online",
|
|
98
|
+
section: QuerySection,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
componentArguments.push({
|
|
102
|
+
name: "Split By",
|
|
103
|
+
description:
|
|
104
|
+
"Optional dimension — a span attribute key (e.g. url.host, resource.service.instance.id) or one of: name, primaryEntityId, statusCode, kind. One series per value.",
|
|
105
|
+
required: false,
|
|
106
|
+
type: ComponentInputType.Text,
|
|
107
|
+
id: "groupByAttribute",
|
|
108
|
+
placeholder: "url.host",
|
|
109
|
+
section: QuerySection,
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
componentArguments.push({
|
|
113
|
+
name: "Top Series",
|
|
114
|
+
description: "Cap on the number of series when split (default 10)",
|
|
115
|
+
required: false,
|
|
116
|
+
type: ComponentInputType.Number,
|
|
117
|
+
id: "topLimit",
|
|
118
|
+
placeholder: "10",
|
|
119
|
+
section: QuerySection,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
componentArguments.push({
|
|
123
|
+
name: "Include Child Spans",
|
|
124
|
+
description:
|
|
125
|
+
"Count every span instead of root spans only (the traces explorer defaults to root spans)",
|
|
126
|
+
required: false,
|
|
127
|
+
type: ComponentInputType.Boolean,
|
|
128
|
+
id: "includeChildSpans",
|
|
129
|
+
section: QuerySection,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return componentArguments;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -24,6 +24,7 @@ import DashboardLogStreamComponentUtil from "./DashboardLogStreamComponent";
|
|
|
24
24
|
import DashboardMonitorListComponentUtil from "./DashboardMonitorListComponent";
|
|
25
25
|
import DashboardTableComponentUtil from "./DashboardTableComponent";
|
|
26
26
|
import DashboardTextComponentUtil from "./DashboardTextComponent";
|
|
27
|
+
import DashboardTraceChartComponentUtil from "./DashboardTraceChartComponent";
|
|
27
28
|
import DashboardTraceListComponentUtil from "./DashboardTraceListComponent";
|
|
28
29
|
import DashboardValueComponentUtil from "./DashboardValueComponent";
|
|
29
30
|
|
|
@@ -73,6 +74,12 @@ export default class DashboardComponentsUtil {
|
|
|
73
74
|
>;
|
|
74
75
|
}
|
|
75
76
|
|
|
77
|
+
if (dashboardComponentType === DashboardComponentType.TraceChart) {
|
|
78
|
+
return DashboardTraceChartComponentUtil.getComponentConfigArguments() as Array<
|
|
79
|
+
ComponentArgument<DashboardBaseComponent>
|
|
80
|
+
>;
|
|
81
|
+
}
|
|
82
|
+
|
|
76
83
|
if (dashboardComponentType === DashboardComponentType.IncidentList) {
|
|
77
84
|
return DashboardIncidentListComponentUtil.getComponentConfigArguments() as Array<
|
|
78
85
|
ComponentArgument<DashboardBaseComponent>
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import Crypto from "../Crypto";
|
|
2
|
+
import Dictionary from "../../Types/Dictionary";
|
|
3
|
+
import EntityType from "../../Types/Telemetry/EntityType";
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Isomorphic OpenTelemetry entity-key computation — the single source of
|
|
7
|
+
* truth shared by ingest (server, stamping `entityKeys`) and reads
|
|
8
|
+
* (server or browser, building `has(entityKeys, :key)` predicates).
|
|
9
|
+
* Hashing goes through an injectable SHA-256 provider: the default is
|
|
10
|
+
* `Common/Utils/Crypto` (crypto-js, pure JS) so this module works in the
|
|
11
|
+
* browser, and the server swaps in node:crypto for the ingest hot path
|
|
12
|
+
* (see TelemetryEntity.ts). Any provider MUST produce the same
|
|
13
|
+
* lowercase-hex SHA-256 — a hard requirement: a read-side key that
|
|
14
|
+
* doesn't byte-match the ingest-side stamp finds nothing.
|
|
15
|
+
*
|
|
16
|
+
* See Internal/Docs/OpenTelemetryEntities.md.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** Canonical identity-value form: trimmed + lowercased. */
|
|
20
|
+
export function canonicalizeEntityValue(value: string | undefined): string {
|
|
21
|
+
return String(value === undefined || value === null ? "" : value)
|
|
22
|
+
.trim()
|
|
23
|
+
.toLowerCase();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type Sha256HexProvider = (input: string) => string;
|
|
27
|
+
|
|
28
|
+
let sha256HexProvider: Sha256HexProvider = (input: string): string => {
|
|
29
|
+
return Crypto.getSha256Hash(input);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Swap the SHA-256 implementation (e.g. node:crypto on the server). The
|
|
34
|
+
* provider must return the full lowercase-hex digest, byte-identical to
|
|
35
|
+
* the crypto-js default, or ingest-stamped and read-side keys fork.
|
|
36
|
+
*/
|
|
37
|
+
export function setSha256Provider(provider: Sha256HexProvider): void {
|
|
38
|
+
sha256HexProvider = provider;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* '|' separates preimage segments and '=' separates key from value, so
|
|
43
|
+
* both — and the escape character itself — are backslash-escaped inside
|
|
44
|
+
* keys and values. This keeps the preimage injective (a value like
|
|
45
|
+
* `a|service.namespace=b` cannot collide with a two-attribute identity)
|
|
46
|
+
* while leaving values WITHOUT these characters byte-identical to the
|
|
47
|
+
* historical preimage, so already-stamped keys for normal data are
|
|
48
|
+
* unchanged.
|
|
49
|
+
*/
|
|
50
|
+
function escapeIdentityToken(token: string): string {
|
|
51
|
+
return token.replace(/([\\|=])/g, "\\$1");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Stable 16-hex-char identity key for an entity. Pure: same inputs → same
|
|
56
|
+
* key. Keys are sorted so attribute order is irrelevant; values are
|
|
57
|
+
* canonicalized so casing/whitespace drift does not fork identity;
|
|
58
|
+
* projectId is folded in so keys are tenant-unique (and a
|
|
59
|
+
* `has(entityKeys, key)` predicate is implicitly project-scoped).
|
|
60
|
+
*/
|
|
61
|
+
export function computeEntityKey(data: {
|
|
62
|
+
projectId: string;
|
|
63
|
+
entityType: EntityType;
|
|
64
|
+
identifyingAttributes: Dictionary<string>;
|
|
65
|
+
}): string {
|
|
66
|
+
const keys: Array<string> = Object.keys(
|
|
67
|
+
data.identifyingAttributes || {},
|
|
68
|
+
).sort();
|
|
69
|
+
|
|
70
|
+
const parts: Array<string> = [];
|
|
71
|
+
for (const key of keys) {
|
|
72
|
+
parts.push(
|
|
73
|
+
`${escapeIdentityToken(key)}=${escapeIdentityToken(
|
|
74
|
+
canonicalizeEntityValue(data.identifyingAttributes[key]),
|
|
75
|
+
)}`,
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const preimage: string = `${data.projectId}|${data.entityType}|${parts.join(
|
|
80
|
+
"|",
|
|
81
|
+
)}`;
|
|
82
|
+
|
|
83
|
+
return sha256HexProvider(preimage).slice(0, 16);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* ---- Read-side helpers ---------------------------------------------------
|
|
88
|
+
*
|
|
89
|
+
* Given a OneUptime resource's identifying value, compute the entity key
|
|
90
|
+
* to query `has(entityKeys, :key)`. Each MUST mirror the corresponding
|
|
91
|
+
* ingest-side resolver in `TelemetryEntity.extractEntities` exactly.
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* `host.name` is the host identity (matches the Host row's `hostIdentifier`,
|
|
96
|
+
* which is the canonicalized host.name). Pass `Host.hostIdentifier`.
|
|
97
|
+
*/
|
|
98
|
+
export function keyForHost(projectId: string, hostIdentifier: string): string {
|
|
99
|
+
return computeEntityKey({
|
|
100
|
+
projectId,
|
|
101
|
+
entityType: EntityType.Host,
|
|
102
|
+
identifyingAttributes: { "host.name": hostIdentifier },
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* `service.name` (+ `service.namespace` when the resource carries one) is
|
|
108
|
+
* the service identity — the ingest resolver folds the namespace into the
|
|
109
|
+
* key, so a namespaced service is only matchable when the same namespace
|
|
110
|
+
* is passed here. Pass `Service.name` (+ the namespace if known).
|
|
111
|
+
*/
|
|
112
|
+
export function keyForService(
|
|
113
|
+
projectId: string,
|
|
114
|
+
serviceName: string,
|
|
115
|
+
serviceNamespace?: string | undefined,
|
|
116
|
+
): string {
|
|
117
|
+
const identifyingAttributes: Dictionary<string> = {
|
|
118
|
+
"service.name": serviceName,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/*
|
|
122
|
+
* Mirrors the resolver's addIfPresent: blank/whitespace-only namespaces
|
|
123
|
+
* are not identity-bearing.
|
|
124
|
+
*/
|
|
125
|
+
if (serviceNamespace && serviceNamespace.trim().length > 0) {
|
|
126
|
+
identifyingAttributes["service.namespace"] = serviceNamespace;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return computeEntityKey({
|
|
130
|
+
projectId,
|
|
131
|
+
entityType: EntityType.Service,
|
|
132
|
+
identifyingAttributes,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* `k8s.cluster.name` is the cluster identity (matches the KubernetesCluster
|
|
138
|
+
* row's `clusterIdentifier`; the ingest resolver is name-only — see
|
|
139
|
+
* `TelemetryEntity.k8sClusterIdentity`). Pass
|
|
140
|
+
* `KubernetesCluster.clusterIdentifier`.
|
|
141
|
+
*/
|
|
142
|
+
export function keyForKubernetesCluster(
|
|
143
|
+
projectId: string,
|
|
144
|
+
clusterIdentifier: string,
|
|
145
|
+
): string {
|
|
146
|
+
return computeEntityKey({
|
|
147
|
+
projectId,
|
|
148
|
+
entityType: EntityType.KubernetesCluster,
|
|
149
|
+
identifyingAttributes: { "k8s.cluster.name": clusterIdentifier },
|
|
150
|
+
});
|
|
151
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import EntityRelationshipType from "../../Types/Telemetry/EntityRelationshipType";
|
|
2
|
+
import EntityType from "../../Types/Telemetry/EntityType";
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Co-occurrence relationship inference (phase 5 of the entity model —
|
|
6
|
+
* Internal/Docs/OpenTelemetryEntities.md §4). Every ingest batch yields an
|
|
7
|
+
* entity set; the directed pairs that co-occur in one resource are, by
|
|
8
|
+
* construction, related. `relType` is inferred from the *type* pair, not
|
|
9
|
+
* any standardized wire signal (the OTel relationship taxonomy is
|
|
10
|
+
* undefined), giving an infrastructure topology graph for free. Pure +
|
|
11
|
+
* synchronous: operates on already-computed entity keys, no DB round trip.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** A single directed relationship edge between two entities. */
|
|
15
|
+
export interface EntityRelationshipEdge {
|
|
16
|
+
fromEntityKey: string;
|
|
17
|
+
toEntityKey: string;
|
|
18
|
+
relationshipType: EntityRelationshipType;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Directed rules: a `from`-type that co-occurs with a `to`-type implies the
|
|
23
|
+
* given relationship. Only the meaningful direction has a rule (e.g. pod →
|
|
24
|
+
* cluster is `member-of`; cluster → pod yields nothing), so iterating all
|
|
25
|
+
* ordered pairs and keeping the non-null results produces a correctly
|
|
26
|
+
* directed edge set without double-counting. Extend as new entity types
|
|
27
|
+
* graduate from membership-only to first-class.
|
|
28
|
+
*
|
|
29
|
+
* `depends-on` is deliberately absent: a caller service and its callee
|
|
30
|
+
* never share one resource, so it cannot be co-occurrence-inferred. Those
|
|
31
|
+
* edges are derived from cross-service parent/child span pairs by the
|
|
32
|
+
* TelemetryEntity:ComputeServiceDependencies worker cron.
|
|
33
|
+
*/
|
|
34
|
+
const RULES: Record<string, EntityRelationshipType> = {
|
|
35
|
+
[`${EntityType.ServiceInstance}|${EntityType.Service}`]:
|
|
36
|
+
EntityRelationshipType.InstanceOf,
|
|
37
|
+
[`${EntityType.Service}|${EntityType.Host}`]: EntityRelationshipType.HostedOn,
|
|
38
|
+
[`${EntityType.Service}|${EntityType.KubernetesPod}`]:
|
|
39
|
+
EntityRelationshipType.RunsOn,
|
|
40
|
+
[`${EntityType.Container}|${EntityType.KubernetesPod}`]:
|
|
41
|
+
EntityRelationshipType.PartOf,
|
|
42
|
+
[`${EntityType.Container}|${EntityType.Host}`]: EntityRelationshipType.PartOf,
|
|
43
|
+
[`${EntityType.Process}|${EntityType.Container}`]:
|
|
44
|
+
EntityRelationshipType.PartOf,
|
|
45
|
+
[`${EntityType.Process}|${EntityType.Host}`]: EntityRelationshipType.RunsOn,
|
|
46
|
+
[`${EntityType.KubernetesPod}|${EntityType.KubernetesNode}`]:
|
|
47
|
+
EntityRelationshipType.RunsOn,
|
|
48
|
+
[`${EntityType.KubernetesPod}|${EntityType.KubernetesNamespace}`]:
|
|
49
|
+
EntityRelationshipType.MemberOf,
|
|
50
|
+
[`${EntityType.KubernetesPod}|${EntityType.KubernetesCluster}`]:
|
|
51
|
+
EntityRelationshipType.MemberOf,
|
|
52
|
+
[`${EntityType.KubernetesNode}|${EntityType.KubernetesCluster}`]:
|
|
53
|
+
EntityRelationshipType.MemberOf,
|
|
54
|
+
[`${EntityType.KubernetesNamespace}|${EntityType.KubernetesCluster}`]:
|
|
55
|
+
EntityRelationshipType.MemberOf,
|
|
56
|
+
[`${EntityType.KubernetesDeployment}|${EntityType.KubernetesNamespace}`]:
|
|
57
|
+
EntityRelationshipType.MemberOf,
|
|
58
|
+
[`${EntityType.KubernetesDeployment}|${EntityType.KubernetesCluster}`]:
|
|
59
|
+
EntityRelationshipType.MemberOf,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/** The relationship `fromType` → `toType` implies, or null if none. */
|
|
63
|
+
export function inferRelationshipType(
|
|
64
|
+
fromType: EntityType,
|
|
65
|
+
toType: EntityType,
|
|
66
|
+
): EntityRelationshipType | null {
|
|
67
|
+
return RULES[`${fromType}|${toType}`] || null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Derive every directed relationship edge implied by an entity set (one
|
|
72
|
+
* resource batch). Deduped; self-pairs and same-key pairs skipped.
|
|
73
|
+
*/
|
|
74
|
+
export function deriveRelationships(
|
|
75
|
+
entities: Array<{ entityType: EntityType; entityKey: string }>,
|
|
76
|
+
): Array<EntityRelationshipEdge> {
|
|
77
|
+
const edges: Array<EntityRelationshipEdge> = [];
|
|
78
|
+
const seen: Set<string> = new Set<string>();
|
|
79
|
+
|
|
80
|
+
for (let i: number = 0; i < entities.length; i++) {
|
|
81
|
+
for (let j: number = 0; j < entities.length; j++) {
|
|
82
|
+
if (i === j) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const from: { entityType: EntityType; entityKey: string } = entities[i]!;
|
|
86
|
+
const to: { entityType: EntityType; entityKey: string } = entities[j]!;
|
|
87
|
+
|
|
88
|
+
if (from.entityKey === to.entityKey) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const relationshipType: EntityRelationshipType | null =
|
|
93
|
+
inferRelationshipType(from.entityType, to.entityType);
|
|
94
|
+
if (!relationshipType) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const dedupeKey: string = `${from.entityKey}|${to.entityKey}|${relationshipType}`;
|
|
99
|
+
if (seen.has(dedupeKey)) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
seen.add(dedupeKey);
|
|
103
|
+
|
|
104
|
+
edges.push({
|
|
105
|
+
fromEntityKey: from.entityKey,
|
|
106
|
+
toEntityKey: to.entityKey,
|
|
107
|
+
relationshipType,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return edges;
|
|
113
|
+
}
|
|
@@ -9,7 +9,7 @@ export interface SpanData {
|
|
|
9
9
|
startTimeUnixNano: number;
|
|
10
10
|
endTimeUnixNano: number;
|
|
11
11
|
durationUnixNano: number;
|
|
12
|
-
|
|
12
|
+
primaryEntityId: string | undefined;
|
|
13
13
|
name: string | undefined;
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -28,7 +28,7 @@ export interface CriticalPathResult {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export interface ServiceBreakdown {
|
|
31
|
-
|
|
31
|
+
primaryEntityId: string;
|
|
32
32
|
totalDurationUnixNano: number;
|
|
33
33
|
selfTimeUnixNano: number;
|
|
34
34
|
spanCount: number;
|
|
@@ -308,12 +308,12 @@ export default class CriticalPathUtil {
|
|
|
308
308
|
> = new Map();
|
|
309
309
|
|
|
310
310
|
for (const span of spans) {
|
|
311
|
-
const
|
|
311
|
+
const primaryEntityId: string = span.primaryEntityId || "unknown";
|
|
312
312
|
const entry: {
|
|
313
313
|
totalDuration: number;
|
|
314
314
|
selfTime: number;
|
|
315
315
|
spanCount: number;
|
|
316
|
-
} = serviceMap.get(
|
|
316
|
+
} = serviceMap.get(primaryEntityId) || {
|
|
317
317
|
totalDuration: 0,
|
|
318
318
|
selfTime: 0,
|
|
319
319
|
spanCount: 0,
|
|
@@ -323,13 +323,13 @@ export default class CriticalPathUtil {
|
|
|
323
323
|
const selfTime: SpanSelfTime | undefined = selfTimes.get(span.spanId);
|
|
324
324
|
entry.selfTime += selfTime ? selfTime.selfTimeUnixNano : 0;
|
|
325
325
|
entry.spanCount += 1;
|
|
326
|
-
serviceMap.set(
|
|
326
|
+
serviceMap.set(primaryEntityId, entry);
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
const result: ServiceBreakdown[] = [];
|
|
330
|
-
for (const [
|
|
330
|
+
for (const [primaryEntityId, data] of serviceMap.entries()) {
|
|
331
331
|
result.push({
|
|
332
|
-
|
|
332
|
+
primaryEntityId,
|
|
333
333
|
totalDurationUnixNano: data.totalDuration,
|
|
334
334
|
selfTimeUnixNano: data.selfTime,
|
|
335
335
|
spanCount: data.spanCount,
|
package/Utils/UUID.ts
CHANGED
|
@@ -1,4 +1,61 @@
|
|
|
1
1
|
export default class UUID {
|
|
2
|
+
/**
|
|
3
|
+
* RFC 9562 UUIDv7: 48-bit big-endian unix-millisecond timestamp prefix,
|
|
4
|
+
* then version/variant bits, then 74 random bits. Ids generated later
|
|
5
|
+
* sort lexicographically after ids generated earlier (same-millisecond
|
|
6
|
+
* ids tie on the prefix and order randomly). Used for analytics-row
|
|
7
|
+
* `_id`s: time-ordered ids cluster inserts and compress far better in
|
|
8
|
+
* ClickHouse than fully-random v4 UUIDs. Postgres ids keep using
|
|
9
|
+
* `generate()` (random v4) — do not switch those.
|
|
10
|
+
*/
|
|
11
|
+
public static generateTimeOrdered(): string {
|
|
12
|
+
const bytes: Uint8Array = new Uint8Array(16);
|
|
13
|
+
|
|
14
|
+
const cryptoObj: Crypto | undefined = globalThis.crypto;
|
|
15
|
+
if (cryptoObj && typeof cryptoObj.getRandomValues === "function") {
|
|
16
|
+
cryptoObj.getRandomValues(bytes);
|
|
17
|
+
} else {
|
|
18
|
+
// Non-cryptographic fallback — uniqueness, not secrecy, is the goal.
|
|
19
|
+
for (let i: number = 0; i < bytes.length; i++) {
|
|
20
|
+
bytes[i] = (Math.random() * 256) | 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* 48-bit timestamp written big-endian into bytes 0..5. JS bitwise
|
|
26
|
+
* operators truncate to 32 bits, so the bytes are peeled off with
|
|
27
|
+
* division instead of shifts.
|
|
28
|
+
*/
|
|
29
|
+
let timestamp: number = Date.now();
|
|
30
|
+
for (let i: number = 5; i >= 0; i--) {
|
|
31
|
+
bytes[i] = timestamp % 256;
|
|
32
|
+
timestamp = Math.floor(timestamp / 256);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Version 7 in the high nibble of byte 6; RFC 4122 variant on byte 8.
|
|
36
|
+
bytes[6] = ((bytes[6] as number) & 0x0f) | 0x70;
|
|
37
|
+
bytes[8] = ((bytes[8] as number) & 0x3f) | 0x80;
|
|
38
|
+
|
|
39
|
+
return UUID.formatBytes(bytes);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private static formatBytes(bytes: Uint8Array): string {
|
|
43
|
+
const hex: string = Array.from(bytes, (b: number) => {
|
|
44
|
+
return b.toString(16).padStart(2, "0");
|
|
45
|
+
}).join("");
|
|
46
|
+
return (
|
|
47
|
+
hex.slice(0, 8) +
|
|
48
|
+
"-" +
|
|
49
|
+
hex.slice(8, 12) +
|
|
50
|
+
"-" +
|
|
51
|
+
hex.slice(12, 16) +
|
|
52
|
+
"-" +
|
|
53
|
+
hex.slice(16, 20) +
|
|
54
|
+
"-" +
|
|
55
|
+
hex.slice(20, 32)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
2
59
|
public static generate(): string {
|
|
3
60
|
const cryptoObj: Crypto | undefined = globalThis.crypto;
|
|
4
61
|
|