@oneuptime/common 10.8.2 → 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/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 +10 -10
- 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/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 +12 -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/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 +186 -50
- package/Server/Services/ProfileAggregationService.ts +904 -126
- 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 +5 -0
- 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/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/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/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/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/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 +12 -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/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/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/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/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/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
|
@@ -1317,7 +1317,7 @@ ${alertSeverity.name}
|
|
|
1317
1317
|
// delete all the alert metrics with this alert id because it's a refresh
|
|
1318
1318
|
await MetricService.deleteBy({
|
|
1319
1319
|
query: {
|
|
1320
|
-
|
|
1320
|
+
primaryEntityId: data.alertId,
|
|
1321
1321
|
},
|
|
1322
1322
|
props: {
|
|
1323
1323
|
isRoot: true,
|
|
@@ -1342,8 +1342,8 @@ ${alertSeverity.name}
|
|
|
1342
1342
|
const alertCountMetric: Metric = new Metric();
|
|
1343
1343
|
|
|
1344
1344
|
alertCountMetric.projectId = alert.projectId;
|
|
1345
|
-
alertCountMetric.
|
|
1346
|
-
alertCountMetric.
|
|
1345
|
+
alertCountMetric.primaryEntityId = alert.id!;
|
|
1346
|
+
alertCountMetric.primaryEntityType = ServiceType.Alert;
|
|
1347
1347
|
alertCountMetric.name = AlertMetricType.AlertCount;
|
|
1348
1348
|
alertCountMetric.value = 1;
|
|
1349
1349
|
alertCountMetric.attributes = {
|
|
@@ -1391,8 +1391,8 @@ ${alertSeverity.name}
|
|
|
1391
1391
|
const timeToAcknowledgeMetric: Metric = new Metric();
|
|
1392
1392
|
|
|
1393
1393
|
timeToAcknowledgeMetric.projectId = alert.projectId;
|
|
1394
|
-
timeToAcknowledgeMetric.
|
|
1395
|
-
timeToAcknowledgeMetric.
|
|
1394
|
+
timeToAcknowledgeMetric.primaryEntityId = alert.id!;
|
|
1395
|
+
timeToAcknowledgeMetric.primaryEntityType = ServiceType.Alert;
|
|
1396
1396
|
timeToAcknowledgeMetric.name = AlertMetricType.TimeToAcknowledge;
|
|
1397
1397
|
timeToAcknowledgeMetric.value = OneUptimeDate.getDifferenceInSeconds(
|
|
1398
1398
|
ackAlertStateTimeline?.startsAt || OneUptimeDate.getCurrentDate(),
|
|
@@ -1447,8 +1447,8 @@ ${alertSeverity.name}
|
|
|
1447
1447
|
const timeToResolveMetric: Metric = new Metric();
|
|
1448
1448
|
|
|
1449
1449
|
timeToResolveMetric.projectId = alert.projectId;
|
|
1450
|
-
timeToResolveMetric.
|
|
1451
|
-
timeToResolveMetric.
|
|
1450
|
+
timeToResolveMetric.primaryEntityId = alert.id!;
|
|
1451
|
+
timeToResolveMetric.primaryEntityType = ServiceType.Alert;
|
|
1452
1452
|
timeToResolveMetric.name = AlertMetricType.TimeToResolve;
|
|
1453
1453
|
timeToResolveMetric.value = OneUptimeDate.getDifferenceInSeconds(
|
|
1454
1454
|
resolvedAlertStateTimeline?.startsAt ||
|
|
@@ -1498,8 +1498,8 @@ ${alertSeverity.name}
|
|
|
1498
1498
|
lastAlertStateTimeline.startsAt || OneUptimeDate.getCurrentDate();
|
|
1499
1499
|
|
|
1500
1500
|
alertDurationMetric.projectId = alert.projectId;
|
|
1501
|
-
alertDurationMetric.
|
|
1502
|
-
alertDurationMetric.
|
|
1501
|
+
alertDurationMetric.primaryEntityId = alert.id!;
|
|
1502
|
+
alertDurationMetric.primaryEntityType = ServiceType.Alert;
|
|
1503
1503
|
alertDurationMetric.name = AlertMetricType.AlertDuration;
|
|
1504
1504
|
alertDurationMetric.value = OneUptimeDate.getDifferenceInSeconds(
|
|
1505
1505
|
alertEndsAt,
|
|
@@ -28,11 +28,18 @@ import Select from "../Types/AnalyticsDatabase/Select";
|
|
|
28
28
|
import UpdateBy from "../Types/AnalyticsDatabase/UpdateBy";
|
|
29
29
|
import { SQL, Statement } from "../Utils/AnalyticsDatabase/Statement";
|
|
30
30
|
import StatementGenerator from "../Utils/AnalyticsDatabase/StatementGenerator";
|
|
31
|
+
import { getQuerySettings } from "../Utils/AnalyticsDatabase/QuerySettingsHelper";
|
|
31
32
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
32
33
|
import Realtime from "../Utils/Realtime";
|
|
33
34
|
import StreamUtil from "../Utils/Stream";
|
|
34
35
|
import BaseService from "./BaseService";
|
|
35
|
-
import {
|
|
36
|
+
import {
|
|
37
|
+
ClickHouseSettings,
|
|
38
|
+
ExecResult,
|
|
39
|
+
ResponseJSON,
|
|
40
|
+
ResultSet,
|
|
41
|
+
} from "@clickhouse/client";
|
|
42
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
36
43
|
import AnalyticsBaseModel from "../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
|
|
37
44
|
import { WorkflowRoute } from "../../ServiceRoute";
|
|
38
45
|
import Protocol from "../../Types/API/Protocol";
|
|
@@ -64,6 +71,65 @@ export type DbJSONResponse = ResponseJSON<{
|
|
|
64
71
|
data?: Array<JSONObject>;
|
|
65
72
|
}>;
|
|
66
73
|
|
|
74
|
+
/*
|
|
75
|
+
* Re-exported so callers outside Common (e.g. App data migrations) can type
|
|
76
|
+
* per-call settings without depending on @clickhouse/client directly.
|
|
77
|
+
*/
|
|
78
|
+
export type { ClickHouseSettings } from "@clickhouse/client";
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Optional per-call knobs for `execute` / `executeQuery`, threaded into
|
|
82
|
+
* `client.exec` / `client.query`. Long-running statements (e.g. the
|
|
83
|
+
* telemetry V3 backfill's INSERT...SELECT chunks) need per-call
|
|
84
|
+
* `clickhouse_settings` — notably `send_progress_in_http_headers`, which
|
|
85
|
+
* keeps the HTTP socket non-idle so the client's `request_timeout`
|
|
86
|
+
* (enforced as a socket *idle* timer, see ClickhouseConfig.ts) never
|
|
87
|
+
* destroys a healthy request — and a deterministic `query_id` so a retry
|
|
88
|
+
* can find a still-running or already-finished predecessor in
|
|
89
|
+
* `system.processes` / `system.query_log`. Additive: callers that pass
|
|
90
|
+
* nothing get the exact pre-existing behavior.
|
|
91
|
+
*/
|
|
92
|
+
export interface ClickhouseExecuteOptions {
|
|
93
|
+
clickhouseSettings?: ClickHouseSettings | undefined;
|
|
94
|
+
queryId?: string | undefined;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Ambient context that makes ClickHouse inserts idempotent across queue
|
|
99
|
+
* retries. The telemetry queue worker wraps each job in
|
|
100
|
+
* `runWithInsertDedup(jobId, ...)`; every insertJsonRows call inside the
|
|
101
|
+
* job then stamps `insert_deduplication_token =
|
|
102
|
+
* "<tokenBase>:<table>:<chunkIndex>"` plus async_insert_deduplicate=1 /
|
|
103
|
+
* wait_for_async_insert=1, so a stalled-job retry that re-processes the
|
|
104
|
+
* same payload re-issues byte-identical tokens and ClickHouse drops the
|
|
105
|
+
* duplicate blocks (on replicated tables; on plain MergeTree the token is
|
|
106
|
+
* ignored unless non_replicated_deduplication_window is set — no harm
|
|
107
|
+
* either way). The chunk counter is per table because one job inserts
|
|
108
|
+
* into several tables (e.g. Span + ExceptionInstance) in a deterministic
|
|
109
|
+
* order.
|
|
110
|
+
*
|
|
111
|
+
* HTTP-path inserts run outside the context and keep the fire-and-forget
|
|
112
|
+
* async insert (wait_for_async_insert=0) — dedup waiting is only
|
|
113
|
+
* affordable off the request thread.
|
|
114
|
+
*/
|
|
115
|
+
export interface InsertDedupContextStore {
|
|
116
|
+
tokenBase: string;
|
|
117
|
+
chunkIndexByTable: Map<string, number>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const insertDedupContext: AsyncLocalStorage<InsertDedupContextStore> =
|
|
121
|
+
new AsyncLocalStorage<InsertDedupContextStore>();
|
|
122
|
+
|
|
123
|
+
export function runWithInsertDedup<T>(
|
|
124
|
+
tokenBase: string,
|
|
125
|
+
fn: () => Promise<T>,
|
|
126
|
+
): Promise<T> {
|
|
127
|
+
return insertDedupContext.run(
|
|
128
|
+
{ tokenBase, chunkIndexByTable: new Map<string, number>() },
|
|
129
|
+
fn,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
67
133
|
export default class AnalyticsDatabaseService<
|
|
68
134
|
TBaseModel extends AnalyticsBaseModel,
|
|
69
135
|
> extends BaseService {
|
|
@@ -105,7 +171,20 @@ export default class AnalyticsDatabaseService<
|
|
|
105
171
|
}
|
|
106
172
|
|
|
107
173
|
@CaptureSpan()
|
|
108
|
-
public async insertJsonRows(
|
|
174
|
+
public async insertJsonRows(
|
|
175
|
+
rows: Array<JSONObject>,
|
|
176
|
+
options?: {
|
|
177
|
+
/**
|
|
178
|
+
* Explicit deduplication token for this insert. Overrides the
|
|
179
|
+
* ambient runWithInsertDedup context. Callers must guarantee the
|
|
180
|
+
* token is stable across retries of the same logical insert and
|
|
181
|
+
* unique otherwise.
|
|
182
|
+
*/
|
|
183
|
+
dedupToken?: string | undefined;
|
|
184
|
+
/** Extra per-insert ClickHouse settings, merged last. */
|
|
185
|
+
clickhouseSettings?: ClickHouseSettings | undefined;
|
|
186
|
+
},
|
|
187
|
+
): Promise<void> {
|
|
109
188
|
if (!rows || rows.length === 0) {
|
|
110
189
|
return;
|
|
111
190
|
}
|
|
@@ -121,15 +200,51 @@ export default class AnalyticsDatabaseService<
|
|
|
121
200
|
);
|
|
122
201
|
}
|
|
123
202
|
|
|
203
|
+
let dedupToken: string | undefined = options?.dedupToken;
|
|
204
|
+
|
|
205
|
+
if (!dedupToken) {
|
|
206
|
+
const dedupStore: InsertDedupContextStore | undefined =
|
|
207
|
+
insertDedupContext.getStore();
|
|
208
|
+
if (dedupStore) {
|
|
209
|
+
const chunkIndex: number =
|
|
210
|
+
dedupStore.chunkIndexByTable.get(tableName) ?? 0;
|
|
211
|
+
dedupStore.chunkIndexByTable.set(tableName, chunkIndex + 1);
|
|
212
|
+
dedupToken = `${dedupStore.tokenBase}:${tableName}:${chunkIndex}`;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
let clickhouseSettings: ClickHouseSettings = {
|
|
217
|
+
async_insert: 1,
|
|
218
|
+
wait_for_async_insert: 0,
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
if (dedupToken) {
|
|
222
|
+
/*
|
|
223
|
+
* wait_for_async_insert=1 so the worker only acks the job after
|
|
224
|
+
* the block actually landed (or was deduplicated) — otherwise a
|
|
225
|
+
* crash between buffer-write and flush loses data with no retry.
|
|
226
|
+
*/
|
|
227
|
+
clickhouseSettings = {
|
|
228
|
+
async_insert: 1,
|
|
229
|
+
wait_for_async_insert: 1,
|
|
230
|
+
async_insert_deduplicate: 1,
|
|
231
|
+
insert_deduplication_token: dedupToken,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (options?.clickhouseSettings) {
|
|
236
|
+
clickhouseSettings = {
|
|
237
|
+
...clickhouseSettings,
|
|
238
|
+
...options.clickhouseSettings,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
124
242
|
try {
|
|
125
243
|
await client.insert({
|
|
126
244
|
table: tableName,
|
|
127
245
|
values: rows,
|
|
128
246
|
format: "JSONEachRow",
|
|
129
|
-
clickhouse_settings:
|
|
130
|
-
async_insert: 1,
|
|
131
|
-
wait_for_async_insert: 0,
|
|
132
|
-
},
|
|
247
|
+
clickhouse_settings: clickhouseSettings,
|
|
133
248
|
});
|
|
134
249
|
|
|
135
250
|
logger.debug(
|
|
@@ -441,13 +556,13 @@ export default class AnalyticsDatabaseService<
|
|
|
441
556
|
}
|
|
442
557
|
|
|
443
558
|
/**
|
|
444
|
-
* Group telemetry rows by (
|
|
559
|
+
* Group telemetry rows by (primaryEntityId, primaryEntityType) for a project over a
|
|
445
560
|
* time window, returning the row count and an estimate of the ingested
|
|
446
561
|
* byte size (ClickHouse `byteSize(*)`, the uncompressed in-memory size of
|
|
447
562
|
* each row's columns). This is the enumeration source for usage billing:
|
|
448
563
|
* a single aggregation scan surfaces EVERY resource that emitted
|
|
449
564
|
* telemetry — real Services, Hosts, Docker hosts, Kubernetes clusters,
|
|
450
|
-
* Monitors and unattributed (
|
|
565
|
+
* Monitors and unattributed (primaryEntityId = projectId) — without needing a
|
|
451
566
|
* Postgres row per resource. The caller decides which serviceTypes to
|
|
452
567
|
* bill and how to attribute retention.
|
|
453
568
|
*/
|
|
@@ -459,8 +574,8 @@ export default class AnalyticsDatabaseService<
|
|
|
459
574
|
endDate: Date;
|
|
460
575
|
}): Promise<
|
|
461
576
|
Array<{
|
|
462
|
-
|
|
463
|
-
|
|
577
|
+
primaryEntityId: string;
|
|
578
|
+
primaryEntityType: string | null;
|
|
464
579
|
rowCount: number;
|
|
465
580
|
estimatedBytes: number;
|
|
466
581
|
}>
|
|
@@ -479,7 +594,7 @@ export default class AnalyticsDatabaseService<
|
|
|
479
594
|
const databaseName: string =
|
|
480
595
|
this.database!.getDatasourceOptions().database!;
|
|
481
596
|
|
|
482
|
-
const statement: Statement = SQL`SELECT
|
|
597
|
+
const statement: Statement = SQL`SELECT primaryEntityId AS primaryEntityId, primaryEntityType AS primaryEntityType, count() AS rowCount, sum(byteSize(*)) AS estimatedBytes FROM ${databaseName}.${this.model.tableName} WHERE projectId = ${{
|
|
483
598
|
type: TableColumnType.ObjectID,
|
|
484
599
|
value: data.projectId,
|
|
485
600
|
}} AND ${timestampColumnName} >= ${{
|
|
@@ -488,11 +603,16 @@ export default class AnalyticsDatabaseService<
|
|
|
488
603
|
}} AND ${timestampColumnName} <= ${{
|
|
489
604
|
type: TableColumnType.DateTime64,
|
|
490
605
|
value: data.endDate,
|
|
491
|
-
}} GROUP BY
|
|
606
|
+
}} GROUP BY primaryEntityId, primaryEntityType`;
|
|
492
607
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
608
|
+
/*
|
|
609
|
+
* Billing scan: deliberately NO timeout_overflow_mode='break'. A
|
|
610
|
+
* partial aggregation here silently undercounts usage (rows that
|
|
611
|
+
* weren't scanned before the cap simply never get billed). Failing
|
|
612
|
+
* loudly lets the staging cron retry instead; the cap is raised to
|
|
613
|
+
* compensate for the full-day scan on large projects.
|
|
614
|
+
*/
|
|
615
|
+
statement.append(getQuerySettings({ maxExecutionTimeInSeconds: 120 }));
|
|
496
616
|
|
|
497
617
|
const dbResult: ResultSet<"JSON"> = await this.executeQuery(statement);
|
|
498
618
|
const responseJSON: ResponseJSON<JSONObject> =
|
|
@@ -500,25 +620,25 @@ export default class AnalyticsDatabaseService<
|
|
|
500
620
|
const items: Array<JSONObject> = responseJSON.data ? responseJSON.data : [];
|
|
501
621
|
|
|
502
622
|
const results: Array<{
|
|
503
|
-
|
|
504
|
-
|
|
623
|
+
primaryEntityId: string;
|
|
624
|
+
primaryEntityType: string | null;
|
|
505
625
|
rowCount: number;
|
|
506
626
|
estimatedBytes: number;
|
|
507
627
|
}> = [];
|
|
508
628
|
|
|
509
629
|
for (const item of items) {
|
|
510
|
-
const
|
|
511
|
-
if (!
|
|
630
|
+
const primaryEntityId: string = (item["primaryEntityId"] as string) || "";
|
|
631
|
+
if (!primaryEntityId) {
|
|
512
632
|
continue;
|
|
513
633
|
}
|
|
514
|
-
const serviceTypeRaw: unknown = item["
|
|
515
|
-
const
|
|
634
|
+
const serviceTypeRaw: unknown = item["primaryEntityType"];
|
|
635
|
+
const primaryEntityType: string | null =
|
|
516
636
|
typeof serviceTypeRaw === "string" && serviceTypeRaw.trim()
|
|
517
637
|
? serviceTypeRaw
|
|
518
638
|
: null;
|
|
519
639
|
results.push({
|
|
520
|
-
|
|
521
|
-
|
|
640
|
+
primaryEntityId,
|
|
641
|
+
primaryEntityType,
|
|
522
642
|
rowCount: Number(item["rowCount"]) || 0,
|
|
523
643
|
estimatedBytes: Number(item["estimatedBytes"]) || 0,
|
|
524
644
|
});
|
|
@@ -847,6 +967,25 @@ export default class AnalyticsDatabaseService<
|
|
|
847
967
|
return Promise.resolve({ findBy, carryForward: null });
|
|
848
968
|
}
|
|
849
969
|
|
|
970
|
+
/**
|
|
971
|
+
* Read-side retention filter. TTL is `retentionDate DELETE` with
|
|
972
|
+
* ttl_only_drop_parts=1, so a part survives until EVERY row in it has
|
|
973
|
+
* expired — rows past their per-service retention stay on disk (and
|
|
974
|
+
* were queryable) for up to a partition's worth of extra time. For
|
|
975
|
+
* models that carry a retentionDate column, every centrally generated
|
|
976
|
+
* read appends this predicate so expired rows become invisible the
|
|
977
|
+
* moment they expire rather than when their part finally drops.
|
|
978
|
+
*
|
|
979
|
+
* Returns the raw SQL fragment (server-evaluated now(), no parameter)
|
|
980
|
+
* or "" when the model has no retentionDate column.
|
|
981
|
+
*/
|
|
982
|
+
protected getRetentionReadFilter(): string {
|
|
983
|
+
if (!this.model.getTableColumn("retentionDate")) {
|
|
984
|
+
return "";
|
|
985
|
+
}
|
|
986
|
+
return " AND retentionDate >= now()";
|
|
987
|
+
}
|
|
988
|
+
|
|
850
989
|
public toCountStatement(countBy: CountBy<TBaseModel>): Statement {
|
|
851
990
|
if (!this.database) {
|
|
852
991
|
this.useDefaultDatabase();
|
|
@@ -877,7 +1016,8 @@ export default class AnalyticsDatabaseService<
|
|
|
877
1016
|
FROM ${databaseName}.${this.model.tableName}
|
|
878
1017
|
WHERE TRUE `
|
|
879
1018
|
)
|
|
880
|
-
.append(whereStatement)
|
|
1019
|
+
.append(whereStatement)
|
|
1020
|
+
.append(this.getRetentionReadFilter());
|
|
881
1021
|
|
|
882
1022
|
if (countBy.limit) {
|
|
883
1023
|
statement.append(SQL`
|
|
@@ -906,7 +1046,10 @@ export default class AnalyticsDatabaseService<
|
|
|
906
1046
|
* throwing, which is acceptable for pagination display.
|
|
907
1047
|
*/
|
|
908
1048
|
statement.append(
|
|
909
|
-
|
|
1049
|
+
getQuerySettings({
|
|
1050
|
+
maxExecutionTimeInSeconds: 45,
|
|
1051
|
+
timeoutOverflowMode: "break",
|
|
1052
|
+
}),
|
|
910
1053
|
);
|
|
911
1054
|
|
|
912
1055
|
logger.debug(`${this.model.tableName} Count Statement`, { tableName: this.model.tableName } as LogAttributes);
|
|
@@ -941,11 +1084,13 @@ export default class AnalyticsDatabaseService<
|
|
|
941
1084
|
const statement: Statement = SQL`
|
|
942
1085
|
SELECT 1 as existsFlag
|
|
943
1086
|
FROM ${databaseName}.${this.model.tableName}
|
|
944
|
-
WHERE TRUE
|
|
1087
|
+
WHERE TRUE `
|
|
1088
|
+
.append(whereStatement)
|
|
1089
|
+
.append(this.getRetentionReadFilter());
|
|
945
1090
|
|
|
946
1091
|
statement.append(SQL` LIMIT 1`);
|
|
947
1092
|
|
|
948
|
-
statement.append(
|
|
1093
|
+
statement.append(getQuerySettings({ maxExecutionTimeInSeconds: 45 }));
|
|
949
1094
|
|
|
950
1095
|
logger.debug(`${this.model.tableName} Exists Statement`, { tableName: this.model.tableName } as LogAttributes);
|
|
951
1096
|
logger.debug(statement, { tableName: this.model.tableName } as LogAttributes);
|
|
@@ -978,7 +1123,10 @@ export default class AnalyticsDatabaseService<
|
|
|
978
1123
|
|
|
979
1124
|
statement.append(SQL`SELECT `.append(select.statement));
|
|
980
1125
|
statement.append(SQL` FROM ${databaseName}.${this.model.tableName}`);
|
|
981
|
-
statement
|
|
1126
|
+
statement
|
|
1127
|
+
.append(SQL` WHERE TRUE `)
|
|
1128
|
+
.append(whereStatement)
|
|
1129
|
+
.append(this.getRetentionReadFilter());
|
|
982
1130
|
|
|
983
1131
|
statement
|
|
984
1132
|
.append(SQL` GROUP BY `)
|
|
@@ -1025,7 +1173,13 @@ export default class AnalyticsDatabaseService<
|
|
|
1025
1173
|
* ranges, but cluster headroom is preserved under burst.
|
|
1026
1174
|
*/
|
|
1027
1175
|
statement.append(
|
|
1028
|
-
|
|
1176
|
+
getQuerySettings({
|
|
1177
|
+
additionalSettings: {
|
|
1178
|
+
optimize_aggregation_in_order: 1,
|
|
1179
|
+
optimize_move_to_prewhere: 1,
|
|
1180
|
+
max_threads: 4,
|
|
1181
|
+
},
|
|
1182
|
+
}),
|
|
1029
1183
|
);
|
|
1030
1184
|
|
|
1031
1185
|
logger.debug(`${this.model.tableName} Aggregate Statement`, { tableName: this.model.tableName } as LogAttributes);
|
|
@@ -1071,7 +1225,10 @@ export default class AnalyticsDatabaseService<
|
|
|
1071
1225
|
|
|
1072
1226
|
statement.append(SQL`SELECT `.append(select.statement));
|
|
1073
1227
|
statement.append(SQL` FROM ${databaseName}.${this.model.tableName}`);
|
|
1074
|
-
statement
|
|
1228
|
+
statement
|
|
1229
|
+
.append(SQL` WHERE TRUE `)
|
|
1230
|
+
.append(whereStatement)
|
|
1231
|
+
.append(this.getRetentionReadFilter());
|
|
1075
1232
|
|
|
1076
1233
|
if (groupByStatement) {
|
|
1077
1234
|
statement.append(SQL` GROUP BY `).append(groupByStatement);
|
|
@@ -1100,7 +1257,10 @@ export default class AnalyticsDatabaseService<
|
|
|
1100
1257
|
* partial results rather than throwing.
|
|
1101
1258
|
*/
|
|
1102
1259
|
statement.append(
|
|
1103
|
-
|
|
1260
|
+
getQuerySettings({
|
|
1261
|
+
maxExecutionTimeInSeconds: 45,
|
|
1262
|
+
timeoutOverflowMode: "break",
|
|
1263
|
+
}),
|
|
1104
1264
|
);
|
|
1105
1265
|
|
|
1106
1266
|
logger.debug(`${this.model.tableName} Find Statement`, { tableName: this.model.tableName } as LogAttributes);
|
|
@@ -1276,7 +1436,8 @@ export default class AnalyticsDatabaseService<
|
|
|
1276
1436
|
|
|
1277
1437
|
@CaptureSpan()
|
|
1278
1438
|
public async execute(
|
|
1279
|
-
statement: Statement | string
|
|
1439
|
+
statement: Statement | string,
|
|
1440
|
+
options?: ClickhouseExecuteOptions
|
|
1280
1441
|
): Promise<ExecResult<Stream>> {
|
|
1281
1442
|
const client: ClickhouseClient = this.getDatabaseClient();
|
|
1282
1443
|
|
|
@@ -1288,12 +1449,17 @@ export default class AnalyticsDatabaseService<
|
|
|
1288
1449
|
return (await client.exec({
|
|
1289
1450
|
query: query,
|
|
1290
1451
|
query_params: queryParams || (undefined as any), // undefined is not specified in the type for query_params, but its ok to pass undefined.
|
|
1452
|
+
...(options?.clickhouseSettings
|
|
1453
|
+
? { clickhouse_settings: options.clickhouseSettings }
|
|
1454
|
+
: {}),
|
|
1455
|
+
...(options?.queryId ? { query_id: options.queryId } : {}),
|
|
1291
1456
|
})) as ExecResult<Stream>;
|
|
1292
1457
|
}
|
|
1293
1458
|
|
|
1294
1459
|
@CaptureSpan()
|
|
1295
1460
|
public async executeQuery(
|
|
1296
|
-
statement: Statement | string
|
|
1461
|
+
statement: Statement | string,
|
|
1462
|
+
options?: ClickhouseExecuteOptions
|
|
1297
1463
|
): Promise<ResultSet<"JSON">> {
|
|
1298
1464
|
const client: ClickhouseClient = this.getDatabaseClient();
|
|
1299
1465
|
|
|
@@ -1306,6 +1472,10 @@ export default class AnalyticsDatabaseService<
|
|
|
1306
1472
|
query: query,
|
|
1307
1473
|
format: "JSON",
|
|
1308
1474
|
query_params: queryParams || (undefined as any), // undefined is not specified in the type for query_params, but its ok to pass undefined.
|
|
1475
|
+
...(options?.clickhouseSettings
|
|
1476
|
+
? { clickhouse_settings: options.clickhouseSettings }
|
|
1477
|
+
: {}),
|
|
1478
|
+
...(options?.queryId ? { query_id: options.queryId } : {}),
|
|
1309
1479
|
});
|
|
1310
1480
|
}
|
|
1311
1481
|
|
|
@@ -1599,11 +1769,10 @@ export default class AnalyticsDatabaseService<
|
|
|
1599
1769
|
data: TBaseModel
|
|
1600
1770
|
): TBaseModel {
|
|
1601
1771
|
if (!data.id) {
|
|
1602
|
-
data.id = ObjectID.
|
|
1772
|
+
data.id = ObjectID.generateTimeOrdered();
|
|
1603
1773
|
}
|
|
1604
1774
|
|
|
1605
1775
|
data.createdAt = OneUptimeDate.getCurrentDate();
|
|
1606
|
-
data.updatedAt = OneUptimeDate.getCurrentDate();
|
|
1607
1776
|
|
|
1608
1777
|
return data;
|
|
1609
1778
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SQL, Statement } from "../Utils/AnalyticsDatabase/Statement";
|
|
2
|
+
import { getQuerySettings } from "../Utils/AnalyticsDatabase/QuerySettingsHelper";
|
|
2
3
|
import ExceptionInstanceService from "./ExceptionInstanceService";
|
|
3
4
|
import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
4
5
|
import { JSONObject } from "../../Types/JSON";
|
|
@@ -52,7 +53,7 @@ export class ExceptionAggregationService {
|
|
|
52
53
|
private static readonly TABLE_NAME: string =
|
|
53
54
|
AnalyticsTableName.ExceptionInstance;
|
|
54
55
|
private static readonly TOP_LEVEL_COLUMNS: Set<string> = new Set([
|
|
55
|
-
"
|
|
56
|
+
"primaryEntityId",
|
|
56
57
|
"exceptionType",
|
|
57
58
|
"environment",
|
|
58
59
|
"fingerprint",
|
|
@@ -63,8 +64,8 @@ export class ExceptionAggregationService {
|
|
|
63
64
|
]);
|
|
64
65
|
/*
|
|
65
66
|
* Virtual facet keys — same scheme as TraceAggregationService /
|
|
66
|
-
* LogAggregationService. The `
|
|
67
|
-
* docker host / k8s cluster ids, disambiguated by the `
|
|
67
|
+
* LogAggregationService. The `primaryEntityId` slot is reused for host /
|
|
68
|
+
* docker host / k8s cluster ids, disambiguated by the `primaryEntityType`
|
|
68
69
|
* discriminator column on each ExceptionInstance row.
|
|
69
70
|
*/
|
|
70
71
|
private static readonly RESOURCE_FACET_KEYS: Map<string, ServiceType> =
|
|
@@ -164,6 +165,14 @@ export class ExceptionAggregationService {
|
|
|
164
165
|
}}
|
|
165
166
|
`;
|
|
166
167
|
|
|
168
|
+
/*
|
|
169
|
+
* Read-side retention filter: rows past their per-service retention
|
|
170
|
+
* stay in their part until the whole part drops (ttl_only_drop_parts).
|
|
171
|
+
* Raw `time` predicates already make these queries ineligible for the
|
|
172
|
+
* proj_exception_group projection, so the extra predicate is free.
|
|
173
|
+
*/
|
|
174
|
+
statement.append(" AND retentionDate >= now()");
|
|
175
|
+
|
|
167
176
|
ExceptionAggregationService.appendCommonFilters(statement, request);
|
|
168
177
|
|
|
169
178
|
statement.append(" GROUP BY bucket, escaped ORDER BY bucket ASC");
|
|
@@ -174,13 +183,21 @@ export class ExceptionAggregationService {
|
|
|
174
183
|
* rather than throwing, which is acceptable for a density viz.
|
|
175
184
|
*/
|
|
176
185
|
statement.append(
|
|
177
|
-
|
|
186
|
+
getQuerySettings({
|
|
187
|
+
maxExecutionTimeInSeconds: 45,
|
|
188
|
+
timeoutOverflowMode: "break",
|
|
189
|
+
}),
|
|
178
190
|
);
|
|
179
191
|
|
|
180
192
|
return statement;
|
|
181
193
|
}
|
|
182
194
|
|
|
183
195
|
private static buildFacetStatement(request: FacetRequest): Statement {
|
|
196
|
+
// Pre-rename alias from stale clients; the V3 column is primaryEntityId.
|
|
197
|
+
if (request.facetKey === "serviceId") {
|
|
198
|
+
request.facetKey = "primaryEntityId";
|
|
199
|
+
}
|
|
200
|
+
|
|
184
201
|
const limit: number =
|
|
185
202
|
request.limit ?? ExceptionAggregationService.DEFAULT_FACET_LIMIT;
|
|
186
203
|
|
|
@@ -197,11 +214,12 @@ export class ExceptionAggregationService {
|
|
|
197
214
|
|
|
198
215
|
if (isResourceFacet) {
|
|
199
216
|
/*
|
|
200
|
-
* Virtual facet — group
|
|
201
|
-
* ServiceType discriminator (Host / DockerHost /
|
|
217
|
+
* Virtual facet — group primaryEntityId values whose row carries the
|
|
218
|
+
* matching ServiceType discriminator (Host / DockerHost /
|
|
219
|
+
* KubernetesCluster).
|
|
202
220
|
*/
|
|
203
221
|
statement.append(
|
|
204
|
-
SQL`SELECT toString(
|
|
222
|
+
SQL`SELECT toString(primaryEntityId) AS val, count() AS cnt FROM ${ExceptionAggregationService.TABLE_NAME}`,
|
|
205
223
|
);
|
|
206
224
|
} else if (isTopLevelColumn) {
|
|
207
225
|
statement.append(
|
|
@@ -209,10 +227,10 @@ export class ExceptionAggregationService {
|
|
|
209
227
|
);
|
|
210
228
|
} else {
|
|
211
229
|
statement.append(
|
|
212
|
-
SQL`SELECT
|
|
230
|
+
SQL`SELECT attributes[${{
|
|
213
231
|
type: TableColumnType.Text,
|
|
214
232
|
value: request.facetKey,
|
|
215
|
-
}}
|
|
233
|
+
}}] AS val, count() AS cnt FROM ${ExceptionAggregationService.TABLE_NAME}`,
|
|
216
234
|
);
|
|
217
235
|
}
|
|
218
236
|
|
|
@@ -231,32 +249,34 @@ export class ExceptionAggregationService {
|
|
|
231
249
|
|
|
232
250
|
if (isResourceFacet) {
|
|
233
251
|
statement.append(
|
|
234
|
-
SQL` AND
|
|
252
|
+
SQL` AND primaryEntityType = ${{
|
|
235
253
|
type: TableColumnType.Text,
|
|
236
254
|
value: resourceServiceType as string,
|
|
237
255
|
}}`,
|
|
238
256
|
);
|
|
239
|
-
} else if (request.facetKey === "
|
|
257
|
+
} else if (request.facetKey === "primaryEntityId") {
|
|
240
258
|
/*
|
|
241
259
|
* Constrain the canonical Services facet to rows that actually
|
|
242
|
-
* belong to a Service. NULL / empty
|
|
243
|
-
* ingested before the discriminator existed.
|
|
260
|
+
* belong to a Service. NULL / empty primaryEntityType covers legacy
|
|
261
|
+
* rows ingested before the discriminator existed.
|
|
244
262
|
*/
|
|
245
263
|
statement.append(
|
|
246
|
-
SQL` AND (
|
|
264
|
+
SQL` AND (primaryEntityType = '' OR primaryEntityType = ${{
|
|
247
265
|
type: TableColumnType.Text,
|
|
248
266
|
value: ServiceType.OpenTelemetry as string,
|
|
249
267
|
}})`,
|
|
250
268
|
);
|
|
251
269
|
} else if (!isTopLevelColumn) {
|
|
252
270
|
statement.append(
|
|
253
|
-
SQL` AND
|
|
271
|
+
SQL` AND mapContains(attributes, ${{
|
|
254
272
|
type: TableColumnType.Text,
|
|
255
273
|
value: request.facetKey,
|
|
256
|
-
}})
|
|
274
|
+
}})`,
|
|
257
275
|
);
|
|
258
276
|
}
|
|
259
277
|
|
|
278
|
+
statement.append(" AND retentionDate >= now()");
|
|
279
|
+
|
|
260
280
|
ExceptionAggregationService.appendCommonFilters(statement, request);
|
|
261
281
|
|
|
262
282
|
statement.append(
|
|
@@ -271,7 +291,10 @@ export class ExceptionAggregationService {
|
|
|
271
291
|
* 60s proxy_read_timeout so a slow facet never starves the endpoint.
|
|
272
292
|
*/
|
|
273
293
|
statement.append(
|
|
274
|
-
|
|
294
|
+
getQuerySettings({
|
|
295
|
+
maxExecutionTimeInSeconds: 45,
|
|
296
|
+
timeoutOverflowMode: "break",
|
|
297
|
+
}),
|
|
275
298
|
);
|
|
276
299
|
|
|
277
300
|
return statement;
|
|
@@ -283,7 +306,7 @@ export class ExceptionAggregationService {
|
|
|
283
306
|
): void {
|
|
284
307
|
if (request.serviceIds && request.serviceIds.length > 0) {
|
|
285
308
|
statement.append(
|
|
286
|
-
SQL` AND
|
|
309
|
+
SQL` AND primaryEntityId IN (${{
|
|
287
310
|
type: TableColumnType.ObjectID,
|
|
288
311
|
value: new Includes(
|
|
289
312
|
request.serviceIds.map((id: ObjectID) => {
|
|
@@ -11,6 +11,7 @@ import OneUptimeDate from "../../Types/Date";
|
|
|
11
11
|
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
12
12
|
import GlobalCache from "../Infrastructure/GlobalCache";
|
|
13
13
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
14
|
+
import { canonicalizeEntityValue } from "../../Utils/Telemetry/EntityKey";
|
|
14
15
|
import crypto from "crypto";
|
|
15
16
|
|
|
16
17
|
const LAST_SEEN_CACHE_NAMESPACE: string = "host-last-seen";
|
|
@@ -71,7 +72,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
71
72
|
* host.name (OtelIngestBaseService.normalizeHostNameAttributesInPlace);
|
|
72
73
|
* we repeat it here so the method is correct for any caller.
|
|
73
74
|
*/
|
|
74
|
-
const hostIdentifier: string = data.hostIdentifier
|
|
75
|
+
const hostIdentifier: string = canonicalizeEntityValue(data.hostIdentifier);
|
|
75
76
|
|
|
76
77
|
/*
|
|
77
78
|
* Look up case-insensitively. The unique guard on name/hostIdentifier
|