@oneuptime/common 12.0.33 → 12.0.34
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/RumSession.ts +117 -1
- package/Models/AnalyticsModels/RumSessionChunk.ts +13 -0
- package/Models/DatabaseModels/AlertCustomField.ts +77 -3
- package/Models/DatabaseModels/ApiKeyPermission.ts +3 -27
- package/Models/DatabaseModels/IncidentCustomField.ts +77 -3
- package/Models/DatabaseModels/InventoryItemCustomField.ts +77 -3
- package/Models/DatabaseModels/MonitorCustomField.ts +77 -3
- package/Models/DatabaseModels/OnCallDutyPolicyCustomField.ts +77 -3
- package/Models/DatabaseModels/RumApplication.ts +6 -6
- package/Models/DatabaseModels/ScheduledMaintenanceCustomField.ts +77 -3
- package/Models/DatabaseModels/StatusPageCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamMember.ts +0 -9
- package/Models/DatabaseModels/TeamMemberCustomField.ts +77 -3
- package/Models/DatabaseModels/TeamPermission.ts +3 -24
- package/Models/DatabaseModels/TelemetryIngestionKey.ts +260 -0
- package/Models/DatabaseModels/UserTelegram.ts +0 -4
- package/Scripts/benchmark-fanin-capacity.js +181 -0
- package/Server/API/TelemetryAPI.ts +1284 -164
- package/Server/API/UserNotificationSettingAPI.ts +55 -0
- package/Server/API/UserTelegramAPI.ts +48 -4
- package/Server/EnvironmentConfig.ts +35 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.ts +91 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.ts +139 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.ts +121 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Infrastructure/QueueWorker.ts +20 -14
- package/Server/Infrastructure/Semaphore.ts +2 -0
- package/Server/Middleware/TelemetryIngest.ts +453 -7
- package/Server/Services/AccessTokenService.ts +1 -0
- package/Server/Services/AlertCustomFieldService.ts +98 -0
- package/Server/Services/AlertService.ts +37 -0
- package/Server/Services/ApiKeyPermissionService.ts +461 -29
- package/Server/Services/CustomFieldMappingService.ts +879 -0
- package/Server/Services/GlobalConfigService.ts +194 -0
- package/Server/Services/IncidentCustomFieldService.ts +98 -0
- package/Server/Services/IncidentService.ts +35 -0
- package/Server/Services/MetricService.ts +194 -0
- package/Server/Services/MonitorService.ts +32 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +78 -25
- package/Server/Services/ProjectService.ts +22 -0
- package/Server/Services/RoutineEmailSettingsService.ts +73 -0
- package/Server/Services/RumSessionReplayViewService.ts +104 -24
- package/Server/Services/ScheduledMaintenanceCustomFieldService.ts +98 -0
- package/Server/Services/ScheduledMaintenanceService.ts +32 -0
- package/Server/Services/TeamMemberService.ts +78 -0
- package/Server/Services/TeamPermissionService.ts +235 -3
- package/Server/Services/TelemetryIngestionKeyService.ts +722 -19
- package/Server/Services/UserNotificationSettingService.ts +34 -6
- package/Server/Services/UserTelegramService.ts +326 -5
- package/Server/Types/Database/QueryHelper.ts +2 -0
- package/Server/Utils/APIKey/AccessPermission.ts +5 -2
- package/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.ts +54 -0
- package/Server/Utils/CustomField/CustomFieldMappingRegistry.ts +415 -0
- package/Server/Utils/CustomField/CustomFieldMappingValidator.ts +335 -0
- package/Server/Utils/DataSource/EgressGuard.ts +177 -8
- package/Server/Utils/EmailRollup/EmailRollupConstants.ts +38 -5
- package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +57 -4
- package/Server/Utils/FrontendEnvironment.ts +40 -0
- package/Server/Utils/LogRedaction.ts +20 -0
- package/Server/Utils/Logger.ts +11 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +338 -77
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +30 -4
- package/Server/Utils/Monitor/MonitorAlert.ts +29 -6
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +110 -15
- package/Server/Utils/Monitor/MonitorIncident.ts +22 -6
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +29 -0
- package/Server/Utils/Monitor/SeriesContextEnricher.ts +304 -0
- package/Server/Utils/SSRFProtection.ts +217 -10
- package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +239 -138
- package/Server/Utils/SessionReplay/SessionReplayHealthCounters.ts +305 -0
- package/Server/Utils/SessionReplay/SessionReplayReadService.ts +1430 -289
- package/Server/Utils/StartServer.ts +2 -17
- package/Server/Utils/TelegramVerificationToken.ts +185 -0
- package/Server/Utils/Telemetry/PinServiceName.ts +197 -0
- package/Server/Utils/Telemetry/TelemetryFanInWriter.ts +38 -16
- package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +92 -0
- package/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.ts +217 -0
- package/Server/Utils/VM/VMAPI.ts +1 -0
- package/Server/Utils/VM/VMRunner.ts +975 -95
- package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +202 -0
- package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +404 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +468 -0
- package/Tests/App/Dashboard/NotificationEmailPreferences.test.tsx +399 -0
- package/Tests/App/StatusPage/StatusPageLastUpdated.test.tsx +263 -0
- package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +753 -0
- package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +224 -0
- package/Tests/Models/AnalyticsModels/RumSessionReplayColumns.test.ts +262 -0
- package/Tests/Models/CustomFieldMappingColumns.test.ts +166 -0
- package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +20 -6
- package/Tests/ResponsiveVisibility.test.ts +115 -0
- package/Tests/ResponsiveVisibility.ts +183 -0
- package/Tests/Server/API/SessionReplayAPI.test.ts +1940 -216
- package/Tests/Server/API/UserNotificationSettingAPI.test.ts +186 -0
- package/Tests/Server/API/UserTelegramAPISecurity.test.ts +231 -0
- package/Tests/Server/EnvironmentConfigFrontendSecurity.test.ts +234 -0
- package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +202 -0
- package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +41 -0
- package/Tests/Server/Infrastructure/Postgres/SessionReplayRecordEverySessionByDefaultMigration.test.ts +169 -0
- package/Tests/Server/Infrastructure/QueueWorkerTimeout.test.ts +210 -0
- package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +130 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -1
- package/Tests/Server/Middleware/TelemetryIngestBrowserKey.test.ts +1163 -0
- package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +5 -3
- package/Tests/Server/Services/AddTelemetryIngestionKeyTypeMigration.test.ts +555 -0
- package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +678 -0
- package/Tests/Server/Services/ApiKeyPermissionService.test.ts +276 -28
- package/Tests/Server/Services/CustomFieldDropdownOptionsColumnWidth.test.ts +431 -0
- package/Tests/Server/Services/CustomFieldMappingService.test.ts +850 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +32 -0
- package/Tests/Server/Services/GlobalConfigService.test.ts +414 -1
- package/Tests/Server/Services/MetricRawEntityKeyPrune.test.ts +592 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +226 -1
- package/Tests/Server/Services/RoutineEmailSettingsPostgres.test.ts +329 -0
- package/Tests/Server/Services/RumSessionReplayViewService.test.ts +267 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +9 -0
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +9 -0
- package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +834 -0
- package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +814 -0
- package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +998 -0
- package/Tests/Server/Services/UserNotificationSettingRollupRouting.test.ts +141 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +18 -10
- package/Tests/Server/Services/UserTelegramVerificationSecurity.test.ts +688 -0
- package/Tests/Server/Utils/AI/SRE/Insights/FixRouting.test.ts +497 -0
- package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +383 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +7 -3
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterConfig.test.ts +315 -0
- package/Tests/Server/Utils/CustomField/CustomFieldMappingValidator.test.ts +437 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +300 -11
- package/Tests/Server/Utils/EmailRollup/EmailRollupBurstWindow.test.ts +83 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1 -1
- package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerPreferences.test.ts +362 -0
- package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +77 -1
- package/Tests/Server/Utils/FrontendEnvironment.test.ts +190 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +26 -0
- package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +23 -9
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +584 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestHeaderCriteria.test.ts +236 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +437 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplateUtilSeriesContext.test.ts +176 -0
- package/Tests/Server/Utils/Monitor/SeriesContextEnricher.test.ts +356 -0
- package/Tests/Server/Utils/SSRFProtectionCloudServiceAddresses.test.ts +595 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +198 -1
- package/Tests/Server/Utils/SessionReplay/SessionReplayHealthCounters.test.ts +453 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayReadServiceQueries.test.ts +1378 -0
- package/Tests/Server/Utils/SessionReplayOriginAllowListRefactor.test.ts +420 -0
- package/Tests/Server/Utils/TelegramVerificationToken.test.ts +253 -0
- package/Tests/Server/Utils/Telemetry/PinServiceName.test.ts +666 -0
- package/Tests/Server/Utils/Telemetry/TelemetryFanInWriterCapacity.test.ts +458 -0
- package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.test.ts +424 -0
- package/Tests/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.test.ts +528 -0
- package/Tests/Server/Utils/TelemetryExporterEnvironment.test.ts +56 -0
- package/Tests/Server/Utils/VM/VMRunnerHostBridgeLatency.test.ts +74 -0
- package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +100 -7
- package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +1176 -6
- package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +220 -0
- package/Tests/Types/CustomField/CustomFieldValueMapping.test.ts +348 -0
- package/Tests/Types/JSONFunctions.test.ts +260 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +422 -53
- package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +495 -15
- package/Tests/Types/Monitor/DockerSwarmAlertTemplates.test.ts +191 -45
- package/Tests/Types/Monitor/HostAlertTemplates.test.ts +370 -42
- package/Tests/Types/Monitor/IotAlertTemplates.test.ts +375 -20
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +636 -42
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +189 -0
- package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +95 -14
- package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +190 -21
- package/Tests/Types/Monitor/ProxmoxAlertTemplates.test.ts +352 -22
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +363 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +93 -18
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +259 -0
- package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +476 -0
- package/Tests/Types/Monitor/RumAlertTemplates.test.ts +136 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +661 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +507 -0
- package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +270 -0
- package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +38 -10
- package/Tests/Types/Monitor/Utils/RecommendationCriteriaAssertions.ts +102 -0
- package/Tests/Types/NotificationSetting/RoutineEmailEvents.test.ts +47 -0
- package/Tests/Types/Rum/SessionReplayApiContracts.test.ts +608 -0
- package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +434 -0
- package/Tests/Types/WebsiteRequest.test.ts +285 -3
- package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +16 -3
- package/Tests/UI/Components/Charts/ChartTrailingBucketGap.test.ts +691 -0
- package/Tests/UI/Components/ComponentsModal.test.tsx +12 -4
- package/Tests/UI/Components/ComponentsModalUsability.test.tsx +518 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetailMapping.test.tsx +324 -0
- package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +176 -0
- package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +484 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +157 -0
- package/Tests/UI/Components/IconDropdownItem.test.tsx +102 -0
- package/Tests/UI/Components/JSONTablePrototypePollution.test.tsx +117 -0
- package/Tests/UI/Components/KeyboardShortcutsModal.test.tsx +214 -0
- package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +561 -0
- package/Tests/UI/Components/MonitorGraphs/UptimeBarDayModal.test.tsx +302 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +28 -12
- package/Tests/UI/Components/ShortcutDialogGuard.test.tsx +74 -0
- package/Tests/UI/Components/StatusPage/ResourceGroupSectionAutoExpand.test.tsx +248 -0
- package/Tests/UI/Components/TableCellWrapping.test.tsx +625 -0
- package/Tests/UI/Components/TableLoadingStates.test.tsx +205 -0
- package/Tests/UI/Components/Workflow/NodePlacement.test.ts +148 -0
- package/Tests/UI/Components/Workflow/Workflow.test.tsx +981 -0
- package/Tests/UI/ConfigBrowserTelemetry.test.ts +70 -0
- package/Tests/UI/Rum/ChunkLoader.test.ts +1036 -2
- package/Tests/UI/Rum/FidelityNotices.test.ts +187 -0
- package/Tests/UI/Rum/InactivityMap.test.ts +341 -0
- package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +259 -0
- package/Tests/UI/Rum/RecordingHealthCard.test.tsx +855 -0
- package/Tests/UI/Rum/RecordingHealthStrip.test.tsx +594 -0
- package/Tests/UI/Rum/ReplayCard.test.tsx +451 -0
- package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +536 -0
- package/Tests/UI/Rum/ReplayEngine.test.ts +2503 -0
- package/Tests/UI/Rum/ReplayEngineTypes.test.ts +171 -0
- package/Tests/UI/Rum/ReplayHeader.test.tsx +711 -0
- package/Tests/UI/Rum/ReplayLink.test.tsx +119 -0
- package/Tests/UI/Rum/ReplayPinControl.test.tsx +408 -0
- package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +152 -0
- package/Tests/UI/Rum/ReplayRail.test.tsx +1296 -0
- package/Tests/UI/Rum/ReplayRailDetail.test.tsx +900 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +763 -147
- package/Tests/UI/Rum/ReplaySignalTypes.test.ts +189 -0
- package/Tests/UI/Rum/ReplaySignals.test.ts +1579 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +396 -473
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +918 -0
- package/Tests/UI/Rum/ReplayTimeline.test.tsx +696 -0
- package/Tests/UI/Rum/SessionReplayEmptyState.test.tsx +499 -0
- package/Tests/UI/Rum/SessionReplaySearchBar.test.tsx +346 -0
- package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +545 -0
- package/Tests/UI/Rum/SessionReplayTable.test.tsx +991 -0
- package/Tests/UI/Rum/TargetedCapturePanel.test.tsx +254 -0
- package/Tests/UI/Telemetry/BrowserExporterIsolation.test.ts +71 -0
- package/Tests/UI/Utils/GlobalKeyboardShortcut.test.ts +344 -0
- package/Tests/Utils/API.test.ts +308 -0
- package/Tests/Utils/HTTPResponseBodyReader.test.ts +323 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryScanStatus.test.ts +117 -0
- package/Tests/Utils/Rum/ChunkMath.test.ts +83 -0
- package/Tests/Utils/Rum/SessionReplayHealthDiagnosis.test.ts +993 -0
- package/Tests/Utils/Rum/SessionReplayStringMap.test.ts +245 -0
- package/Tests/Utils/StatusPage/ResourceSearch.test.ts +631 -0
- package/Tests/Utils/Telemetry/OriginAllowList.test.ts +633 -0
- package/Tests/Utils/Uptime/DayUptimeGraphUtil.test.ts +461 -0
- package/Tests/Utils/ValueFormatter.test.ts +148 -0
- package/Types/CustomField/CustomFieldMappingCatalog.ts +161 -0
- package/Types/CustomField/CustomFieldMappingSourceResource.ts +19 -0
- package/Types/CustomField/CustomFieldValueMapping.ts +288 -0
- package/Types/Icon/IconProp.ts +1 -0
- package/Types/JSONFunctions.ts +189 -43
- package/Types/Monitor/CephAlertTemplates.ts +157 -195
- package/Types/Monitor/DockerAlertTemplates.ts +338 -128
- package/Types/Monitor/DockerSwarmAlertTemplates.ts +95 -112
- package/Types/Monitor/HostAlertTemplates.ts +302 -130
- package/Types/Monitor/IotAlertTemplates.ts +112 -104
- package/Types/Monitor/KubernetesAlertTemplates.ts +415 -224
- package/Types/Monitor/KubernetesMetricCatalog.ts +23 -19
- package/Types/Monitor/PodmanAlertTemplates.ts +116 -163
- package/Types/Monitor/ProxmoxAlertTemplates.ts +217 -99
- package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +98 -6
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +44 -7
- package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +383 -0
- package/Types/Monitor/RumAlertTemplates.ts +46 -7
- package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +596 -0
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +554 -0
- package/Types/Monitor/ServiceAlertTemplates.ts +98 -11
- package/Types/Monitor/UptimeHistoryLabels.ts +56 -0
- package/Types/NotificationSetting/RoutineEmailEvents.ts +30 -0
- package/Types/Rum/SessionReplay.ts +209 -0
- package/Types/Rum/SessionReplayApi.ts +722 -0
- package/Types/Rum/SessionReplayCaptureTrigger.ts +21 -12
- package/Types/Rum/SessionReplayConsentMode.ts +11 -7
- package/Types/Rum/SessionReplayCustomEvents.ts +549 -0
- package/Types/Rum/SessionReplayHealth.ts +238 -0
- package/Types/Telemetry/TelemetryIngestSurface.ts +95 -0
- package/Types/Telemetry/TelemetryIngestionKeyPolicy.ts +75 -0
- package/Types/Telemetry/TelemetryIngestionKeyType.ts +29 -0
- package/Types/WebsiteRequest.ts +85 -3
- package/UI/Components/Charts/Area/AreaChart.tsx +13 -2
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -2
- package/UI/Components/Charts/Line/LineChart.tsx +13 -2
- package/UI/Components/Charts/Types/XAxis/XAxis.ts +29 -0
- package/UI/Components/Charts/Utils/DataPoint.ts +22 -3
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +76 -9
- package/UI/Components/Charts/Utils/XAxis.ts +217 -0
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +143 -25
- package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +216 -0
- package/UI/Components/Graphs/DayUptimeGraph.tsx +173 -8
- package/UI/Components/Graphs/UptimeBarTooltip.tsx +22 -278
- package/UI/Components/Graphs/UptimeDaySummary.tsx +327 -0
- package/UI/Components/Header/Header.tsx +25 -9
- package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +10 -1
- package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +6 -1
- package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -1
- package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +6 -1
- package/UI/Components/Icon/Icon.tsx +11 -0
- package/UI/Components/JSONTable/JSONTable.tsx +2 -2
- package/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.tsx +125 -0
- package/UI/Components/KeyboardShortcut/Screenshots/README.md +19 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-command-palette.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog-dark.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-dialog.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-help-menu.png +0 -0
- package/UI/Components/KeyboardShortcut/Screenshots/keyboard-shortcuts-narrow.png +0 -0
- package/UI/Components/ModelTable/Column.ts +15 -0
- package/UI/Components/Monitor/SeriesDebugCommandsViewer.tsx +64 -0
- package/UI/Components/Monitor/SeriesLabelsViewer.tsx +93 -0
- package/UI/Components/MonitorGraphs/Uptime.tsx +14 -2
- package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +63 -10
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +44 -0
- package/UI/Components/StatusPage/ResourceGroupSection.tsx +40 -0
- package/UI/Components/Table/CellClassName.ts +81 -0
- package/UI/Components/Table/TableRow.tsx +20 -14
- package/UI/Components/Table/TableSkeletonRows.tsx +9 -9
- package/UI/Components/Table/Types/Column.ts +36 -0
- package/UI/Components/Tooltip/Tooltip.tsx +11 -1
- package/UI/Components/Workflow/ComponentsModal.tsx +60 -39
- package/UI/Components/Workflow/NodePlacement.ts +57 -0
- package/UI/Components/Workflow/Workflow.tsx +47 -18
- package/UI/Config.ts +15 -33
- package/UI/Utils/GlobalKeyboardShortcut.ts +208 -0
- package/UI/Utils/Telemetry/BrowserTelemetryConfig.ts +28 -0
- package/UI/Utils/Telemetry/Telemetry.ts +10 -8
- package/Utils/API.ts +129 -3
- package/Utils/HTTPResponseBodyReader.ts +221 -0
- package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +77 -0
- package/Utils/Rum/ChunkMath.ts +106 -0
- package/Utils/Rum/SessionReplayHealth.ts +732 -0
- package/Utils/Rum/SessionReplayStringMap.ts +226 -0
- package/Utils/Schema/ModelSchema.ts +1 -0
- package/Utils/StatusPage/ResourceSearch.ts +290 -0
- package/Utils/Telemetry/OriginAllowList.ts +355 -0
- package/Utils/Uptime/DayUptimeGraphUtil.ts +205 -0
- package/Utils/ValueFormatter.ts +35 -1
- package/build/dist/Models/AnalyticsModels/RumSession.js +102 -19
- package/build/dist/Models/AnalyticsModels/RumSession.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js +11 -9
- package/build/dist/Models/AnalyticsModels/RumSessionChunk.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ApiKeyPermission.js +3 -27
- package/build/dist/Models/DatabaseModels/ApiKeyPermission.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/MonitorCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +6 -6
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/StatusPageCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/TeamCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMember.js +0 -9
- package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js +79 -3
- package/build/dist/Models/DatabaseModels/TeamMemberCustomField.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamPermission.js +3 -24
- package/build/dist/Models/DatabaseModels/TeamPermission.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js +267 -0
- package/build/dist/Models/DatabaseModels/TelemetryIngestionKey.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTelegram.js +0 -4
- package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +769 -109
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserNotificationSettingAPI.js +35 -0
- package/build/dist/Server/API/UserNotificationSettingAPI.js.map +1 -0
- package/build/dist/Server/API/UserTelegramAPI.js +28 -6
- package/build/dist/Server/API/UserTelegramAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +29 -2
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791300000000-AddTelemetryIngestionKeyType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js +53 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791400000000-SessionReplayRecordEverySessionByDefault.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791500000000-WidenCustomFieldDropdownOptions.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js +46 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791600000000-AddCustomFieldValueMapping.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +19 -7
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Infrastructure/Semaphore.js +1 -0
- package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +315 -8
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AccessTokenService.js +1 -0
- package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
- package/build/dist/Server/Services/AlertCustomFieldService.js +93 -0
- package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +34 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js +331 -28
- package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
- package/build/dist/Server/Services/CustomFieldMappingService.js +614 -0
- package/build/dist/Server/Services/CustomFieldMappingService.js.map +1 -0
- package/build/dist/Server/Services/GlobalConfigService.js +133 -0
- package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
- package/build/dist/Server/Services/IncidentCustomFieldService.js +93 -0
- package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +32 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +163 -0
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +29 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +79 -27
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +22 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RoutineEmailSettingsService.js +69 -0
- package/build/dist/Server/Services/RoutineEmailSettingsService.js.map +1 -0
- package/build/dist/Server/Services/RumSessionReplayViewService.js +86 -24
- package/build/dist/Server/Services/RumSessionReplayViewService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js +93 -0
- package/build/dist/Server/Services/ScheduledMaintenanceCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +29 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +62 -2
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamPermissionService.js +166 -3
- package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +562 -18
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +26 -6
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserTelegramService.js +257 -4
- package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/APIKey/AccessPermission.js +2 -2
- package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
- package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js +27 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldDefinitionMappingHooks.js.map +1 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js +226 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingRegistry.js.map +1 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js +189 -0
- package/build/dist/Server/Utils/CustomField/CustomFieldMappingValidator.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +121 -7
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js +38 -5
- package/build/dist/Server/Utils/EmailRollup/EmailRollupConstants.js.map +1 -1
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +44 -2
- package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
- package/build/dist/Server/Utils/FrontendEnvironment.js +33 -0
- package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -0
- package/build/dist/Server/Utils/LogRedaction.js +20 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +10 -0
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +287 -68
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +20 -4
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +29 -6
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +88 -13
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +22 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js +237 -0
- package/build/dist/Server/Utils/Monitor/SeriesContextEnricher.js.map +1 -0
- package/build/dist/Server/Utils/SSRFProtection.js +136 -9
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +174 -89
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js +223 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayHealthCounters.js.map +1 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js +945 -164
- package/build/dist/Server/Utils/SessionReplay/SessionReplayReadService.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +3 -14
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/TelegramVerificationToken.js +129 -0
- package/build/dist/Server/Utils/TelegramVerificationToken.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/PinServiceName.js +163 -0
- package/build/dist/Server/Utils/Telemetry/PinServiceName.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js +28 -15
- package/build/dist/Server/Utils/Telemetry/TelemetryFanInWriter.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +64 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js +171 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyRateLimiter.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +780 -69
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +60 -0
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js +20 -0
- package/build/dist/Types/CustomField/CustomFieldMappingSourceResource.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldValueMapping.js +141 -0
- package/build/dist/Types/CustomField/CustomFieldValueMapping.js.map +1 -0
- package/build/dist/Types/Icon/IconProp.js +1 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/JSONFunctions.js +118 -37
- package/build/dist/Types/JSONFunctions.js.map +1 -1
- package/build/dist/Types/Monitor/CephAlertTemplates.js +130 -171
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DockerAlertTemplates.js +286 -121
- package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js +84 -105
- package/build/dist/Types/Monitor/DockerSwarmAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/HostAlertTemplates.js +250 -122
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/IotAlertTemplates.js +81 -81
- package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +375 -215
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +19 -19
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +104 -153
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +156 -91
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +67 -6
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +38 -7
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +261 -0
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -0
- package/build/dist/Types/Monitor/RumAlertTemplates.js +46 -7
- package/build/dist/Types/Monitor/RumAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +422 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +441 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -0
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js +79 -15
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/UptimeHistoryLabels.js +17 -0
- package/build/dist/Types/Monitor/UptimeHistoryLabels.js.map +1 -0
- package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js +29 -0
- package/build/dist/Types/NotificationSetting/RoutineEmailEvents.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplay.js +117 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayApi.js +181 -0
- package/build/dist/Types/Rum/SessionReplayApi.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js +21 -12
- package/build/dist/Types/Rum/SessionReplayCaptureTrigger.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayConsentMode.js +11 -7
- package/build/dist/Types/Rum/SessionReplayConsentMode.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplayCustomEvents.js +172 -0
- package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplayHealth.js +37 -0
- package/build/dist/Types/Rum/SessionReplayHealth.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js +85 -0
- package/build/dist/Types/Telemetry/TelemetryIngestSurface.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js +15 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyPolicy.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js +30 -0
- package/build/dist/Types/Telemetry/TelemetryIngestionKeyType.js.map +1 -0
- package/build/dist/Types/WebsiteRequest.js +55 -3
- package/build/dist/Types/WebsiteRequest.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +13 -2
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +6 -2
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +13 -2
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js +15 -3
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +40 -9
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +186 -0
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +80 -6
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +118 -0
- package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -0
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +112 -7
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +5 -162
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
- package/build/dist/UI/Components/Graphs/UptimeDaySummary.js +181 -0
- package/build/dist/UI/Components/Graphs/UptimeDaySummary.js.map +1 -0
- package/build/dist/UI/Components/Header/Header.js +2 -3
- package/build/dist/UI/Components/Header/Header.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +2 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +7 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +7 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +7 -1
- package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +5 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/JSONTable/JSONTable.js +2 -2
- package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js +35 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcutsModal.js.map +1 -0
- package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js +34 -0
- package/build/dist/UI/Components/Monitor/SeriesDebugCommandsViewer.js.map +1 -0
- package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +49 -0
- package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -0
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +32 -6
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +38 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +22 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -1
- package/build/dist/UI/Components/Table/CellClassName.js +55 -0
- package/build/dist/UI/Components/Table/CellClassName.js.map +1 -0
- package/build/dist/UI/Components/Table/TableRow.js +16 -13
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/Table/TableSkeletonRows.js +9 -8
- package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +25 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +47 -30
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/NodePlacement.js +37 -0
- package/build/dist/UI/Components/Workflow/NodePlacement.js.map +1 -0
- package/build/dist/UI/Components/Workflow/Workflow.js +35 -18
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Config.js +10 -20
- package/build/dist/UI/Config.js.map +1 -1
- package/build/dist/UI/Utils/GlobalKeyboardShortcut.js +138 -0
- package/build/dist/UI/Utils/GlobalKeyboardShortcut.js.map +1 -0
- package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js +14 -0
- package/build/dist/UI/Utils/Telemetry/BrowserTelemetryConfig.js.map +1 -0
- package/build/dist/UI/Utils/Telemetry/Telemetry.js +7 -5
- package/build/dist/UI/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Utils/API.js +67 -5
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/HTTPResponseBodyReader.js +157 -0
- package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +69 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -0
- package/build/dist/Utils/Rum/ChunkMath.js +76 -0
- package/build/dist/Utils/Rum/ChunkMath.js.map +1 -1
- package/build/dist/Utils/Rum/SessionReplayHealth.js +534 -0
- package/build/dist/Utils/Rum/SessionReplayHealth.js.map +1 -0
- package/build/dist/Utils/Rum/SessionReplayStringMap.js +165 -0
- package/build/dist/Utils/Rum/SessionReplayStringMap.js.map +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js +1 -0
- package/build/dist/Utils/Schema/ModelSchema.js.map +1 -1
- package/build/dist/Utils/StatusPage/ResourceSearch.js +200 -0
- package/build/dist/Utils/StatusPage/ResourceSearch.js.map +1 -0
- package/build/dist/Utils/Telemetry/OriginAllowList.js +299 -0
- package/build/dist/Utils/Telemetry/OriginAllowList.js.map +1 -0
- package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js +147 -0
- package/build/dist/Utils/Uptime/DayUptimeGraphUtil.js.map +1 -0
- package/build/dist/Utils/ValueFormatter.js +32 -1
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import ObjectID from "../ObjectID";
|
|
2
2
|
import MonitorStep from "./MonitorStep";
|
|
3
3
|
import MonitorCriteria from "./MonitorCriteria";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { CheckOn, FilterType, EvaluateOverTimeType } from "./CriteriaFilter";
|
|
4
|
+
import { buildHealthyCriteriaInstance, buildUnhealthyCriteriaInstance, } from "./Recommendation/RecommendationCriteriaBuilder";
|
|
5
|
+
import { FilterType } from "./CriteriaFilter";
|
|
7
6
|
import RollingTime from "../RollingTime/RollingTime";
|
|
8
7
|
import MetricsAggregationType from "../Metrics/MetricsAggregationType";
|
|
9
8
|
/*
|
|
@@ -61,79 +60,10 @@ export function buildHostMonitorStep(args) {
|
|
|
61
60
|
return monitorStep;
|
|
62
61
|
}
|
|
63
62
|
export function buildHostOfflineCriteriaInstance(args) {
|
|
64
|
-
|
|
65
|
-
const incidentTitle = args.incidentTitle || `${args.monitorName} - Alert Triggered`;
|
|
66
|
-
const incidentDescription = args.incidentDescription ||
|
|
67
|
-
`${args.monitorName} has triggered an alert condition. See root cause for detailed host information.`;
|
|
68
|
-
instance.data = {
|
|
69
|
-
id: ObjectID.generate().toString(),
|
|
70
|
-
monitorStatusId: args.offlineMonitorStatusId,
|
|
71
|
-
filterCondition: FilterCondition.Any,
|
|
72
|
-
filters: [
|
|
73
|
-
{
|
|
74
|
-
checkOn: CheckOn.MetricValue,
|
|
75
|
-
filterType: args.filterType,
|
|
76
|
-
metricMonitorOptions: {
|
|
77
|
-
metricAggregationType: EvaluateOverTimeType.AnyValue,
|
|
78
|
-
metricAlias: args.metricAlias,
|
|
79
|
-
},
|
|
80
|
-
value: args.value,
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
incidents: [
|
|
84
|
-
{
|
|
85
|
-
title: incidentTitle,
|
|
86
|
-
description: incidentDescription,
|
|
87
|
-
incidentSeverityId: args.incidentSeverityId,
|
|
88
|
-
autoResolveIncident: true,
|
|
89
|
-
id: ObjectID.generate().toString(),
|
|
90
|
-
onCallPolicyIds: [],
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
alerts: [
|
|
94
|
-
{
|
|
95
|
-
title: incidentTitle,
|
|
96
|
-
description: incidentDescription,
|
|
97
|
-
alertSeverityId: args.alertSeverityId,
|
|
98
|
-
autoResolveAlert: true,
|
|
99
|
-
id: ObjectID.generate().toString(),
|
|
100
|
-
onCallPolicyIds: [],
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
changeMonitorStatus: true,
|
|
104
|
-
createIncidents: true,
|
|
105
|
-
createAlerts: true,
|
|
106
|
-
name: args.criteriaName || `${args.monitorName} - Unhealthy`,
|
|
107
|
-
description: args.criteriaDescription || `Criteria for detecting unhealthy state.`,
|
|
108
|
-
};
|
|
109
|
-
return instance;
|
|
63
|
+
return buildUnhealthyCriteriaInstance(Object.assign(Object.assign({}, args), { resourceNoun: "host" }));
|
|
110
64
|
}
|
|
111
65
|
export function buildHostOnlineCriteriaInstance(args) {
|
|
112
|
-
|
|
113
|
-
instance.data = {
|
|
114
|
-
id: ObjectID.generate().toString(),
|
|
115
|
-
monitorStatusId: args.onlineMonitorStatusId,
|
|
116
|
-
filterCondition: FilterCondition.Any,
|
|
117
|
-
filters: [
|
|
118
|
-
{
|
|
119
|
-
checkOn: CheckOn.MetricValue,
|
|
120
|
-
filterType: args.filterType,
|
|
121
|
-
metricMonitorOptions: {
|
|
122
|
-
metricAggregationType: EvaluateOverTimeType.AnyValue,
|
|
123
|
-
metricAlias: args.metricAlias,
|
|
124
|
-
},
|
|
125
|
-
value: args.value,
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
incidents: [],
|
|
129
|
-
alerts: [],
|
|
130
|
-
changeMonitorStatus: true,
|
|
131
|
-
createIncidents: false,
|
|
132
|
-
createAlerts: false,
|
|
133
|
-
name: "Healthy",
|
|
134
|
-
description: "Criteria for healthy state.",
|
|
135
|
-
};
|
|
136
|
-
return instance;
|
|
66
|
+
return buildHealthyCriteriaInstance(args);
|
|
137
67
|
}
|
|
138
68
|
export function buildHostMonitorConfig(args) {
|
|
139
69
|
return {
|
|
@@ -153,8 +83,9 @@ export function buildHostMonitorConfig(args) {
|
|
|
153
83
|
attributes: args.attributes || {},
|
|
154
84
|
aggegationType: args.aggregationType,
|
|
155
85
|
aggregateBy: {},
|
|
156
|
-
} }, (args.
|
|
157
|
-
|
|
86
|
+
} }, (args.groupByAttributeKeys &&
|
|
87
|
+
args.groupByAttributeKeys.length > 0
|
|
88
|
+
? { groupByAttributeKeys: args.groupByAttributeKeys }
|
|
158
89
|
: {})),
|
|
159
90
|
},
|
|
160
91
|
],
|
|
@@ -163,22 +94,143 @@ export function buildHostMonitorConfig(args) {
|
|
|
163
94
|
rollingTime: args.rollingTime,
|
|
164
95
|
};
|
|
165
96
|
}
|
|
97
|
+
/*
|
|
98
|
+
* The identity an incident title should carry, as a suffix.
|
|
99
|
+
*
|
|
100
|
+
* NOT `monitorName`: the recommendation flow builds that as
|
|
101
|
+
* `${resourceDisplayName} - ${template.name}`
|
|
102
|
+
* (MonitorRecommendationUtil.getMonitorName) and feeds the whole string
|
|
103
|
+
* back in here, so interpolating it produced titles that said the
|
|
104
|
+
* template name twice — "[Host] High CPU Utilization (>80%) - web-01 -
|
|
105
|
+
* High CPU Utilization". `hostIdentifier` is the agent-reported
|
|
106
|
+
* `host.name` the metrics are actually tagged with, which is the one
|
|
107
|
+
* identifier the reader needs, and it says it once.
|
|
108
|
+
*/
|
|
109
|
+
export function hostTitleSuffix(args) {
|
|
110
|
+
const host = (args.hostIdentifier || "").trim();
|
|
111
|
+
return host ? ` - ${host}` : "";
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A host metric that has to be DERIVED — from more than one series, or
|
|
115
|
+
* from a raw ratio that has to be rescaled before anyone can read it.
|
|
116
|
+
*
|
|
117
|
+
* `system.cpu.utilization` is the case this exists for: the hostmetrics
|
|
118
|
+
* cpu scraper partitions it by (cpu, state), and every cpu's states sum
|
|
119
|
+
* to 1. Averaging the raw metric therefore lands at 1/(state count) —
|
|
120
|
+
* ~0.125 on Linux — no matter how busy the host is, so a "> 0.8"
|
|
121
|
+
* criteria is structurally unreachable. Pulling `state=user` and
|
|
122
|
+
* `state=system` as separate queries and summing them yields the
|
|
123
|
+
* "fraction of CPU time spent doing work" that `top` reports, and is the
|
|
124
|
+
* same derivation the host Overview page charts (see
|
|
125
|
+
* App/FeatureSet/Dashboard/src/Pages/Host/View/Overview.tsx).
|
|
126
|
+
* `system.memory.utilization` is partitioned the same way, by `state`.
|
|
127
|
+
*
|
|
128
|
+
* UNITS: `legendUnit` is applied to the FORMULA alias only, never to the
|
|
129
|
+
* operand queries. MetricResultUnitConverter converts query results from
|
|
130
|
+
* their native OTel unit into the query alias's `legendUnit`, and
|
|
131
|
+
* MetricUnitUtil treats the dimensionless "1" and "%" as one family — so
|
|
132
|
+
* a `legendUnit: "%"` on an operand would scale it by 100 BEFORE the
|
|
133
|
+
* formula's own `* 100` ran. Formula configs are never converted, so the
|
|
134
|
+
* unit there is display metadata and the formula owns the scaling. That
|
|
135
|
+
* is also why the `* 100` is written into the formula rather than
|
|
136
|
+
* delegated to a query-level `legendUnit`: the converter is a silent
|
|
137
|
+
* no-op whenever the metric's native unit was not recorded at ingest,
|
|
138
|
+
* and the failure mode would be a [0, 1] sample compared against 80 —
|
|
139
|
+
* a monitor that never fires and never says why.
|
|
140
|
+
*
|
|
141
|
+
* Name the operand aliases after the state they carry (`host_cpu_user`,
|
|
142
|
+
* `host_memory_used`). A criteria bound to a formula alias reports the
|
|
143
|
+
* FORMULA STRING as its metric name and an empty attribute map, so the
|
|
144
|
+
* alias names are the only place the alert body can tell the reader
|
|
145
|
+
* which slice of the metric was measured.
|
|
146
|
+
*
|
|
147
|
+
* This mirrors buildKubernetesRatioMonitorConfig.
|
|
148
|
+
*/
|
|
149
|
+
export function buildHostFormulaMonitorConfig(args) {
|
|
150
|
+
return {
|
|
151
|
+
hostIdentifier: args.hostIdentifier,
|
|
152
|
+
metricViewConfig: {
|
|
153
|
+
queryConfigs: args.queries.map((query) => {
|
|
154
|
+
return {
|
|
155
|
+
metricAliasData: {
|
|
156
|
+
metricVariable: query.metricAlias,
|
|
157
|
+
title: query.metricAlias,
|
|
158
|
+
description: query.metricAlias,
|
|
159
|
+
legend: query.metricAlias,
|
|
160
|
+
// Never set here — see the UNITS note above.
|
|
161
|
+
legendUnit: undefined,
|
|
162
|
+
},
|
|
163
|
+
metricQueryData: Object.assign({ filterData: {
|
|
164
|
+
metricName: query.metricName,
|
|
165
|
+
attributes: query.attributes || {},
|
|
166
|
+
aggegationType: query.aggregationType,
|
|
167
|
+
aggregateBy: {},
|
|
168
|
+
} }, (args.groupByAttributeKeys &&
|
|
169
|
+
args.groupByAttributeKeys.length > 0
|
|
170
|
+
? { groupByAttributeKeys: args.groupByAttributeKeys }
|
|
171
|
+
: {})),
|
|
172
|
+
};
|
|
173
|
+
}),
|
|
174
|
+
formulaConfigs: [
|
|
175
|
+
{
|
|
176
|
+
metricAliasData: {
|
|
177
|
+
metricVariable: args.resultAlias,
|
|
178
|
+
title: args.resultLegend,
|
|
179
|
+
description: args.resultLegend,
|
|
180
|
+
legend: args.resultLegend,
|
|
181
|
+
legendUnit: args.legendUnit,
|
|
182
|
+
},
|
|
183
|
+
metricFormulaData: {
|
|
184
|
+
metricFormula: args.formula,
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
rollingTime: args.rollingTime,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
166
192
|
// --- Template Definitions ---
|
|
167
193
|
const highCpuTemplate = {
|
|
168
194
|
id: "host-high-cpu",
|
|
169
195
|
name: "High CPU Utilization",
|
|
170
|
-
description: "Alert when host CPU
|
|
196
|
+
description: "Alert when host CPU busy time (user + system) exceeds 80% for the whole evaluation window.",
|
|
171
197
|
category: "Resource",
|
|
172
198
|
severity: "Warning",
|
|
173
199
|
getMonitorStep: (args) => {
|
|
174
200
|
const metricAlias = "host_cpu";
|
|
175
201
|
return buildHostMonitorStep({
|
|
176
|
-
|
|
202
|
+
/*
|
|
203
|
+
* Busy CPU = user + system, each pulled as its own `state` series.
|
|
204
|
+
* See buildHostFormulaMonitorConfig: averaging the raw metric
|
|
205
|
+
* across all states lands at ~1/(state count) and never reaches any
|
|
206
|
+
* threshold worth alerting on, so this template could not fire.
|
|
207
|
+
*
|
|
208
|
+
* `1 - idle` is the other way to derive this and is deliberately
|
|
209
|
+
* NOT used: it breaks the moment a platform stops emitting the
|
|
210
|
+
* `idle` state. user + system is what the host Overview page
|
|
211
|
+
* charts, so the alert and the chart now agree.
|
|
212
|
+
*/
|
|
213
|
+
hostMonitor: buildHostFormulaMonitorConfig({
|
|
177
214
|
hostIdentifier: args.hostIdentifier,
|
|
178
|
-
|
|
179
|
-
|
|
215
|
+
queries: [
|
|
216
|
+
{
|
|
217
|
+
metricAlias: "host_cpu_user",
|
|
218
|
+
metricName: "system.cpu.utilization",
|
|
219
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
220
|
+
attributes: { state: "user" },
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
metricAlias: "host_cpu_system",
|
|
224
|
+
metricName: "system.cpu.utilization",
|
|
225
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
226
|
+
attributes: { state: "system" },
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
resultAlias: metricAlias,
|
|
230
|
+
resultLegend: "CPU Busy (%)",
|
|
231
|
+
formula: "(host_cpu_user + host_cpu_system) * 100",
|
|
232
|
+
legendUnit: "%",
|
|
180
233
|
rollingTime: RollingTime.Past5Minutes,
|
|
181
|
-
aggregationType: MetricsAggregationType.Avg,
|
|
182
234
|
}),
|
|
183
235
|
offlineCriteriaInstance: buildHostOfflineCriteriaInstance({
|
|
184
236
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -187,18 +239,18 @@ const highCpuTemplate = {
|
|
|
187
239
|
monitorName: args.monitorName,
|
|
188
240
|
metricAlias,
|
|
189
241
|
filterType: FilterType.GreaterThan,
|
|
190
|
-
//
|
|
191
|
-
value:
|
|
192
|
-
incidentTitle: `[Host] High CPU Utilization (>80%)
|
|
193
|
-
incidentDescription: `
|
|
242
|
+
// The formula already scales the [0, 1] ratio to percent, so 80 == 80%.
|
|
243
|
+
value: 80,
|
|
244
|
+
incidentTitle: `[Host] High CPU Utilization (>80%)${hostTitleSuffix(args)}`,
|
|
245
|
+
incidentDescription: `CPU busy time (user + system) stayed above 80% for the whole evaluation window on this host. Sustained saturation here shows up as latency in everything the host runs. Iowait and steal are excluded, so this is work the host itself is doing. See the root cause below for the measured values.`,
|
|
194
246
|
criteriaName: "High CPU - Utilization > 80%",
|
|
195
|
-
criteriaDescription: "Triggers when host CPU
|
|
247
|
+
criteriaDescription: "Triggers when host CPU busy time (user + system) exceeds 80% for every sample in the monitoring window.",
|
|
196
248
|
}),
|
|
197
249
|
onlineCriteriaInstance: buildHostOnlineCriteriaInstance({
|
|
198
250
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
199
251
|
metricAlias,
|
|
200
252
|
filterType: FilterType.LessThanOrEqualTo,
|
|
201
|
-
value:
|
|
253
|
+
value: 80,
|
|
202
254
|
}),
|
|
203
255
|
});
|
|
204
256
|
},
|
|
@@ -206,18 +258,36 @@ const highCpuTemplate = {
|
|
|
206
258
|
const highMemoryTemplate = {
|
|
207
259
|
id: "host-high-memory",
|
|
208
260
|
name: "High Memory Utilization",
|
|
209
|
-
description: "Alert when
|
|
261
|
+
description: "Alert when memory in use — excluding buffers and page cache — exceeds 85% of physical memory.",
|
|
210
262
|
category: "Resource",
|
|
211
263
|
severity: "Warning",
|
|
212
264
|
getMonitorStep: (args) => {
|
|
213
265
|
const metricAlias = "host_memory";
|
|
214
266
|
return buildHostMonitorStep({
|
|
215
|
-
|
|
267
|
+
/*
|
|
268
|
+
* `state=used` only. The hostmetrics receiver emits this metric once
|
|
269
|
+
* per memory state (used / free / buffered / cached / slab_* on
|
|
270
|
+
* Linux, used / free / inactive on macOS) and a state set sums to 1,
|
|
271
|
+
* so an unfiltered Avg sits at ~1/(state count) forever and could
|
|
272
|
+
* never reach 0.85 — this template never fired. `used` is the same
|
|
273
|
+
* state the host Overview memory tile reads, so the alert and the
|
|
274
|
+
* page now agree.
|
|
275
|
+
*/
|
|
276
|
+
hostMonitor: buildHostFormulaMonitorConfig({
|
|
216
277
|
hostIdentifier: args.hostIdentifier,
|
|
217
|
-
|
|
218
|
-
|
|
278
|
+
queries: [
|
|
279
|
+
{
|
|
280
|
+
metricAlias: "host_memory_used",
|
|
281
|
+
metricName: "system.memory.utilization",
|
|
282
|
+
aggregationType: MetricsAggregationType.Avg,
|
|
283
|
+
attributes: { state: "used" },
|
|
284
|
+
},
|
|
285
|
+
],
|
|
286
|
+
resultAlias: metricAlias,
|
|
287
|
+
resultLegend: "Memory Used (%)",
|
|
288
|
+
formula: "host_memory_used * 100",
|
|
289
|
+
legendUnit: "%",
|
|
219
290
|
rollingTime: RollingTime.Past5Minutes,
|
|
220
|
-
aggregationType: MetricsAggregationType.Avg,
|
|
221
291
|
}),
|
|
222
292
|
offlineCriteriaInstance: buildHostOfflineCriteriaInstance({
|
|
223
293
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -226,18 +296,18 @@ const highMemoryTemplate = {
|
|
|
226
296
|
monitorName: args.monitorName,
|
|
227
297
|
metricAlias,
|
|
228
298
|
filterType: FilterType.GreaterThan,
|
|
229
|
-
//
|
|
230
|
-
value:
|
|
231
|
-
incidentTitle: `[Host] High Memory Utilization (>85%)
|
|
232
|
-
incidentDescription: `
|
|
299
|
+
// The formula already scales the [0, 1] ratio to percent, so 85 == 85%.
|
|
300
|
+
value: 85,
|
|
301
|
+
incidentTitle: `[Host] High Memory Utilization (>85%)${hostTitleSuffix(args)}`,
|
|
302
|
+
incidentDescription: `Memory in use — excluding buffers and page cache — stayed above 85% of physical memory for the whole evaluation window on this host. Sustained pressure here leads to swapping and OOM kills. A host that is mostly page cache will NOT trip this. See the root cause below for the measured values.`,
|
|
233
303
|
criteriaName: "High Memory - Utilization > 85%",
|
|
234
|
-
criteriaDescription: "Triggers when
|
|
304
|
+
criteriaDescription: "Triggers when memory in use exceeds 85% of physical memory for every sample in the monitoring window.",
|
|
235
305
|
}),
|
|
236
306
|
onlineCriteriaInstance: buildHostOnlineCriteriaInstance({
|
|
237
307
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
238
308
|
metricAlias,
|
|
239
309
|
filterType: FilterType.LessThanOrEqualTo,
|
|
240
|
-
value:
|
|
310
|
+
value: 85,
|
|
241
311
|
}),
|
|
242
312
|
});
|
|
243
313
|
},
|
|
@@ -251,20 +321,52 @@ const highFilesystemUsageTemplate = {
|
|
|
251
321
|
getMonitorStep: (args) => {
|
|
252
322
|
const metricAlias = "host_filesystem";
|
|
253
323
|
return buildHostMonitorStep({
|
|
254
|
-
hostMonitor:
|
|
324
|
+
hostMonitor: buildHostFormulaMonitorConfig({
|
|
255
325
|
hostIdentifier: args.hostIdentifier,
|
|
256
|
-
|
|
257
|
-
|
|
326
|
+
queries: [
|
|
327
|
+
{
|
|
328
|
+
metricAlias: "host_filesystem_ratio",
|
|
329
|
+
metricName: "system.filesystem.utilization",
|
|
330
|
+
/*
|
|
331
|
+
* Max WITHIN each mountpoint's series: the peak utilization
|
|
332
|
+
* that mount reached during the window. Grouping by
|
|
333
|
+
* `mountpoint` already keeps mounts from being averaged
|
|
334
|
+
* together, and gives one incident per mount so a second
|
|
335
|
+
* mount filling up is not silenced by the first one's open
|
|
336
|
+
* incident.
|
|
337
|
+
*/
|
|
338
|
+
aggregationType: MetricsAggregationType.Max,
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
resultAlias: metricAlias,
|
|
342
|
+
resultLegend: "Filesystem Used (%)",
|
|
343
|
+
/*
|
|
344
|
+
* The raw metric is a [0, 1] ratio with no unit recorded, so
|
|
345
|
+
* without this the body of a Critical alert read a bare "0.93"
|
|
346
|
+
* under a title that says 90%. See buildHostFormulaMonitorConfig
|
|
347
|
+
* for why the scaling lives in the formula.
|
|
348
|
+
*/
|
|
349
|
+
formula: "host_filesystem_ratio * 100",
|
|
350
|
+
legendUnit: "%",
|
|
258
351
|
rollingTime: RollingTime.Past5Minutes,
|
|
259
352
|
/*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
353
|
+
* `mountpoint` is the identity — one incident per mount.
|
|
354
|
+
* `device` rides along because the hostmetrics receiver puts it
|
|
355
|
+
* on the same datapoint, it is constant for a given mount (so it
|
|
356
|
+
* adds no series), and it is the first thing anyone asks after
|
|
357
|
+
* "which mount?": /var at 95% on the same device as / is a
|
|
358
|
+
* different problem from /var on its own disk.
|
|
359
|
+
*
|
|
360
|
+
* NOTE this template still pages on read-only pseudo-filesystems
|
|
361
|
+
* that are 100% full by design (snap `squashfs` loop mounts,
|
|
362
|
+
* macOS `devfs`). The Kubernetes agent's collector already
|
|
363
|
+
* excludes those with an `include_fs_types` allowlist; the
|
|
364
|
+
* standalone host collector config does not, and excluding them
|
|
365
|
+
* here would need a NOT-IN comparison that `filterData.attributes`
|
|
366
|
+
* (exact match only) cannot express. The mount and device are on
|
|
367
|
+
* the alert, so the description below names the pattern instead.
|
|
265
368
|
*/
|
|
266
|
-
|
|
267
|
-
groupByAttributeKey: "mountpoint",
|
|
369
|
+
groupByAttributeKeys: ["mountpoint", "device"],
|
|
268
370
|
}),
|
|
269
371
|
offlineCriteriaInstance: buildHostOfflineCriteriaInstance({
|
|
270
372
|
offlineMonitorStatusId: args.offlineMonitorStatusId,
|
|
@@ -273,18 +375,18 @@ const highFilesystemUsageTemplate = {
|
|
|
273
375
|
monitorName: args.monitorName,
|
|
274
376
|
metricAlias,
|
|
275
377
|
filterType: FilterType.GreaterThan,
|
|
276
|
-
//
|
|
277
|
-
value:
|
|
278
|
-
incidentTitle: `[Host] High Filesystem Usage (>90%)
|
|
279
|
-
incidentDescription: `
|
|
378
|
+
// The formula already scales the [0, 1] ratio to percent, so 90 == 90%.
|
|
379
|
+
value: 90,
|
|
380
|
+
incidentTitle: `[Host] High Filesystem Usage (>90%)${hostTitleSuffix(args)}`,
|
|
381
|
+
incidentDescription: `This mount stayed above 90% utilization for the whole evaluation window. A full disk causes application failures and data loss. The mount and device are named above. NOTE that read-only pseudo-filesystems — snap squashfs loop mounts under /snap, macOS devfs — sit at 100% by design and can never recover; if this names one of those, it is not actionable and the mount should be excluded from the collector's filesystem scraper.`,
|
|
280
382
|
criteriaName: "High Filesystem - Usage > 90%",
|
|
281
|
-
criteriaDescription: "Triggers when
|
|
383
|
+
criteriaDescription: "Triggers when a host filesystem exceeds 90% utilization for every sample in the monitoring window.",
|
|
282
384
|
}),
|
|
283
385
|
onlineCriteriaInstance: buildHostOnlineCriteriaInstance({
|
|
284
386
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
285
387
|
metricAlias,
|
|
286
388
|
filterType: FilterType.LessThanOrEqualTo,
|
|
287
|
-
value:
|
|
389
|
+
value: 90,
|
|
288
390
|
}),
|
|
289
391
|
});
|
|
290
392
|
},
|
|
@@ -292,7 +394,7 @@ const highFilesystemUsageTemplate = {
|
|
|
292
394
|
const highLoadAverageTemplate = {
|
|
293
395
|
id: "host-high-load-average",
|
|
294
396
|
name: "High Load Average (1m)",
|
|
295
|
-
description: "Alert when the host's 1-minute load average
|
|
397
|
+
description: "Alert when the host's 1-minute load average stays above 4. The threshold is an absolute run-queue length and is NOT normalized by core count.",
|
|
296
398
|
category: "Resource",
|
|
297
399
|
severity: "Warning",
|
|
298
400
|
getMonitorStep: (args) => {
|
|
@@ -311,12 +413,18 @@ const highLoadAverageTemplate = {
|
|
|
311
413
|
alertSeverityId: args.defaultAlertSeverityId,
|
|
312
414
|
monitorName: args.monitorName,
|
|
313
415
|
metricAlias,
|
|
416
|
+
/*
|
|
417
|
+
* A raw run-queue length, NOT a ratio and NOT normalized by core
|
|
418
|
+
* count. Normalizing would need `system.cpu.logical.count`, which
|
|
419
|
+
* only the standalone collector config enables today, so the
|
|
420
|
+
* threshold stays absolute and the copy below says so.
|
|
421
|
+
*/
|
|
314
422
|
filterType: FilterType.GreaterThan,
|
|
315
423
|
value: 4,
|
|
316
|
-
incidentTitle: `[Host] High Load Average (1m > 4)
|
|
317
|
-
incidentDescription: `
|
|
424
|
+
incidentTitle: `[Host] High Load Average (1m > 4)${hostTitleSuffix(args)}`,
|
|
425
|
+
incidentDescription: `This host's 1-minute load average stayed above 4 for the whole evaluation window, which indicates CPU contention or runaway processes. NOTE the threshold is an absolute run-queue length and is NOT normalized by core count: 4 is deep saturation on a 2-core host and routine on a 32-core one, so raise it on large hosts.`,
|
|
318
426
|
criteriaName: "High Load - 1m Average > 4",
|
|
319
|
-
criteriaDescription: "Triggers when the host's 1-minute load average exceeds 4
|
|
427
|
+
criteriaDescription: "Triggers when the host's 1-minute load average exceeds 4 for every sample in the monitoring window.",
|
|
320
428
|
}),
|
|
321
429
|
onlineCriteriaInstance: buildHostOnlineCriteriaInstance({
|
|
322
430
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
@@ -330,7 +438,7 @@ const highLoadAverageTemplate = {
|
|
|
330
438
|
const highProcessCountTemplate = {
|
|
331
439
|
id: "host-high-processes",
|
|
332
440
|
name: "High Process Count",
|
|
333
|
-
description: "Alert when the host
|
|
441
|
+
description: "Alert when the host's largest process-state bucket (running, sleeping, idle, ...) exceeds 2000 processes, which may indicate a fork bomb or resource leak. Linux only.",
|
|
334
442
|
category: "Host",
|
|
335
443
|
severity: "Warning",
|
|
336
444
|
getMonitorStep: (args) => {
|
|
@@ -341,6 +449,26 @@ const highProcessCountTemplate = {
|
|
|
341
449
|
metricName: "system.processes.count",
|
|
342
450
|
metricAlias,
|
|
343
451
|
rollingTime: RollingTime.Past5Minutes,
|
|
452
|
+
/*
|
|
453
|
+
* `system.processes.count` is partitioned by process status
|
|
454
|
+
* (running / sleeping / blocked / idle / ...) — one datapoint per
|
|
455
|
+
* status, which is why ingest SUMS every datapoint to derive
|
|
456
|
+
* `host.processCount` and why the host Overview tile has to filter
|
|
457
|
+
* down to a single status. This query is ungrouped and unfiltered,
|
|
458
|
+
* so `Max` compares the LARGEST SINGLE STATUS BUCKET, not the
|
|
459
|
+
* host's total process count.
|
|
460
|
+
*
|
|
461
|
+
* `Max` is kept deliberately. `Sum` is not the fix: the query
|
|
462
|
+
* aggregates within a time bucket, so it would add every status
|
|
463
|
+
* AND every scrape inside that bucket together. Grouping by status
|
|
464
|
+
* would need a per-status threshold nobody has evidence for, and
|
|
465
|
+
* would break the `groupByAttributeKeys: []` contract pinned in
|
|
466
|
+
* TemplateGroupByKeys.test.ts. On Linux the largest bucket tracks
|
|
467
|
+
* the total closely enough to stay a usable "far too many
|
|
468
|
+
* processes" signal — so the QUERY stays as it is and the COPY
|
|
469
|
+
* below stops claiming a total nobody could reconcile with a
|
|
470
|
+
* process listing.
|
|
471
|
+
*/
|
|
344
472
|
aggregationType: MetricsAggregationType.Max,
|
|
345
473
|
}),
|
|
346
474
|
offlineCriteriaInstance: buildHostOfflineCriteriaInstance({
|
|
@@ -351,10 +479,10 @@ const highProcessCountTemplate = {
|
|
|
351
479
|
metricAlias,
|
|
352
480
|
filterType: FilterType.GreaterThan,
|
|
353
481
|
value: 2000,
|
|
354
|
-
incidentTitle: `[Host] High Process Count (>2000)
|
|
355
|
-
incidentDescription: `
|
|
482
|
+
incidentTitle: `[Host] High Process Count (>2000)${hostTitleSuffix(args)}`,
|
|
483
|
+
incidentDescription: `The largest single process-state bucket on this host (running, sleeping, idle, ...) held more than 2000 processes for every sample in the evaluation window. This is NOT the host's total process count, so it will not match the total a process listing reports. Check the host for runaway or unreaped processes. The metric comes from the hostmetrics processes scraper, which reports on Linux only.`,
|
|
356
484
|
criteriaName: "High Processes - Count > 2000",
|
|
357
|
-
criteriaDescription: "Triggers when
|
|
485
|
+
criteriaDescription: "Triggers when the largest single process-state bucket exceeds 2000 processes for every sample in the monitoring window.",
|
|
358
486
|
}),
|
|
359
487
|
onlineCriteriaInstance: buildHostOnlineCriteriaInstance({
|
|
360
488
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/HostAlertTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"HostAlertTemplates.js","sourceRoot":"","sources":["../../../../Types/Monitor/HostAlertTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AAEpE,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,sBAAsB,MAAM,mCAAmC,CAAC;AAwBvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAIpC;IACC,MAAM,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;IAEnD,MAAM,eAAe,GAAoB,IAAI,eAAe,EAAE,CAAC;IAE/D,eAAe,CAAC,IAAI,GAAG;QACrB,4BAA4B,EAAE;YAC5B,IAAI,CAAC,uBAAuB;YAC5B,IAAI,CAAC,sBAAsB;SAC5B;KACF,CAAC;IAEF,WAAW,CAAC,IAAI,GAAG;QACjB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAClC,kBAAkB,EAAE,SAAS;QAC7B,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,SAAS;QACjC,eAAe,EAAE,eAAe;QAChC,WAAW,EAAE,KAAY;QACzB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,SAAS;QACvB,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,SAAS;QACxB,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,yBAAyB,EAAE,SAAS;QACpC,iBAAiB,EAAE,SAAS;QAC5B,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAahD;IACC,OAAO,8BAA8B,iCAChC,IAAI,KACP,YAAY,EAAE,MAAM,IACpB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAS/C;IACC,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAkBtC;IACC,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,gBAAgB,EAAE;YAChB,YAAY,EAAE;gBACZ;oBACE,eAAe,EAAE;wBACf,cAAc,EAAE,IAAI,CAAC,WAAW;wBAChC,KAAK,EAAE,IAAI,CAAC,WAAW;wBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,MAAM,EAAE,IAAI,CAAC,WAAW;wBACxB,UAAU,EAAE,SAAS;qBACtB;oBACD,eAAe,kBACb,UAAU,EAAE;4BACV,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;4BACjC,cAAc,EAAE,IAAI,CAAC,eAAe;4BACpC,WAAW,EAAE,EAAE;yBAChB,IACE,CAAC,IAAI,CAAC,oBAAoB;wBAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;wBAClC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;wBACrD,CAAC,CAAC,EAAE,CAAC,CACR;iBACF;aACF;YACD,cAAc,EAAE,EAAE;SACnB;QACD,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,IAA2B;IACzD,MAAM,IAAI,GAAW,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAExD,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAc7C;IACC,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,gBAAgB,EAAE;YAChB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAC5B,CAAC,KAKA,EAAE,EAAE;gBACH,OAAO;oBACL,eAAe,EAAE;wBACf,cAAc,EAAE,KAAK,CAAC,WAAW;wBACjC,KAAK,EAAE,KAAK,CAAC,WAAW;wBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,MAAM,EAAE,KAAK,CAAC,WAAW;wBACzB,6CAA6C;wBAC7C,UAAU,EAAE,SAAS;qBACtB;oBACD,eAAe,kBACb,UAAU,EAAE;4BACV,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;4BAClC,cAAc,EAAE,KAAK,CAAC,eAAe;4BACrC,WAAW,EAAE,EAAE;yBAChB,IACE,CAAC,IAAI,CAAC,oBAAoB;wBAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;wBAClC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;wBACrD,CAAC,CAAC,EAAE,CAAC,CACR;iBACF,CAAC;YACJ,CAAC,CACF;YACD,cAAc,EAAE;gBACd;oBACE,eAAe,EAAE;wBACf,cAAc,EAAE,IAAI,CAAC,WAAW;wBAChC,KAAK,EAAE,IAAI,CAAC,YAAY;wBACxB,WAAW,EAAE,IAAI,CAAC,YAAY;wBAC9B,MAAM,EAAE,IAAI,CAAC,YAAY;wBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B;oBACD,iBAAiB,EAAE;wBACjB,aAAa,EAAE,IAAI,CAAC,OAAO;qBAC5B;iBACF;aACF;SACF;QACD,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;AACJ,CAAC;AAED,+BAA+B;AAE/B,MAAM,eAAe,GAAsB;IACzC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,4FAA4F;IAC9F,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,CAAC,IAA2B,EAAe,EAAE;QAC3D,MAAM,WAAW,GAAW,UAAU,CAAC;QAEvC,OAAO,oBAAoB,CAAC;YAC1B;;;;;;;;;;eAUG;YACH,WAAW,EAAE,6BAA6B,CAAC;gBACzC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,OAAO,EAAE;oBACP;wBACE,WAAW,EAAE,eAAe;wBAC5B,UAAU,EAAE,wBAAwB;wBACpC,eAAe,EAAE,sBAAsB,CAAC,GAAG;wBAC3C,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC9B;oBACD;wBACE,WAAW,EAAE,iBAAiB;wBAC9B,UAAU,EAAE,wBAAwB;wBACpC,eAAe,EAAE,sBAAsB,CAAC,GAAG;wBAC3C,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;qBAChC;iBACF;gBACD,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,cAAc;gBAC5B,OAAO,EAAE,yCAAyC;gBAClD,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,WAAW,CAAC,YAAY;aACtC,CAAC;YACF,uBAAuB,EAAE,gCAAgC,CAAC;gBACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,kBAAkB,EAAE,IAAI,CAAC,yBAAyB;gBAClD,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,WAAW;gBAClC,wEAAwE;gBACxE,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,qCAAqC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC3E,mBAAmB,EAAE,oSAAoS;gBACzT,YAAY,EAAE,8BAA8B;gBAC5C,mBAAmB,EACjB,yGAAyG;aAC5G,CAAC;YACF,sBAAsB,EAAE,+BAA+B,CAAC;gBACtD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,iBAAiB;gBACxC,KAAK,EAAE,EAAE;aACV,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAsB;IAC5C,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,+FAA+F;IACjG,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,CAAC,IAA2B,EAAe,EAAE;QAC3D,MAAM,WAAW,GAAW,aAAa,CAAC;QAE1C,OAAO,oBAAoB,CAAC;YAC1B;;;;;;;;eAQG;YACH,WAAW,EAAE,6BAA6B,CAAC;gBACzC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,OAAO,EAAE;oBACP;wBACE,WAAW,EAAE,kBAAkB;wBAC/B,UAAU,EAAE,2BAA2B;wBACvC,eAAe,EAAE,sBAAsB,CAAC,GAAG;wBAC3C,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC9B;iBACF;gBACD,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,iBAAiB;gBAC/B,OAAO,EAAE,wBAAwB;gBACjC,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,WAAW,CAAC,YAAY;aACtC,CAAC;YACF,uBAAuB,EAAE,gCAAgC,CAAC;gBACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,kBAAkB,EAAE,IAAI,CAAC,yBAAyB;gBAClD,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,WAAW;gBAClC,wEAAwE;gBACxE,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,wCAAwC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC9E,mBAAmB,EAAE,sSAAsS;gBAC3T,YAAY,EAAE,iCAAiC;gBAC/C,mBAAmB,EACjB,uGAAuG;aAC1G,CAAC;YACF,sBAAsB,EAAE,+BAA+B,CAAC;gBACtD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,iBAAiB;gBACxC,KAAK,EAAE,EAAE;aACV,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,2BAA2B,GAAsB;IACrD,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,+EAA+E;IACjF,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,CAAC,IAA2B,EAAe,EAAE;QAC3D,MAAM,WAAW,GAAW,iBAAiB,CAAC;QAE9C,OAAO,oBAAoB,CAAC;YAC1B,WAAW,EAAE,6BAA6B,CAAC;gBACzC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,OAAO,EAAE;oBACP;wBACE,WAAW,EAAE,uBAAuB;wBACpC,UAAU,EAAE,+BAA+B;wBAC3C;;;;;;;2BAOG;wBACH,eAAe,EAAE,sBAAsB,CAAC,GAAG;qBAC5C;iBACF;gBACD,WAAW,EAAE,WAAW;gBACxB,YAAY,EAAE,qBAAqB;gBACnC;;;;;mBAKG;gBACH,OAAO,EAAE,6BAA6B;gBACtC,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,WAAW,CAAC,YAAY;gBACrC;;;;;;;;;;;;;;;;mBAgBG;gBACH,oBAAoB,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC;aAC/C,CAAC;YACF,uBAAuB,EAAE,gCAAgC,CAAC;gBACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,kBAAkB,EAAE,IAAI,CAAC,yBAAyB;gBAClD,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,WAAW;gBAClC,wEAAwE;gBACxE,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,sCAAsC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC5E,mBAAmB,EAAE,6aAA6a;gBAClc,YAAY,EAAE,+BAA+B;gBAC7C,mBAAmB,EACjB,oGAAoG;aACvG,CAAC;YACF,sBAAsB,EAAE,+BAA+B,CAAC;gBACtD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,iBAAiB;gBACxC,KAAK,EAAE,EAAE;aACV,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,uBAAuB,GAAsB;IACjD,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,+IAA+I;IACjJ,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,CAAC,IAA2B,EAAe,EAAE;QAC3D,MAAM,WAAW,GAAW,cAAc,CAAC;QAE3C,OAAO,oBAAoB,CAAC;YAC1B,WAAW,EAAE,sBAAsB,CAAC;gBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,UAAU,EAAE,4BAA4B;gBACxC,WAAW;gBACX,WAAW,EAAE,WAAW,CAAC,YAAY;gBACrC,eAAe,EAAE,sBAAsB,CAAC,GAAG;aAC5C,CAAC;YACF,uBAAuB,EAAE,gCAAgC,CAAC;gBACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,kBAAkB,EAAE,IAAI,CAAC,yBAAyB;gBAClD,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX;;;;;mBAKG;gBACH,UAAU,EAAE,UAAU,CAAC,WAAW;gBAClC,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE,oCAAoC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC1E,mBAAmB,EAAE,gUAAgU;gBACrV,YAAY,EAAE,4BAA4B;gBAC1C,mBAAmB,EACjB,qGAAqG;aACxG,CAAC;YACF,sBAAsB,EAAE,+BAA+B,CAAC;gBACtD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,iBAAiB;gBACxC,KAAK,EAAE,CAAC;aACT,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAsB;IAClD,EAAE,EAAE,qBAAqB;IACzB,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,wKAAwK;IAC1K,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,CAAC,IAA2B,EAAe,EAAE;QAC3D,MAAM,WAAW,GAAW,gBAAgB,CAAC;QAE7C,OAAO,oBAAoB,CAAC;YAC1B,WAAW,EAAE,sBAAsB,CAAC;gBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,UAAU,EAAE,wBAAwB;gBACpC,WAAW;gBACX,WAAW,EAAE,WAAW,CAAC,YAAY;gBACrC;;;;;;;;;;;;;;;;;;;mBAmBG;gBACH,eAAe,EAAE,sBAAsB,CAAC,GAAG;aAC5C,CAAC;YACF,uBAAuB,EAAE,gCAAgC,CAAC;gBACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,kBAAkB,EAAE,IAAI,CAAC,yBAAyB;gBAClD,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,WAAW;gBAClC,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,oCAAoC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC1E,mBAAmB,EAAE,4YAA4Y;gBACja,YAAY,EAAE,+BAA+B;gBAC7C,mBAAmB,EACjB,yHAAyH;aAC5H,CAAC;YACF,sBAAsB,EAAE,+BAA+B,CAAC;gBACtD,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,WAAW;gBACX,UAAU,EAAE,UAAU,CAAC,iBAAiB;gBACxC,KAAK,EAAE,IAAI;aACZ,CAAC;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,eAAe;QACf,kBAAkB;QAClB,2BAA2B;QAC3B,uBAAuB;QACvB,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,QAAmC;IAEnC,OAAO,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,QAA2B,EAAE,EAAE;QACvE,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,EAAU;IAEV,OAAO,wBAAwB,EAAE,CAAC,IAAI,CAAC,CAAC,QAA2B,EAAE,EAAE;QACrE,OAAO,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|