@oneuptime/common 12.0.13 → 12.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/GlobalOidc.ts +20 -0
- package/Models/DatabaseModels/GlobalSso.ts +20 -0
- package/Models/DatabaseModels/MarketingConversion.ts +19 -9
- package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +46 -0
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
- package/Models/DatabaseModels/StatusPage.ts +7 -4
- package/Models/DatabaseModels/UserCall.ts +94 -3
- package/Models/DatabaseModels/UserEmail.ts +94 -3
- package/Models/DatabaseModels/UserIncomingCallNumber.ts +94 -3
- package/Models/DatabaseModels/UserPush.ts +37 -0
- package/Models/DatabaseModels/UserSMS.ts +94 -3
- package/Models/DatabaseModels/UserWhatsApp.ts +93 -2
- package/Server/API/BaseAPI.ts +79 -14
- package/Server/API/StatusPageAPI.ts +29 -4
- package/Server/API/UserCallAPI.ts +53 -45
- package/Server/API/UserEmailAPI.ts +53 -44
- package/Server/API/UserIncomingCallNumberAPI.ts +48 -38
- package/Server/API/UserNotificationMethodAdminAPI.ts +481 -0
- package/Server/API/UserPushAPI.ts +126 -2
- package/Server/API/UserSmsAPI.ts +53 -44
- package/Server/API/UserWhatsAppAPI.ts +53 -50
- package/Server/EnvironmentConfig.ts +7 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/SlackAuthorization.ts +43 -6
- package/Server/Middleware/UserAuthorization.ts +236 -26
- package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
- package/Server/Middleware/WhatsAppAuthorization.ts +43 -3
- package/Server/Services/AnalyticsDatabaseService.ts +169 -0
- package/Server/Services/DatabaseService.ts +101 -0
- package/Server/Services/GlobalOidcProjectService.ts +126 -1
- package/Server/Services/GlobalOidcService.ts +132 -0
- package/Server/Services/GlobalSsoProjectService.ts +126 -1
- package/Server/Services/GlobalSsoService.ts +132 -0
- package/Server/Services/LogAggregationService.ts +5 -0
- package/Server/Services/PushNotificationService.ts +127 -12
- package/Server/Services/TeamMemberService.ts +53 -13
- package/Server/Services/UserCallService.ts +55 -24
- package/Server/Services/UserEmailService.ts +83 -17
- package/Server/Services/UserIncomingCallNumberService.ts +49 -85
- package/Server/Services/UserNotificationMethodAdminService.ts +1527 -0
- package/Server/Services/UserNotificationRuleService.ts +26 -0
- package/Server/Services/UserPushService.ts +89 -0
- package/Server/Services/UserSmsService.ts +50 -17
- package/Server/Services/UserWhatsAppService.ts +48 -15
- package/Server/Types/Database/QueryHelper.ts +30 -0
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
- package/Server/Utils/ChannelVerification.ts +510 -0
- package/Server/Utils/CronTab.ts +73 -0
- package/Server/Utils/GlobalSsoAuthorization.ts +175 -0
- package/Server/Utils/Marketing/ConversionUploadProvider.ts +35 -5
- package/Server/Utils/Marketing/Providers/GoogleAds.ts +1 -1
- package/Server/Utils/Marketing/Providers/LinkedIn.ts +1 -1
- package/Server/Utils/Marketing/Providers/Meta.ts +1 -1
- package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +1 -1
- package/Server/Utils/Marketing/Providers/Reddit.ts +1 -1
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +48 -33
- package/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.ts +35 -30
- package/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.ts +33 -28
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +475 -47
- package/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.ts +35 -30
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +47 -44
- package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +33 -28
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +69 -40
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +35 -29
- package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +8 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
- package/Server/Utils/Monitor/MonitorResource.ts +161 -21
- package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
- package/Server/Utils/StatusPageContentSecurityPolicy.ts +56 -0
- package/Server/Utils/StatusPageCustomizationAccess.ts +117 -0
- package/Server/Utils/TotpAuth.ts +137 -9
- package/Server/Utils/UserRegistrationToken.ts +182 -0
- package/Server/Utils/VerificationCode.ts +134 -0
- package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +173 -94
- package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +1151 -0
- package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +905 -0
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +338 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1 -1
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +28 -0
- package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
- package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
- package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
- package/Tests/Server/API/StatusPageCustomizationOrigin.test.ts +348 -0
- package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +108 -18
- package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +963 -0
- package/Tests/Server/API/UserPushCriticalAlertsApi.test.ts +114 -0
- package/Tests/Server/API/UserSmsApi.test.ts +107 -14
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +427 -0
- package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +265 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +227 -0
- package/Tests/Server/Middleware/SlackAuthorization.test.ts +149 -0
- package/Tests/Server/Middleware/UserAuthorization.test.ts +27 -13
- package/Tests/Server/Middleware/UserAuthorizationGlobalSsoGovernance.test.ts +1455 -0
- package/Tests/Server/Middleware/UserAuthorizationSSOProvider.test.ts +91 -2
- package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
- package/Tests/Server/Middleware/WhatsAppAuthorization.test.ts +233 -0
- package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +10 -62
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
- package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
- package/Tests/Server/Services/CriticalOnCallAlertDelivery.test.ts +458 -0
- package/Tests/Server/Services/CriticalPushAlertPayload.test.ts +301 -0
- package/Tests/Server/Services/DatabaseServiceAtomicIncrement.test.ts +143 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +21 -8
- package/Tests/Server/Services/GlobalSsoProviderAuthorization.test.ts +1242 -0
- package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
- package/Tests/Server/Services/MonitorResourceProbeAgreementHydration.test.ts +459 -0
- package/Tests/Server/Services/MonitorResourceProbeAgreementReuse.test.ts +10 -0
- package/Tests/Server/Services/NotificationChannelCodeIssuance.test.ts +401 -0
- package/Tests/Server/Services/PushNotificationDeliveryOptions.test.ts +204 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +21 -1
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +290 -0
- package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +948 -0
- package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1 -0
- package/Tests/Server/Services/UserPushCriticalAlertToggle.test.ts +255 -0
- package/Tests/Server/Services/UserTotpAuthEnrolment.test.ts +218 -0
- package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
- package/Tests/Server/Types/AnalyticsDatabase/AggregateUtilBucketTimestamp.test.ts +416 -0
- package/Tests/Server/Types/Database/Permissions/NotificationChannelVerificationColumns.test.ts +135 -0
- package/Tests/Server/Types/Database/Permissions/OnCallScheduleRelationSelect.test.ts +504 -0
- package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAnyOf.test.ts +91 -0
- package/Tests/Server/Types/Database/QueryHelperManyToManyAndEmptyValues.test.ts +551 -0
- package/Tests/Server/Types/Database/SelectUtil.test.ts +348 -0
- package/Tests/Server/Types/Workflow/Components/JsonToText.test.ts +384 -0
- package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
- package/Tests/Server/Utils/Browser.test.ts +162 -0
- package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
- package/Tests/Server/Utils/CronTab.test.ts +116 -0
- package/Tests/Server/Utils/Express.test.ts +371 -0
- package/Tests/Server/Utils/GlobalSSOToken.test.ts +581 -0
- package/Tests/Server/Utils/GlobalSsoAuthorization.test.ts +1401 -0
- package/Tests/Server/Utils/Marketing/AdUploadableConversionTypes.test.ts +254 -0
- package/Tests/Server/Utils/Marketing/ConversionUploadProvider.test.ts +1 -1
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +508 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaPortTimings.test.ts +30 -9
- package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +707 -0
- package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +698 -0
- package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +987 -0
- package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +916 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingEmailBodyCriteria.test.ts +243 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +382 -0
- package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +1219 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +160 -20
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +13 -8
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +162 -18
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +349 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +86 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +690 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +7 -2
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
- package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
- package/Tests/Server/Utils/StatusPageContentSecurityPolicy.test.ts +136 -0
- package/Tests/Server/Utils/StatusPageCustomizationAccess.test.ts +223 -0
- package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
- package/Tests/Server/Utils/TotpAuth.test.ts +719 -0
- package/Tests/Server/Utils/UserRegistrationToken.test.ts +322 -0
- package/Tests/Server/Utils/VerificationCode.test.ts +296 -0
- package/Tests/Types/AutoRemediation/AutoRemediationSuggestionStatus.test.ts +192 -0
- package/Tests/Types/Call/CallRequest.test.ts +189 -0
- package/Tests/Types/Dashboard/DashboardSize.test.ts +226 -0
- package/Tests/Types/Incident/IncidentSlaStatus.test.ts +191 -0
- package/Tests/Types/Metrics/MetricDashboardMetricType.test.ts +278 -0
- package/Tests/Types/Metrics/MetricPipelineRuleType.test.ts +517 -0
- package/Tests/Types/Monitor/IncomingMonitorDefaultCriteria.test.ts +470 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +6 -4
- package/Tests/Types/Monitor/MonitorStepConfigHelpers.test.ts +165 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +262 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
- package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +905 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceLinkRuleScope.test.ts +215 -0
- package/Tests/Types/Service/ServiceLanguage.test.ts +255 -0
- package/Tests/Types/TextRandomGeneration.test.ts +211 -0
- package/Tests/UI/Components/Button.test.tsx +175 -1
- package/Tests/UI/Components/CodeBlockLanguages.test.tsx +236 -0
- package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +568 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteKeyboard.test.tsx +239 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteProviders.test.tsx +400 -0
- package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +234 -0
- package/Tests/UI/Components/CommandPalette/RecentCommands.test.ts +97 -0
- package/Tests/UI/Components/CountModelSideMenuItemGuard.test.tsx +198 -0
- package/Tests/UI/Components/FeedItemSafeMode.test.tsx +1 -1
- package/Tests/UI/Components/Forms/FormSubmitAnalytics.test.tsx +206 -0
- package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +267 -0
- package/Tests/UI/Components/List.test.tsx +9 -2
- package/Tests/UI/Components/ListLoadingStates.test.tsx +173 -0
- package/Tests/UI/Components/MarkdownLazy.test.tsx +113 -0
- package/Tests/UI/Components/MarkdownMermaidRetry.test.tsx +110 -0
- package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +8 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +692 -0
- package/Tests/UI/Components/MoreMenuMotion.test.tsx +118 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +178 -0
- package/Tests/UI/Components/OrderedStatesList.test.tsx +19 -2
- package/Tests/UI/Components/SideOverMotion.test.tsx +109 -0
- package/Tests/UI/Components/Skeleton.test.tsx +71 -0
- package/Tests/UI/Components/TableLoadingStates.test.tsx +279 -0
- package/Tests/UI/Components/Tabs.test.tsx +24 -0
- package/Tests/UI/Components/Toast.test.tsx +130 -7
- package/Tests/UI/Components/ToastStacking.test.tsx +198 -0
- package/Tests/UI/Utils/AIChatExport/ConversationMarkdown.test.ts +774 -0
- package/Tests/UI/Utils/AIChatExport/MarkdownBlocks.test.ts +791 -0
- package/Tests/UI/Utils/AIChatExport/MarkdownSafety.test.ts +544 -0
- package/Tests/UI/Utils/Dropdown.test.ts +423 -0
- package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +122 -0
- package/Tests/UI/Utils/ModelListCache.test.ts +338 -0
- package/Tests/UI/Utils/ProjectListCacheInvalidation.test.ts +225 -0
- package/Tests/Utils/API.test.ts +16 -2
- package/Tests/Utils/Analytics.test.ts +187 -0
- package/Tests/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.test.ts +347 -0
- package/Tests/Utils/Dashboard/Components/DashboardListSharedArgs.test.ts +259 -0
- package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +466 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +80 -0
- package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +1291 -0
- package/Tests/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.test.ts +214 -0
- package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Marketing/MarketingConversion.ts +12 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
- package/Types/Monitor/ServiceAlertTemplates.ts +1352 -0
- package/Types/NetworkDevice/NetworkDeviceLinkRuleScope.ts +51 -0
- package/Types/Permission.ts +35 -0
- package/Types/PushNotification/AndroidNotificationChannel.ts +26 -0
- package/Types/PushNotification/PushNotificationMessage.ts +15 -0
- package/Types/PushNotification/PushNotificationRequest.ts +8 -16
- package/Types/Service/ServiceLanguage.ts +144 -0
- package/Types/Text.ts +111 -19
- package/UI/Components/Button/Button.tsx +27 -14
- package/UI/Components/CodeBlock/CodeBlock.tsx +54 -7
- package/UI/Components/CodeBlock/LanguageRegistry.ts +103 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +790 -0
- package/UI/Components/CommandPalette/PaletteFilter.ts +196 -0
- package/UI/Components/CommandPalette/PaletteRow.tsx +173 -0
- package/UI/Components/CommandPalette/RecentCommands.ts +57 -0
- package/UI/Components/CommandPalette/Types.ts +49 -0
- package/UI/Components/CommandPalette/UseProviderSearch.ts +129 -0
- package/UI/Components/Dropdown/Dropdown.tsx +6 -1
- package/UI/Components/Feed/FeedItem.tsx +1 -1
- package/UI/Components/FormModal/BasicFormModal.tsx +12 -0
- package/UI/Components/Forms/BasicForm.tsx +13 -1
- package/UI/Components/Forms/BasicModelForm.tsx +2 -1
- package/UI/Components/Forms/ModelForm.tsx +10 -1
- package/UI/Components/Forms/Utils/FormAnalyticsName.ts +39 -0
- package/UI/Components/List/List.tsx +37 -5
- package/UI/Components/List/ListSkeleton.tsx +54 -0
- package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +6 -1
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
- package/UI/Components/Modal/Modal.tsx +2 -2
- package/UI/Components/ModelFormModal/ModelFormModal.tsx +6 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/ModelTable/useCustomFieldColumns.ts +11 -5
- package/UI/Components/MoreMenu/MoreMenu.tsx +39 -1
- package/UI/Components/Navbar/NavBar.tsx +14 -1
- package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +50 -5
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +40 -1
- package/UI/Components/SideOver/SideOver.tsx +37 -2
- package/UI/Components/Skeleton/Skeleton.tsx +53 -0
- package/UI/Components/Table/Table.tsx +74 -44
- package/UI/Components/Table/TableSkeletonRows.tsx +141 -0
- package/UI/Components/Tabs/Tab.tsx +1 -1
- package/UI/Components/Toast/Toast.tsx +118 -53
- package/UI/Components/Toast/ToastInit.tsx +82 -32
- package/UI/Styles/Theme.css +40 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +20 -10
- package/UI/Utils/ModelListCache.ts +188 -0
- package/UI/Utils/Project.ts +29 -0
- package/Utils/API.ts +6 -1
- package/Utils/Analytics.ts +55 -2
- package/Utils/Monitor/MonitorMetricType.ts +40 -0
- package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +587 -37
- package/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.ts +115 -0
- package/build/dist/Models/DatabaseModels/GlobalOidc.js +21 -0
- package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSso.js +21 -0
- package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MarketingConversion.js +20 -10
- package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +47 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +14 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +4 -4
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserCall.js +101 -3
- package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserEmail.js +101 -3
- package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +101 -3
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserPush.js +38 -0
- package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSMS.js +101 -3
- package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js +100 -2
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +69 -13
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +25 -4
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/UserCallAPI.js +42 -38
- package/build/dist/Server/API/UserCallAPI.js.map +1 -1
- package/build/dist/Server/API/UserEmailAPI.js +42 -38
- package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js +37 -32
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js +341 -0
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js.map +1 -0
- package/build/dist/Server/API/UserPushAPI.js +95 -2
- package/build/dist/Server/API/UserPushAPI.js.map +1 -1
- package/build/dist/Server/API/UserSmsAPI.js +42 -38
- package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
- package/build/dist/Server/API/UserWhatsAppAPI.js +42 -40
- package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +6 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js +89 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787800000000-AddScopeToNetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js +29 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787900000000-AddRestrictToAttachedProjectsToGlobalSso.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +28 -4
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +197 -22
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js +393 -0
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js.map +1 -0
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js +32 -2
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +136 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +74 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/GlobalOidcProjectService.js +105 -0
- package/build/dist/Server/Services/GlobalOidcProjectService.js.map +1 -1
- package/build/dist/Server/Services/GlobalOidcService.js +127 -0
- package/build/dist/Server/Services/GlobalOidcService.js.map +1 -1
- package/build/dist/Server/Services/GlobalSsoProjectService.js +105 -0
- package/build/dist/Server/Services/GlobalSsoProjectService.js.map +1 -1
- package/build/dist/Server/Services/GlobalSsoService.js +127 -0
- package/build/dist/Server/Services/GlobalSsoService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +5 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js +69 -30
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +43 -7
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +54 -22
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserEmailService.js +78 -17
- package/build/dist/Server/Services/UserEmailService.js.map +1 -1
- package/build/dist/Server/Services/UserIncomingCallNumberService.js +45 -74
- package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js +1117 -0
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js +20 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserPushService.js +77 -0
- package/build/dist/Server/Services/UserPushService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +50 -17
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +48 -15
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +27 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -1
- package/build/dist/Server/Utils/ChannelVerification.js +348 -0
- package/build/dist/Server/Utils/ChannelVerification.js.map +1 -0
- package/build/dist/Server/Utils/CronTab.js +66 -0
- package/build/dist/Server/Utils/CronTab.js.map +1 -1
- package/build/dist/Server/Utils/GlobalSsoAuthorization.js +112 -0
- package/build/dist/Server/Utils/GlobalSsoAuthorization.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +17 -1
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +37 -35
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js +20 -22
- package/build/dist/Server/Utils/Monitor/Criteria/DomainMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +370 -42
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +34 -37
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +21 -25
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +64 -52
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +25 -29
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +20 -17
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +8 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +17 -14
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +123 -23
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +95 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +313 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +3 -3
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +67 -26
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js +39 -0
- package/build/dist/Server/Utils/StatusPageContentSecurityPolicy.js.map +1 -0
- package/build/dist/Server/Utils/StatusPageCustomizationAccess.js +85 -0
- package/build/dist/Server/Utils/StatusPageCustomizationAccess.js.map +1 -0
- package/build/dist/Server/Utils/TotpAuth.js +127 -8
- package/build/dist/Server/Utils/TotpAuth.js.map +1 -1
- package/build/dist/Server/Utils/UserRegistrationToken.js +170 -0
- package/build/dist/Server/Utils/UserRegistrationToken.js.map +1 -0
- package/build/dist/Server/Utils/VerificationCode.js +120 -0
- package/build/dist/Server/Utils/VerificationCode.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Marketing/MarketingConversion.js +10 -0
- package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +42 -21
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +77 -5
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +18 -6
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js +1028 -0
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js +46 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceLinkRuleScope.js.map +1 -0
- package/build/dist/Types/Permission.js +33 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js +27 -0
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js.map +1 -0
- package/build/dist/Types/Service/ServiceLanguage.js +96 -0
- package/build/dist/Types/Service/ServiceLanguage.js.map +1 -0
- package/build/dist/Types/Text.js +82 -17
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +22 -14
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js +35 -3
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js +57 -0
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +439 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +135 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js +83 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js +47 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/Types.js +2 -0
- package/build/dist/UI/Components/CommandPalette/Types.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js +88 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js.map +1 -0
- package/build/dist/UI/Components/Dropdown/Dropdown.js +6 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js +2 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +10 -1
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicModelForm.js +2 -1
- package/build/dist/UI/Components/Forms/BasicModelForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +4 -1
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js +33 -0
- package/build/dist/UI/Components/Forms/Utils/FormAnalyticsName.js.map +1 -0
- package/build/dist/UI/Components/List/List.js +19 -5
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/List/ListSkeleton.js +21 -0
- package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +52 -25
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -2
- package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js +2 -1
- package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +9 -2
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +32 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +5 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +29 -5
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +23 -2
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Components/Skeleton/Skeleton.js +23 -0
- package/build/dist/UI/Components/Skeleton/Skeleton.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +35 -24
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableSkeletonRows.js +52 -0
- package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -0
- package/build/dist/UI/Components/Tabs/Tab.js +1 -1
- package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
- package/build/dist/UI/Components/Toast/Toast.js +77 -23
- package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
- package/build/dist/UI/Components/Toast/ToastInit.js +37 -15
- package/build/dist/UI/Components/Toast/ToastInit.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -9
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/ModelListCache.js +126 -0
- package/build/dist/UI/Utils/ModelListCache.js.map +1 -0
- package/build/dist/UI/Utils/Project.js +24 -1
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/Utils/API.js +6 -1
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Analytics.js +50 -2
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +37 -0
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +318 -37
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js +87 -0
- package/build/dist/Utils/NetworkDiscovery/UnclaimedScanDiagnosis.js.map +1 -0
- package/jest.config.json +1 -1
- package/package.json +2 -3
- package/Server/Utils/Monitor/MonitorClusterContext.ts +0 -182
- package/Tests/__mocks__/otpauth.js +0 -30
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +0 -141
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +0 -1
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "../../../../Types/Monitor/CriteriaFilter";
|
|
10
10
|
import IncomingMonitorRequest from "../../../../Types/Monitor/IncomingMonitor/IncomingMonitorRequest";
|
|
11
11
|
import Typeof from "../../../../Types/Typeof";
|
|
12
|
-
import EvaluateOverTime from "./EvaluateOverTime";
|
|
12
|
+
import EvaluateOverTime, { OverTimeCriteriaValue } from "./EvaluateOverTime";
|
|
13
13
|
import CompareCriteria from "./CompareCriteria";
|
|
14
14
|
import ProbeMonitorResponse from "../../../../Types/Probe/ProbeMonitorResponse";
|
|
15
15
|
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
@@ -19,6 +19,13 @@ export default class IncomingRequestCriteria {
|
|
|
19
19
|
public static async isMonitorInstanceCriteriaFilterMet(input: {
|
|
20
20
|
dataToProcess: DataToProcess;
|
|
21
21
|
criteriaFilter: CriteriaFilter;
|
|
22
|
+
/*
|
|
23
|
+
* The monitor's monitoringInterval cron. Over-time filters use it to
|
|
24
|
+
* work out how many samples a fully covered window should hold, so a
|
|
25
|
+
* monitor that has only just started is not mistaken for one whose
|
|
26
|
+
* whole window is breaching.
|
|
27
|
+
*/
|
|
28
|
+
monitoringInterval?: string | undefined;
|
|
22
29
|
}): Promise<string | null> {
|
|
23
30
|
// Server Monitoring Checks
|
|
24
31
|
|
|
@@ -37,36 +44,35 @@ export default class IncomingRequestCriteria {
|
|
|
37
44
|
|
|
38
45
|
let value: number | string | undefined = input.criteriaFilter.value;
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
} catch (err) {
|
|
59
|
-
logger.error(
|
|
60
|
-
`Error in getting over time value for ${input.criteriaFilter.checkOn}`,
|
|
61
|
-
);
|
|
62
|
-
logger.error(err);
|
|
63
|
-
overTimeValue = undefined;
|
|
64
|
-
}
|
|
47
|
+
const overTime: OverTimeCriteriaValue =
|
|
48
|
+
await EvaluateOverTime.getOverTimeValueForCriteriaFilter({
|
|
49
|
+
projectId: (input.dataToProcess as IncomingMonitorRequest).projectId,
|
|
50
|
+
monitorId: input.dataToProcess.monitorId!,
|
|
51
|
+
criteriaFilter: input.criteriaFilter,
|
|
52
|
+
monitoringInterval: input.monitoringInterval,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* The window could not back this over-time filter (nothing recorded yet,
|
|
57
|
+
* or the monitor has not been running long enough to cover it). Return
|
|
58
|
+
* the decision the no-data policy already made instead of falling
|
|
59
|
+
* through to the value that arrived with this one check - that fallback
|
|
60
|
+
* is what let "all values over the last N minutes" fire off a single
|
|
61
|
+
* bad reading.
|
|
62
|
+
*/
|
|
63
|
+
if (overTime.earlyReturn) {
|
|
64
|
+
return overTime.earlyReturn.result;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
const overTimeValue:
|
|
68
|
+
| Array<number | boolean>
|
|
69
|
+
| number
|
|
70
|
+
| boolean
|
|
71
|
+
| undefined = overTime.value;
|
|
72
|
+
|
|
67
73
|
if (input.criteriaFilter.checkOn === CheckOn.IsOnline) {
|
|
68
74
|
const currentIsOnline: boolean | Array<boolean> =
|
|
69
|
-
(overTimeValue as Array<boolean>)
|
|
75
|
+
(overTimeValue as Array<boolean>) ??
|
|
70
76
|
(input.dataToProcess as ProbeMonitorResponse).isOnline;
|
|
71
77
|
|
|
72
78
|
return CompareCriteria.compareCriteriaBoolean({
|
|
@@ -78,7 +84,7 @@ export default class IncomingRequestCriteria {
|
|
|
78
84
|
// timeout.
|
|
79
85
|
if (input.criteriaFilter.checkOn === CheckOn.IsRequestTimeout) {
|
|
80
86
|
const currentIsTimeout: boolean | Array<boolean> =
|
|
81
|
-
(overTimeValue as Array<boolean>)
|
|
87
|
+
(overTimeValue as Array<boolean>) ??
|
|
82
88
|
(input.dataToProcess as ProbeMonitorResponse).isTimeout;
|
|
83
89
|
|
|
84
90
|
return CompareCriteria.compareCriteriaBoolean({
|
|
@@ -160,36 +166,33 @@ export default class IncomingRequestCriteria {
|
|
|
160
166
|
}
|
|
161
167
|
|
|
162
168
|
if (input.criteriaFilter.checkOn === CheckOn.RequestBody) {
|
|
163
|
-
let
|
|
169
|
+
let requestBody: string | JSONObject | undefined = (
|
|
164
170
|
input.dataToProcess as IncomingMonitorRequest
|
|
165
171
|
).requestBody;
|
|
166
172
|
|
|
167
|
-
if (
|
|
168
|
-
|
|
173
|
+
if (requestBody && typeof requestBody === Typeof.Object) {
|
|
174
|
+
requestBody = JSON.stringify(requestBody);
|
|
169
175
|
}
|
|
170
176
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
177
|
+
/*
|
|
178
|
+
* A request that carried no body is an empty body, not an unknown one.
|
|
179
|
+
* Normalising to "" (the same thing IncomingEmailCriteria does for the
|
|
180
|
+
* email fields) is what lets a "Not Contains" filter match a bodiless
|
|
181
|
+
* heartbeat ping - the default online criteria for this monitor type.
|
|
182
|
+
* "Contains" is unaffected: "" contains nothing.
|
|
183
|
+
*/
|
|
184
|
+
const body: string = (requestBody as string | undefined) || "";
|
|
174
185
|
|
|
175
186
|
// contains
|
|
176
187
|
if (input.criteriaFilter.filterType === FilterType.Contains) {
|
|
177
|
-
if (
|
|
178
|
-
value &&
|
|
179
|
-
responseBody &&
|
|
180
|
-
(responseBody as string).includes(value as string)
|
|
181
|
-
) {
|
|
188
|
+
if (value && body.includes(value as string)) {
|
|
182
189
|
return `Request body contains ${value}.`;
|
|
183
190
|
}
|
|
184
191
|
return null;
|
|
185
192
|
}
|
|
186
193
|
|
|
187
194
|
if (input.criteriaFilter.filterType === FilterType.NotContains) {
|
|
188
|
-
if (
|
|
189
|
-
value &&
|
|
190
|
-
responseBody &&
|
|
191
|
-
!(responseBody as string).includes(value as string)
|
|
192
|
-
) {
|
|
195
|
+
if (value && !body.includes(value as string)) {
|
|
193
196
|
return `Request body does not contain ${value}.`;
|
|
194
197
|
}
|
|
195
198
|
return null;
|
|
@@ -8,15 +8,21 @@ import {
|
|
|
8
8
|
} from "../../../../Types/Monitor/CriteriaFilter";
|
|
9
9
|
import SslMonitorResponse from "../../../../Types/Monitor/SSLMonitor/SslMonitorResponse";
|
|
10
10
|
import ProbeMonitorResponse from "../../../../Types/Probe/ProbeMonitorResponse";
|
|
11
|
-
import EvaluateOverTime from "./EvaluateOverTime";
|
|
11
|
+
import EvaluateOverTime, { OverTimeCriteriaValue } from "./EvaluateOverTime";
|
|
12
12
|
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
13
|
-
import logger from "../../Logger";
|
|
14
13
|
|
|
15
14
|
export default class ServerMonitorCriteria {
|
|
16
15
|
@CaptureSpan()
|
|
17
16
|
public static async isMonitorInstanceCriteriaFilterMet(input: {
|
|
18
17
|
dataToProcess: DataToProcess;
|
|
19
18
|
criteriaFilter: CriteriaFilter;
|
|
19
|
+
/*
|
|
20
|
+
* The monitor's monitoringInterval cron. Over-time filters use it to
|
|
21
|
+
* work out how many samples a fully covered window should hold, so a
|
|
22
|
+
* monitor that has only just started is not mistaken for one whose
|
|
23
|
+
* whole window is breaching.
|
|
24
|
+
*/
|
|
25
|
+
monitoringInterval?: string | undefined;
|
|
20
26
|
}): Promise<string | null> {
|
|
21
27
|
let threshold: number | string | undefined | null =
|
|
22
28
|
input.criteriaFilter.value;
|
|
@@ -27,36 +33,35 @@ export default class ServerMonitorCriteria {
|
|
|
27
33
|
const sslResponse: SslMonitorResponse | undefined =
|
|
28
34
|
dataToProcess.sslResponse;
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
const overTime: OverTimeCriteriaValue =
|
|
37
|
+
await EvaluateOverTime.getOverTimeValueForCriteriaFilter({
|
|
38
|
+
projectId: (input.dataToProcess as ProbeMonitorResponse).projectId,
|
|
39
|
+
monitorId: input.dataToProcess.monitorId!,
|
|
40
|
+
criteriaFilter: input.criteriaFilter,
|
|
41
|
+
monitoringInterval: input.monitoringInterval,
|
|
42
|
+
});
|
|
32
43
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (Array.isArray(overTimeValue) && overTimeValue.length === 0) {
|
|
46
|
-
overTimeValue = undefined;
|
|
47
|
-
}
|
|
48
|
-
} catch (err) {
|
|
49
|
-
logger.error(
|
|
50
|
-
`Error in getting over time value for ${input.criteriaFilter.checkOn}`,
|
|
51
|
-
);
|
|
52
|
-
logger.error(err);
|
|
53
|
-
overTimeValue = undefined;
|
|
54
|
-
}
|
|
44
|
+
/*
|
|
45
|
+
* The window could not back this over-time filter (nothing recorded yet,
|
|
46
|
+
* or the monitor has not been running long enough to cover it). Return
|
|
47
|
+
* the decision the no-data policy already made instead of falling
|
|
48
|
+
* through to the value that arrived with this one check - that fallback
|
|
49
|
+
* is what let "all values over the last N minutes" fire off a single
|
|
50
|
+
* bad reading.
|
|
51
|
+
*/
|
|
52
|
+
if (overTime.earlyReturn) {
|
|
53
|
+
return overTime.earlyReturn.result;
|
|
55
54
|
}
|
|
56
55
|
|
|
56
|
+
const overTimeValue:
|
|
57
|
+
| Array<number | boolean>
|
|
58
|
+
| number
|
|
59
|
+
| boolean
|
|
60
|
+
| undefined = overTime.value;
|
|
61
|
+
|
|
57
62
|
if (input.criteriaFilter.checkOn === CheckOn.IsOnline) {
|
|
58
63
|
const currentIsOnline: boolean | Array<boolean> =
|
|
59
|
-
(overTimeValue as Array<boolean>)
|
|
64
|
+
(overTimeValue as Array<boolean>) ??
|
|
60
65
|
(input.dataToProcess as ProbeMonitorResponse).isOnline;
|
|
61
66
|
|
|
62
67
|
return CompareCriteria.compareCriteriaBoolean({
|
|
@@ -68,7 +73,7 @@ export default class ServerMonitorCriteria {
|
|
|
68
73
|
// timeout.
|
|
69
74
|
if (input.criteriaFilter.checkOn === CheckOn.IsRequestTimeout) {
|
|
70
75
|
const currentIsTimeout: boolean | Array<boolean> =
|
|
71
|
-
(overTimeValue as Array<boolean>)
|
|
76
|
+
(overTimeValue as Array<boolean>) ??
|
|
72
77
|
(input.dataToProcess as ProbeMonitorResponse).isTimeout;
|
|
73
78
|
|
|
74
79
|
return CompareCriteria.compareCriteriaBoolean({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import DataToProcess from "../DataToProcess";
|
|
2
2
|
import CompareCriteria from "./CompareCriteria";
|
|
3
|
-
import EvaluateOverTime from "./EvaluateOverTime";
|
|
3
|
+
import EvaluateOverTime, { OverTimeCriteriaValue } from "./EvaluateOverTime";
|
|
4
4
|
import OneUptimeDate from "../../../../Types/Date";
|
|
5
5
|
import { BasicDiskMetrics } from "../../../../Types/Infrastructure/BasicMetrics";
|
|
6
6
|
import { JSONObject } from "../../../../Types/JSON";
|
|
@@ -20,39 +20,60 @@ export default class ServerMonitorCriteria {
|
|
|
20
20
|
public static async isMonitorInstanceCriteriaFilterMet(input: {
|
|
21
21
|
dataToProcess: DataToProcess;
|
|
22
22
|
criteriaFilter: CriteriaFilter;
|
|
23
|
+
/*
|
|
24
|
+
* The monitor's monitoringInterval cron. Over-time filters use it to
|
|
25
|
+
* work out how many samples a fully covered window should hold, so a
|
|
26
|
+
* monitor that has only just started is not mistaken for one whose
|
|
27
|
+
* whole window is breaching.
|
|
28
|
+
*/
|
|
29
|
+
monitoringInterval?: string | undefined;
|
|
23
30
|
}): Promise<string | null> {
|
|
24
31
|
// Server Monitoring Checks
|
|
25
32
|
|
|
26
33
|
let threshold: number | string | undefined | null =
|
|
27
34
|
input.criteriaFilter.value;
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
const overTime: OverTimeCriteriaValue =
|
|
36
|
+
await EvaluateOverTime.getOverTimeValueForCriteriaFilter({
|
|
37
|
+
projectId: (input.dataToProcess as ServerMonitorResponse).projectId,
|
|
38
|
+
monitorId: input.dataToProcess.monitorId!,
|
|
39
|
+
criteriaFilter: input.criteriaFilter,
|
|
40
|
+
/*
|
|
41
|
+
* Only the disk-usage series carries a diskPath attribute, so
|
|
42
|
+
* scoping any other series by it would filter against an attribute
|
|
43
|
+
* no row has - and an empty window now means "cannot judge yet"
|
|
44
|
+
* rather than "compare the live value", which would silence the
|
|
45
|
+
* filter outright.
|
|
46
|
+
*/
|
|
47
|
+
miscData:
|
|
48
|
+
input.criteriaFilter.checkOn === CheckOn.DiskUsagePercent
|
|
49
|
+
? (input.criteriaFilter.serverMonitorOptions as JSONObject)
|
|
50
|
+
: undefined,
|
|
51
|
+
monitoringInterval: input.monitoringInterval,
|
|
52
|
+
});
|
|
30
53
|
|
|
54
|
+
/*
|
|
55
|
+
* The window could not back this over-time filter, so the no-data policy
|
|
56
|
+
* has already decided it - do not fall through to the value that arrived
|
|
57
|
+
* with this one check.
|
|
58
|
+
*
|
|
59
|
+
* "Is Online" is exempt: for a server monitor the absence of data IS the
|
|
60
|
+
* signal, and the differenceInMinutes check below already implements the
|
|
61
|
+
* "wait this long before calling it offline" behaviour off the agent's
|
|
62
|
+
* last check-in time. Letting it fall through preserves that.
|
|
63
|
+
*/
|
|
31
64
|
if (
|
|
32
|
-
|
|
33
|
-
input.criteriaFilter.
|
|
65
|
+
overTime.earlyReturn &&
|
|
66
|
+
input.criteriaFilter.checkOn !== CheckOn.IsOnline
|
|
34
67
|
) {
|
|
35
|
-
|
|
36
|
-
overTimeValue = await EvaluateOverTime.getValueOverTime({
|
|
37
|
-
projectId: (input.dataToProcess as ServerMonitorResponse).projectId,
|
|
38
|
-
monitorId: input.dataToProcess.monitorId!,
|
|
39
|
-
evaluateOverTimeOptions: input.criteriaFilter.evaluateOverTimeOptions,
|
|
40
|
-
metricType: input.criteriaFilter.checkOn,
|
|
41
|
-
miscData: input.criteriaFilter.serverMonitorOptions as JSONObject,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
if (Array.isArray(overTimeValue) && overTimeValue.length === 0) {
|
|
45
|
-
overTimeValue = undefined;
|
|
46
|
-
}
|
|
47
|
-
} catch (err) {
|
|
48
|
-
logger.error(
|
|
49
|
-
`Error in getting over time value for ${input.criteriaFilter.checkOn}`,
|
|
50
|
-
);
|
|
51
|
-
logger.error(err);
|
|
52
|
-
overTimeValue = undefined;
|
|
53
|
-
}
|
|
68
|
+
return overTime.earlyReturn.result;
|
|
54
69
|
}
|
|
55
70
|
|
|
71
|
+
const overTimeValue:
|
|
72
|
+
| Array<number | boolean>
|
|
73
|
+
| number
|
|
74
|
+
| boolean
|
|
75
|
+
| undefined = overTime.value;
|
|
76
|
+
|
|
56
77
|
const lastCheckTime: Date = (input.dataToProcess as ServerMonitorResponse)
|
|
57
78
|
.requestReceivedAt;
|
|
58
79
|
|
|
@@ -108,7 +129,7 @@ export default class ServerMonitorCriteria {
|
|
|
108
129
|
differenceInMinutes >= offlineIfNotCheckedInMinutes
|
|
109
130
|
) {
|
|
110
131
|
const currentIsOnline: boolean | Array<boolean> =
|
|
111
|
-
(overTimeValue as Array<boolean>)
|
|
132
|
+
(overTimeValue as Array<boolean>) ?? false; // false because no request receieved in the last 2 minutes
|
|
112
133
|
|
|
113
134
|
logger.debug(`Current Is Online: ${currentIsOnline}`);
|
|
114
135
|
|
|
@@ -127,7 +148,7 @@ export default class ServerMonitorCriteria {
|
|
|
127
148
|
differenceInMinutes < offlineIfNotCheckedInMinutes
|
|
128
149
|
) {
|
|
129
150
|
const currentIsOnline: boolean | Array<boolean> =
|
|
130
|
-
(overTimeValue as Array<boolean>)
|
|
151
|
+
(overTimeValue as Array<boolean>) ?? true; // true because request receieved in the last 2 minutes
|
|
131
152
|
|
|
132
153
|
logger.debug(`Current Is Online: ${currentIsOnline}`);
|
|
133
154
|
|
|
@@ -148,10 +169,10 @@ export default class ServerMonitorCriteria {
|
|
|
148
169
|
threshold = CompareCriteria.convertToNumber(threshold);
|
|
149
170
|
|
|
150
171
|
const currentCpuPercent: number | Array<number> =
|
|
151
|
-
(overTimeValue as Array<number>)
|
|
152
|
-
(input.dataToProcess as ServerMonitorResponse)
|
|
172
|
+
(overTimeValue as Array<number>) ??
|
|
173
|
+
((input.dataToProcess as ServerMonitorResponse)
|
|
153
174
|
.basicInfrastructureMetrics?.cpuMetrics.percentUsed ||
|
|
154
|
-
|
|
175
|
+
0);
|
|
155
176
|
|
|
156
177
|
return CompareCriteria.compareCriteriaNumbers({
|
|
157
178
|
value: currentCpuPercent,
|
|
@@ -167,10 +188,10 @@ export default class ServerMonitorCriteria {
|
|
|
167
188
|
threshold = CompareCriteria.convertToNumber(threshold);
|
|
168
189
|
|
|
169
190
|
const memoryPercent: number | Array<number> =
|
|
170
|
-
(overTimeValue as Array<number>)
|
|
171
|
-
(input.dataToProcess as ServerMonitorResponse)
|
|
191
|
+
(overTimeValue as Array<number>) ??
|
|
192
|
+
((input.dataToProcess as ServerMonitorResponse)
|
|
172
193
|
.basicInfrastructureMetrics?.memoryMetrics.percentUsed ||
|
|
173
|
-
|
|
194
|
+
0);
|
|
174
195
|
|
|
175
196
|
return CompareCriteria.compareCriteriaNumbers({
|
|
176
197
|
value: memoryPercent,
|
|
@@ -201,8 +222,16 @@ export default class ServerMonitorCriteria {
|
|
|
201
222
|
const diskUsagePercent: number =
|
|
202
223
|
diskMetric?.percentUsed ?? diskMetric?.percentFree ?? 0;
|
|
203
224
|
|
|
225
|
+
/*
|
|
226
|
+
* Disk usage was the one server metric that computed its over-time
|
|
227
|
+
* window and then threw it away, comparing the reading from this check
|
|
228
|
+
* instead - so "evaluate over time" was a no-op here.
|
|
229
|
+
*/
|
|
230
|
+
const value: number | Array<number> =
|
|
231
|
+
(overTimeValue as Array<number>) ?? diskUsagePercent;
|
|
232
|
+
|
|
204
233
|
return CompareCriteria.compareCriteriaNumbers({
|
|
205
|
-
value:
|
|
234
|
+
value: value,
|
|
206
235
|
threshold: threshold as number,
|
|
207
236
|
criteriaFilter: input.criteriaFilter,
|
|
208
237
|
});
|
|
@@ -232,7 +261,7 @@ export default class ServerMonitorCriteria {
|
|
|
232
261
|
}
|
|
233
262
|
|
|
234
263
|
const value: number | Array<number> =
|
|
235
|
-
(overTimeValue as Array<number>)
|
|
264
|
+
(overTimeValue as Array<number>) ?? (currentLoad || 0);
|
|
236
265
|
|
|
237
266
|
return CompareCriteria.compareCriteriaNumbers({
|
|
238
267
|
value: value,
|
|
@@ -248,10 +277,10 @@ export default class ServerMonitorCriteria {
|
|
|
248
277
|
threshold = CompareCriteria.convertToNumber(threshold);
|
|
249
278
|
|
|
250
279
|
const swapPercent: number | Array<number> =
|
|
251
|
-
(overTimeValue as Array<number>)
|
|
252
|
-
(input.dataToProcess as ServerMonitorResponse)
|
|
280
|
+
(overTimeValue as Array<number>) ??
|
|
281
|
+
((input.dataToProcess as ServerMonitorResponse)
|
|
253
282
|
.basicInfrastructureMetrics?.memoryMetrics?.swapPercentUsed ||
|
|
254
|
-
|
|
283
|
+
0);
|
|
255
284
|
|
|
256
285
|
return CompareCriteria.compareCriteriaNumbers({
|
|
257
286
|
value: swapPercent,
|
|
@@ -267,10 +296,10 @@ export default class ServerMonitorCriteria {
|
|
|
267
296
|
threshold = CompareCriteria.convertToNumber(threshold);
|
|
268
297
|
|
|
269
298
|
const ioWaitPercent: number | Array<number> =
|
|
270
|
-
(overTimeValue as Array<number>)
|
|
271
|
-
(input.dataToProcess as ServerMonitorResponse)
|
|
299
|
+
(overTimeValue as Array<number>) ??
|
|
300
|
+
((input.dataToProcess as ServerMonitorResponse)
|
|
272
301
|
.basicInfrastructureMetrics?.cpuMetrics?.timeIoWaitPercent ||
|
|
273
|
-
|
|
302
|
+
0);
|
|
274
303
|
|
|
275
304
|
return CompareCriteria.compareCriteriaNumbers({
|
|
276
305
|
value: ioWaitPercent,
|
|
@@ -16,7 +16,7 @@ import SnmpMonitorResponse, {
|
|
|
16
16
|
} from "../../../../Types/Monitor/SnmpMonitor/SnmpMonitorResponse";
|
|
17
17
|
import SnmpTrap from "../../../../Types/Monitor/SnmpMonitor/SnmpTrap";
|
|
18
18
|
import ProbeMonitorResponse from "../../../../Types/Probe/ProbeMonitorResponse";
|
|
19
|
-
import EvaluateOverTime from "./EvaluateOverTime";
|
|
19
|
+
import EvaluateOverTime, { OverTimeCriteriaValue } from "./EvaluateOverTime";
|
|
20
20
|
import MetricBaselineService, {
|
|
21
21
|
BaselineSummary,
|
|
22
22
|
MetricBaselineService as MetricBaselineServiceClass,
|
|
@@ -173,6 +173,13 @@ export default class SnmpMonitorCriteria {
|
|
|
173
173
|
public static async isMonitorInstanceCriteriaFilterMet(input: {
|
|
174
174
|
dataToProcess: DataToProcess;
|
|
175
175
|
criteriaFilter: CriteriaFilter;
|
|
176
|
+
/*
|
|
177
|
+
* The monitor's monitoringInterval cron. Over-time filters use it to
|
|
178
|
+
* work out how many samples a fully covered window should hold, so a
|
|
179
|
+
* monitor that has only just started is not mistaken for one whose
|
|
180
|
+
* whole window is breaching.
|
|
181
|
+
*/
|
|
182
|
+
monitoringInterval?: string | undefined;
|
|
176
183
|
}): Promise<string | null> {
|
|
177
184
|
let threshold: number | string | undefined | null =
|
|
178
185
|
input.criteriaFilter.value;
|
|
@@ -240,37 +247,36 @@ export default class SnmpMonitorCriteria {
|
|
|
240
247
|
return null;
|
|
241
248
|
}
|
|
242
249
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
try {
|
|
251
|
-
overTimeValue = await EvaluateOverTime.getValueOverTime({
|
|
252
|
-
projectId: (input.dataToProcess as ProbeMonitorResponse).projectId,
|
|
253
|
-
monitorId: input.dataToProcess.monitorId!,
|
|
254
|
-
evaluateOverTimeOptions: input.criteriaFilter.evaluateOverTimeOptions,
|
|
255
|
-
metricType: input.criteriaFilter.checkOn,
|
|
256
|
-
});
|
|
250
|
+
const overTime: OverTimeCriteriaValue =
|
|
251
|
+
await EvaluateOverTime.getOverTimeValueForCriteriaFilter({
|
|
252
|
+
projectId: (input.dataToProcess as ProbeMonitorResponse).projectId,
|
|
253
|
+
monitorId: input.dataToProcess.monitorId!,
|
|
254
|
+
criteriaFilter: input.criteriaFilter,
|
|
255
|
+
monitoringInterval: input.monitoringInterval,
|
|
256
|
+
});
|
|
257
257
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
258
|
+
/*
|
|
259
|
+
* The window could not back this over-time filter (nothing recorded yet,
|
|
260
|
+
* or the monitor has not been running long enough to cover it). Return
|
|
261
|
+
* the decision the no-data policy already made instead of falling
|
|
262
|
+
* through to the value that arrived with this one check - that fallback
|
|
263
|
+
* is what let "all values over the last N minutes" fire off a single
|
|
264
|
+
* bad reading.
|
|
265
|
+
*/
|
|
266
|
+
if (overTime.earlyReturn) {
|
|
267
|
+
return overTime.earlyReturn.result;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
+
const overTimeValue:
|
|
271
|
+
| Array<number | boolean>
|
|
272
|
+
| number
|
|
273
|
+
| boolean
|
|
274
|
+
| undefined = overTime.value;
|
|
275
|
+
|
|
270
276
|
// Check if SNMP device is online
|
|
271
277
|
if (input.criteriaFilter.checkOn === CheckOn.SnmpIsOnline) {
|
|
272
278
|
const currentIsOnline: boolean | Array<boolean> =
|
|
273
|
-
(overTimeValue as Array<boolean>)
|
|
279
|
+
(overTimeValue as Array<boolean>) ??
|
|
274
280
|
(input.dataToProcess as ProbeMonitorResponse).isOnline;
|
|
275
281
|
|
|
276
282
|
return CompareCriteria.compareCriteriaBoolean({
|
|
@@ -288,9 +294,9 @@ export default class SnmpMonitorCriteria {
|
|
|
288
294
|
}
|
|
289
295
|
|
|
290
296
|
const currentResponseTime: number | Array<number> =
|
|
291
|
-
(overTimeValue as Array<number>)
|
|
292
|
-
snmpResponse?.responseTimeInMs ||
|
|
293
|
-
|
|
297
|
+
(overTimeValue as Array<number>) ??
|
|
298
|
+
(snmpResponse?.responseTimeInMs ||
|
|
299
|
+
(input.dataToProcess as ProbeMonitorResponse).responseTimeInMs);
|
|
294
300
|
|
|
295
301
|
if (currentResponseTime === null || currentResponseTime === undefined) {
|
|
296
302
|
return null;
|
|
@@ -24,11 +24,11 @@ import NetworkDeviceOwnerUserService, {
|
|
|
24
24
|
import logger, { LogAttributes } from "../Logger";
|
|
25
25
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
26
26
|
import DataToProcess from "./DataToProcess";
|
|
27
|
-
import
|
|
28
|
-
MonitorClusterContext,
|
|
29
|
-
} from "./MonitorClusterContext";
|
|
27
|
+
import MonitorResourceContextUtil from "./MonitorResourceContext";
|
|
30
28
|
import MonitorTemplateUtil from "./MonitorTemplateUtil";
|
|
31
|
-
import SeriesResourceLinker
|
|
29
|
+
import SeriesResourceLinker, {
|
|
30
|
+
SeriesResolvedResourceIds,
|
|
31
|
+
} from "./SeriesResourceLinker";
|
|
32
32
|
import MonitorDependencySuppression, {
|
|
33
33
|
DependencySuppressionResult,
|
|
34
34
|
} from "./MonitorDependencySuppression";
|
|
@@ -322,15 +322,17 @@ export default class MonitorAlert {
|
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
/*
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
*
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
325
|
+
* Resolve the resources this monitor's own config names — its host,
|
|
326
|
+
* cluster, fleet, telemetry services, or the resource its metric
|
|
327
|
+
* filters scope it to — once per evaluation, so every alert created
|
|
328
|
+
* below is attached to them. Series labels cannot supply this: they
|
|
329
|
+
* only exist for grouped criteria, and most monitors (every shipped
|
|
330
|
+
* Host/Docker/Podman template, all Logs/Traces/Exceptions monitors)
|
|
331
|
+
* are ungrouped. No-op, and no round-trip, for monitor types whose
|
|
332
|
+
* config names no resource.
|
|
331
333
|
*/
|
|
332
|
-
const
|
|
333
|
-
await
|
|
334
|
+
const resourceContext: SeriesResolvedResourceIds =
|
|
335
|
+
await MonitorResourceContextUtil.resolveResourceContextForMonitor({
|
|
334
336
|
monitor: input.monitor,
|
|
335
337
|
});
|
|
336
338
|
|
|
@@ -556,21 +558,22 @@ export default class MonitorAlert {
|
|
|
556
558
|
model: alert,
|
|
557
559
|
seriesLabels,
|
|
558
560
|
projectId: input.monitor.projectId!,
|
|
561
|
+
monitorType: input.monitor.monitorType,
|
|
559
562
|
});
|
|
560
563
|
}
|
|
561
564
|
|
|
562
565
|
/*
|
|
563
|
-
* Deterministic
|
|
564
|
-
*
|
|
565
|
-
*
|
|
566
|
-
*
|
|
567
|
-
*
|
|
568
|
-
*
|
|
569
|
-
*
|
|
566
|
+
* Deterministic resource link from the monitor's step config
|
|
567
|
+
* (resolved once above). For most monitor types this — not the
|
|
568
|
+
* label path above — is what makes the per-resource Activity
|
|
569
|
+
* tabs and badge counts see monitor-created alerts, because
|
|
570
|
+
* their criteria are ungrouped and emit no series labels at
|
|
571
|
+
* all. Runs for both grouped and ungrouped alerts, and merges
|
|
572
|
+
* with whatever the labels resolved.
|
|
570
573
|
*/
|
|
571
|
-
SeriesResourceLinker.
|
|
574
|
+
SeriesResourceLinker.attachResolvedResources({
|
|
572
575
|
model: alert,
|
|
573
|
-
|
|
576
|
+
resolved: resourceContext,
|
|
574
577
|
});
|
|
575
578
|
|
|
576
579
|
alert.onCallDutyPolicies =
|
|
@@ -666,6 +666,7 @@ ${contextBlock}
|
|
|
666
666
|
await APIRequestCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
667
667
|
dataToProcess: input.dataToProcess,
|
|
668
668
|
criteriaFilter: input.criteriaFilter,
|
|
669
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
669
670
|
});
|
|
670
671
|
|
|
671
672
|
if (apiRequestCriteriaResult) {
|
|
@@ -711,6 +712,7 @@ ${contextBlock}
|
|
|
711
712
|
await IncomingRequestCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
712
713
|
dataToProcess: input.dataToProcess,
|
|
713
714
|
criteriaFilter: input.criteriaFilter,
|
|
715
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
714
716
|
});
|
|
715
717
|
|
|
716
718
|
if (incomingRequestResult) {
|
|
@@ -735,6 +737,7 @@ ${contextBlock}
|
|
|
735
737
|
await SSLMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
736
738
|
dataToProcess: input.dataToProcess,
|
|
737
739
|
criteriaFilter: input.criteriaFilter,
|
|
740
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
738
741
|
});
|
|
739
742
|
|
|
740
743
|
if (sslMonitorResult) {
|
|
@@ -747,6 +750,7 @@ ${contextBlock}
|
|
|
747
750
|
await ServerMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
748
751
|
dataToProcess: input.dataToProcess,
|
|
749
752
|
criteriaFilter: input.criteriaFilter,
|
|
753
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
750
754
|
});
|
|
751
755
|
|
|
752
756
|
if (serverMonitorResult) {
|
|
@@ -830,6 +834,7 @@ ${contextBlock}
|
|
|
830
834
|
await SnmpMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
831
835
|
dataToProcess: input.dataToProcess,
|
|
832
836
|
criteriaFilter: input.criteriaFilter,
|
|
837
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
833
838
|
});
|
|
834
839
|
|
|
835
840
|
if (snmpMonitorResult) {
|
|
@@ -842,6 +847,7 @@ ${contextBlock}
|
|
|
842
847
|
await DnsMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
843
848
|
dataToProcess: input.dataToProcess,
|
|
844
849
|
criteriaFilter: input.criteriaFilter,
|
|
850
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
845
851
|
});
|
|
846
852
|
|
|
847
853
|
if (dnsMonitorResult) {
|
|
@@ -854,6 +860,7 @@ ${contextBlock}
|
|
|
854
860
|
await DomainMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
|
|
855
861
|
dataToProcess: input.dataToProcess,
|
|
856
862
|
criteriaFilter: input.criteriaFilter,
|
|
863
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
857
864
|
});
|
|
858
865
|
|
|
859
866
|
if (domainMonitorResult) {
|
|
@@ -891,6 +898,7 @@ ${contextBlock}
|
|
|
891
898
|
{
|
|
892
899
|
dataToProcess: input.dataToProcess,
|
|
893
900
|
criteriaFilter: input.criteriaFilter,
|
|
901
|
+
monitoringInterval: input.monitor.monitoringInterval,
|
|
894
902
|
},
|
|
895
903
|
);
|
|
896
904
|
|