@oneuptime/common 11.4.0 → 11.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/AIRun.ts +50 -0
- package/Models/DatabaseModels/AlertSeverity.ts +6 -0
- package/Models/DatabaseModels/IncidentSeverity.ts +6 -0
- package/Models/DatabaseModels/Index.ts +16 -0
- package/Models/DatabaseModels/IoTDeviceCredential.ts +471 -0
- package/Models/DatabaseModels/LlmLog.ts +56 -0
- package/Models/DatabaseModels/LlmProvider.ts +33 -0
- package/Models/DatabaseModels/NetworkDevice.ts +1385 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +717 -0
- package/Models/DatabaseModels/NetworkDeviceLabelRule.ts +514 -0
- package/Models/DatabaseModels/NetworkDeviceOwnerRule.ts +596 -0
- package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +487 -0
- package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +486 -0
- package/Models/DatabaseModels/NetworkInterface.ts +563 -0
- package/Models/DatabaseModels/Project.ts +145 -0
- package/Models/DatabaseModels/TelemetryEntityRelationship.ts +54 -0
- package/Server/API/AIAgentTaskAPI.ts +10 -24
- package/Server/API/AIInvestigationAPI.ts +131 -63
- package/Server/API/AlertAPI.ts +5 -0
- package/Server/API/IncidentAPI.ts +10 -0
- package/Server/API/IncidentEpisodeAPI.ts +5 -0
- package/Server/API/LlmProviderAPI.ts +4 -0
- package/Server/API/ScheduledMaintenanceAPI.ts +5 -0
- package/Server/API/TelemetryAPI.ts +4 -3
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.ts +105 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.ts +15 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.ts +192 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.ts +79 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +24 -0
- package/Server/Services/AIAgentTaskService.ts +62 -0
- package/Server/Services/AIRunService.ts +58 -0
- package/Server/Services/AIService.ts +101 -0
- package/Server/Services/AnalyticsDatabaseService.ts +27 -0
- package/Server/Services/IncidentService.ts +14 -41
- package/Server/Services/Index.ts +14 -0
- package/Server/Services/IoTDeviceCredentialService.ts +351 -0
- package/Server/Services/IoTDeviceService.ts +64 -21
- package/Server/Services/LlmLogService.ts +26 -0
- package/Server/Services/LlmProviderService.ts +3 -0
- package/Server/Services/LogAggregationService.ts +29 -11
- package/Server/Services/MetricService.ts +603 -13
- package/Server/Services/MonitorService.ts +4 -1
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +10 -0
- package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +204 -0
- package/Server/Services/NetworkDeviceLabelRuleService.ts +14 -0
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +222 -0
- package/Server/Services/NetworkDeviceOwnerRuleService.ts +14 -0
- package/Server/Services/NetworkDeviceOwnerTeamService.ts +10 -0
- package/Server/Services/NetworkDeviceOwnerUserService.ts +10 -0
- package/Server/Services/NetworkDeviceService.ts +50 -0
- package/Server/Services/NetworkInterfaceService.ts +10 -0
- package/Server/Services/TelemetryEntityRelationshipService.ts +23 -0
- package/Server/Services/TelemetryEntityService.ts +72 -2
- package/Server/Utils/AI/Sentinel/AlertInvestigationRunner.ts +244 -12
- package/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.ts +92 -19
- package/Server/Utils/AI/Sentinel/InvestigationQueue.ts +493 -0
- package/Server/Utils/AI/Sentinel/README.md +10 -0
- package/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.ts +88 -68
- package/Server/Utils/AI/Toolbox/Index.ts +2 -1
- package/Server/Utils/AI/Toolbox/MetricTools.ts +391 -0
- package/Server/Utils/LLM/LLMService.ts +21 -0
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +44 -0
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +170 -2
- package/Server/Utils/Monitor/IoTDeviceAbsenceSeries.ts +101 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +1 -1
- package/Server/Utils/Monitor/MonitorIncident.ts +19 -3
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +195 -2
- package/Server/Utils/Monitor/MonitorResource.ts +77 -21
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -1
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +201 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +215 -0
- package/Server/Utils/Monitor/SnmpInterfaceRateUtil.ts +169 -0
- package/Tests/Server/Services/AIAgentTaskServiceClaim.test.ts +146 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +173 -0
- package/Tests/Server/Services/IncidentInternalNoteAnnouncement.test.ts +97 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +54 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +22 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +194 -0
- package/Tests/Server/Utils/AI/BaselineAnomalyTool.test.ts +253 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +44 -0
- package/Tests/Server/Utils/AI/SentinelAlertGating.test.ts +360 -0
- package/Tests/Server/Utils/AI/SentinelInvestigationQueue.test.ts +295 -0
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +59 -0
- package/Tests/Server/Utils/Monitor/IoTDeviceAbsenceSeries.test.ts +113 -0
- package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +198 -0
- package/Tests/Types/AI/AIAgentTaskStatus.test.ts +86 -0
- package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +127 -0
- package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.test.ts +152 -0
- package/Tests/Types/Monitor/MonitorType.test.ts +1 -1
- package/Tests/Types/Trace/TraceRecordingRuleDefinition.test.ts +308 -0
- package/Tests/UI/Components/Dropdown.test.tsx +17 -0
- package/Tests/UI/Components/EntityDropdown.test.tsx +130 -0
- package/Tests/UI/Components/Modal.test.tsx +144 -2
- package/Tests/UI/Components/TelemetrySearchBar.test.tsx +90 -0
- package/Tests/UI/Utils/Theme.test.ts +161 -0
- package/Tests/Utils/Monitor/LatencyMatrixUtil.test.ts +111 -0
- package/Types/AI/AIRunStatus.ts +9 -0
- package/Types/BaseDatabase/AggregateBy.ts +12 -0
- package/Types/Dashboard/DashboardComponentType.ts +1 -0
- package/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.ts +24 -0
- package/Types/Dashboard/DashboardTemplates.ts +9 -1
- package/Types/LlmLogStatus.ts +1 -0
- package/Types/Monitor/CriteriaFilter.ts +9 -0
- package/Types/Monitor/HttpPhaseTimings.ts +16 -0
- package/Types/Monitor/IotAlertTemplates.ts +22 -3
- package/Types/Monitor/LatencyMatrix.ts +27 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +2 -2
- package/Types/Monitor/MonitorMetricType.ts +27 -0
- package/Types/Monitor/MonitorStep.ts +36 -11
- package/Types/Monitor/MonitorStepNetworkDeviceMonitor.ts +55 -0
- package/Types/Monitor/MonitorStepSnmpMonitor.ts +8 -0
- package/Types/Monitor/MonitorType.ts +14 -9
- package/Types/Monitor/PingMonitor/PingMonitorResponse.ts +20 -0
- package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +12 -0
- package/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.ts +116 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +29 -0
- package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +31 -0
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +24 -0
- package/Types/Monitor/SnmpMonitor/SnmpTrap.ts +20 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +173 -0
- package/Types/Permission.ts +314 -0
- package/Types/Probe/ProbeMonitorResponse.ts +22 -0
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +8 -5
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +4 -1
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +6 -3
- package/UI/Components/CodeBlock/CodeBlock.tsx +2 -1
- package/UI/Components/CodeEditor/CodeEditor.tsx +3 -0
- package/UI/Components/Divider/Divider.tsx +1 -1
- package/UI/Components/Dropdown/Dropdown.tsx +13 -4
- package/UI/Components/EntityDropdown/EntityDropdown.tsx +110 -2
- package/UI/Components/ErrorBoundary.tsx +2 -1
- package/UI/Components/EventItem/EventItem.tsx +2 -2
- package/UI/Components/GanttChart/Bar/Index.tsx +1 -1
- package/UI/Components/Graphs/UptimeBarTooltip.tsx +30 -23
- package/UI/Components/Header/Header.tsx +7 -0
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +2 -0
- package/UI/Components/Icon/Icon.tsx +8 -6
- package/UI/Components/Label/Label.tsx +2 -2
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +22 -10
- package/UI/Components/LogsViewer/components/LogsHistogram.tsx +9 -3
- package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +8 -8
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +44 -20
- package/UI/Components/Modal/ConfirmModal.tsx +1 -1
- package/UI/Components/Modal/Modal.tsx +213 -121
- package/UI/Components/Modal/ModalFooter.tsx +33 -22
- package/UI/Components/ModelTable/TableView.tsx +1 -1
- package/UI/Components/MonitorGraphs/UptimeBarDayModal.tsx +20 -12
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +2 -2
- package/UI/Components/Pill/Pill.tsx +21 -13
- package/UI/Components/StatusBubble/StatusBubble.tsx +3 -3
- package/UI/Components/Tabs/Tabs.tsx +10 -1
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +7 -1
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +9 -3
- package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +62 -4
- package/UI/Components/Workflow/Component.tsx +53 -33
- package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -6
- package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +8 -8
- package/UI/Components/Workflow/ComponentsModal.tsx +16 -9
- package/UI/Components/Workflow/Workflow.tsx +13 -11
- package/UI/Utils/Navigation.ts +10 -1
- package/UI/Utils/Theme.ts +140 -0
- package/Utils/Dashboard/Components/DashboardLogChartComponent.ts +99 -0
- package/Utils/Dashboard/Components/Index.ts +7 -0
- package/Utils/Monitor/LatencyMatrixUtil.ts +162 -0
- package/Utils/Monitor/MonitorMetricType.ts +141 -3
- package/Utils/Monitor/NetworkTopologyUtil.ts +159 -0
- package/Utils/Telemetry/EntityRelationship.ts +11 -0
- package/build/dist/Models/DatabaseModels/AIRun.js +52 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +6 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +6 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js +493 -0
- package/build/dist/Models/DatabaseModels/IoTDeviceCredential.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LlmLog.js +58 -0
- package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LlmProvider.js +33 -0
- package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +1426 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +738 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +503 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +502 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +589 -0
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Project.js +147 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js +57 -0
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +8 -23
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +95 -55
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +5 -0
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +10 -0
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +5 -0
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/LlmProviderAPI.js +5 -7
- package/build/dist/Server/API/LlmProviderAPI.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +5 -0
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783695782697-AddCacheTokenColumnsToLlmLog.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783701585317-AddAlertInvestigationGating.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783702431535-AddAiDailyAutonomousTokenLimitToProject.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js +51 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783720000000-AddNetworkDeviceTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783721121260-AddAttemptCountToAIRun.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js +101 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783730000000-AddNetworkDeviceOwnersAndRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783740000000-AddNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783750000000-AddLldpNeighborsToNetworkDevice.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783760576655-AddInvestigationTuningToProject.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783762505482-AddTelemetryEntityRelationshipMetrics.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783780000000-AddIoTDeviceCredentialTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783790000000-AddSnmpV3AuthColumnsToNetworkDevice.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIAgentTaskService.js +59 -0
- package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +33 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +82 -9
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +19 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +14 -25
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +14 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTDeviceCredentialService.js +321 -0
- package/build/dist/Server/Services/IoTDeviceCredentialService.js.map +1 -0
- package/build/dist/Server/Services/IoTDeviceService.js +49 -15
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/LlmLogService.js +29 -0
- package/build/dist/Server/Services/LlmLogService.js.map +1 -1
- package/build/dist/Server/Services/LlmProviderService.js +3 -0
- package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +21 -7
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +449 -7
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +2 -1
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +9 -0
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +166 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js +13 -0
- package/build/dist/Server/Services/NetworkDeviceLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +186 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +9 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +52 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -0
- package/build/dist/Server/Services/NetworkInterfaceService.js +9 -0
- package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +22 -0
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryEntityService.js +64 -2
- package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
- package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js +189 -9
- package/build/dist/Server/Utils/AI/Sentinel/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js +84 -17
- package/build/dist/Server/Utils/AI/Sentinel/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js +428 -0
- package/build/dist/Server/Utils/AI/Sentinel/InvestigationQueue.js.map +1 -0
- package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js +63 -47
- package/build/dist/Server/Utils/AI/Sentinel/SentinelInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +2 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js +300 -0
- package/build/dist/Server/Utils/AI/Toolbox/MetricTools.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +16 -0
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +29 -0
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +130 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js +81 -0
- package/build/dist/Server/Utils/Monitor/IoTDeviceAbsenceSeries.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +18 -7
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -10
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +155 -5
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +76 -30
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +147 -0
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +167 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js +93 -0
- package/build/dist/Server/Utils/Monitor/SnmpInterfaceRateUtil.js.map +1 -0
- package/build/dist/Types/AI/AIRunStatus.js +9 -0
- package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardLogChartComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardTemplates.js +9 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/LlmLogStatus.js +1 -0
- package/build/dist/Types/LlmLogStatus.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +9 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/HttpPhaseTimings.js +2 -0
- package/build/dist/Types/Monitor/HttpPhaseTimings.js.map +1 -0
- package/build/dist/Types/Monitor/IotAlertTemplates.js +7 -7
- package/build/dist/Types/Monitor/IotAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/LatencyMatrix.js +2 -0
- package/build/dist/Types/Monitor/LatencyMatrix.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +2 -2
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorMetricType.js +24 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +22 -9
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js +36 -0
- package/build/dist/Types/Monitor/MonitorStepNetworkDeviceMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +3 -0
- package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +14 -9
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js +2 -0
- package/build/dist/Types/Monitor/PingMonitor/PingMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/LldpNeighbor.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js +89 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkDeviceAlertPack.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/NetworkTopology.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpInterface.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpTrap.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +137 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -0
- package/build/dist/Types/Permission.js +280 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +7 -4
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +4 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -3
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js +3 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
- package/build/dist/UI/Components/Divider/Divider.js +1 -1
- package/build/dist/UI/Components/Divider/Divider.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js +10 -4
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +76 -3
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
- package/build/dist/UI/Components/ErrorBoundary.js +2 -1
- package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
- package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
- package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/Bar/Index.js +1 -1
- package/build/dist/UI/Components/GanttChart/Bar/Index.js.map +1 -1
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +29 -23
- package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
- package/build/dist/UI/Components/Header/Header.js +1 -0
- package/build/dist/UI/Components/Header/Header.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +8 -6
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Label/Label.js +2 -2
- package/build/dist/UI/Components/Label/Label.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +20 -8
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +8 -2
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +8 -8
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +40 -20
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +109 -51
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +13 -10
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js +17 -12
- package/build/dist/UI/Components/MonitorGraphs/UptimeBarDayModal.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -2
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Pill/Pill.js +12 -13
- package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
- package/build/dist/UI/Components/StatusBubble/StatusBubble.js +3 -3
- package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
- package/build/dist/UI/Components/Tabs/Tabs.js +3 -1
- package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +36 -6
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Component.js +43 -33
- package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +6 -6
- package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +8 -8
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +15 -9
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Workflow.js +13 -11
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +11 -1
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/Theme.js +106 -0
- package/build/dist/UI/Utils/Theme.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js +89 -0
- package/build/dist/Utils/Dashboard/Components/DashboardLogChartComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Monitor/LatencyMatrixUtil.js +89 -0
- package/build/dist/Utils/Monitor/LatencyMatrixUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorMetricType.js +138 -4
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +112 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,12 @@ import MonitorStep from "./MonitorStep";
|
|
|
3
3
|
import MonitorCriteria from "./MonitorCriteria";
|
|
4
4
|
import MonitorCriteriaInstance from "./MonitorCriteriaInstance";
|
|
5
5
|
import FilterCondition from "../Filter/FilterCondition";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
CheckOn,
|
|
8
|
+
FilterType,
|
|
9
|
+
EvaluateOverTimeType,
|
|
10
|
+
NoDataPolicy,
|
|
11
|
+
} from "./CriteriaFilter";
|
|
7
12
|
import MonitorStepIoTMonitor from "./MonitorStepIoTMonitor";
|
|
8
13
|
import RollingTime from "../RollingTime/RollingTime";
|
|
9
14
|
import MetricsAggregationType from "../Metrics/MetricsAggregationType";
|
|
@@ -102,6 +107,16 @@ export function buildIoTOfflineCriteriaInstance(args: {
|
|
|
102
107
|
incidentDescription?: string;
|
|
103
108
|
criteriaName?: string;
|
|
104
109
|
criteriaDescription?: string;
|
|
110
|
+
/*
|
|
111
|
+
* Evaluate an empty (no data) series as 0 instead of skipping it.
|
|
112
|
+
* This is what lets REGISTERED devices that go completely silent
|
|
113
|
+
* trip the criteria: monitor evaluation injects an empty synthetic
|
|
114
|
+
* series per registered-but-silent device, TreatAsZero folds it to
|
|
115
|
+
* 0, and e.g. Min(iot_device_up) < 1 fires. Only the Device Offline
|
|
116
|
+
* template opts in — treating no-data as zero on a battery or
|
|
117
|
+
* temperature threshold would false-alarm for silent devices.
|
|
118
|
+
*/
|
|
119
|
+
treatNoDataAsZero?: boolean;
|
|
105
120
|
}): MonitorCriteriaInstance {
|
|
106
121
|
const instance: MonitorCriteriaInstance = new MonitorCriteriaInstance();
|
|
107
122
|
|
|
@@ -122,6 +137,9 @@ export function buildIoTOfflineCriteriaInstance(args: {
|
|
|
122
137
|
metricMonitorOptions: {
|
|
123
138
|
metricAggregationType: EvaluateOverTimeType.AnyValue,
|
|
124
139
|
metricAlias: args.metricAlias,
|
|
140
|
+
...(args.treatNoDataAsZero
|
|
141
|
+
? { onNoDataPolicy: NoDataPolicy.TreatAsZero }
|
|
142
|
+
: {}),
|
|
125
143
|
},
|
|
126
144
|
value: args.value,
|
|
127
145
|
},
|
|
@@ -356,10 +374,11 @@ const deviceOfflineTemplate: IoTAlertTemplate = {
|
|
|
356
374
|
filterType: FilterType.LessThan,
|
|
357
375
|
value: 1,
|
|
358
376
|
incidentTitle: `[IoT] Device Offline - ${args.monitorName}`,
|
|
359
|
-
incidentDescription: `An IoT device is reporting as down (iot_device_up = 0). The device is unreachable, powered off, or has lost connectivity to its gateway. Check the root cause for the affected device id, verify the device's power and network state, and confirm its gateway is forwarding telemetry.`,
|
|
377
|
+
incidentDescription: `An IoT device is reporting as down (iot_device_up = 0) or has stopped reporting entirely. The device is unreachable, powered off, or has lost connectivity to its gateway. Check the root cause for the affected device id, verify the device's power and network state, and confirm its gateway is forwarding telemetry.`,
|
|
360
378
|
criteriaName: "Device Offline - iot_device_up < 1",
|
|
361
379
|
criteriaDescription:
|
|
362
|
-
"Triggers when any device reports iot_device_up below 1 over the monitoring window.",
|
|
380
|
+
"Triggers when any device reports iot_device_up below 1 over the monitoring window, or when a registered device goes silent.",
|
|
381
|
+
treatNoDataAsZero: true,
|
|
363
382
|
}),
|
|
364
383
|
onlineCriteriaInstance: buildIoTOnlineCriteriaInstance({
|
|
365
384
|
onlineMonitorStatusId: args.onlineMonitorStatusId,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A probes × targets latency grid. Each cell is the latest response time a
|
|
3
|
+
* probe measured for a monitor, so operators can see at a glance which
|
|
4
|
+
* probe locations are slow to which targets. Built from each monitor's
|
|
5
|
+
* per-probe last-check snapshot; no new data collection.
|
|
6
|
+
*/
|
|
7
|
+
export interface LatencyMatrixAxisItem {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface LatencyMatrixCell {
|
|
13
|
+
monitorId: string;
|
|
14
|
+
probeId: string;
|
|
15
|
+
hasData: boolean;
|
|
16
|
+
latencyInMs?: number | undefined;
|
|
17
|
+
isOnline?: boolean | undefined;
|
|
18
|
+
// Age of the measurement in seconds, so the UI can dim stale cells.
|
|
19
|
+
ageInSeconds?: number | undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default interface LatencyMatrix {
|
|
23
|
+
monitors: Array<LatencyMatrixAxisItem>;
|
|
24
|
+
probes: Array<LatencyMatrixAxisItem>;
|
|
25
|
+
// Keyed cells[monitorId][probeId].
|
|
26
|
+
cells: Record<string, Record<string, LatencyMatrixCell>>;
|
|
27
|
+
}
|
|
@@ -415,7 +415,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
415
415
|
return monitorCriteriaInstance;
|
|
416
416
|
}
|
|
417
417
|
|
|
418
|
-
if (arg.monitorType === MonitorType.
|
|
418
|
+
if (arg.monitorType === MonitorType.NetworkDevice) {
|
|
419
419
|
const monitorCriteriaInstance: MonitorCriteriaInstance =
|
|
420
420
|
new MonitorCriteriaInstance();
|
|
421
421
|
|
|
@@ -616,7 +616,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
616
616
|
};
|
|
617
617
|
}
|
|
618
618
|
|
|
619
|
-
if (arg.monitorType === MonitorType.
|
|
619
|
+
if (arg.monitorType === MonitorType.NetworkDevice) {
|
|
620
620
|
monitorCriteriaInstance.data = {
|
|
621
621
|
id: ObjectID.generate().toString(),
|
|
622
622
|
monitorStatusId: arg.monitorStatusId,
|
|
@@ -7,6 +7,33 @@ enum MonitorMetricType {
|
|
|
7
7
|
IsOnline = "oneuptime.monitor.online",
|
|
8
8
|
ExecutionTime = "oneuptime.monitor.execution.time",
|
|
9
9
|
|
|
10
|
+
/*
|
|
11
|
+
* Packet-level network metrics. Emitted by Ping/IP monitors when the
|
|
12
|
+
* probe sends multiple echo requests per check; absent for older probes.
|
|
13
|
+
*/
|
|
14
|
+
PacketLossPercent = "oneuptime.monitor.ping.packet.loss.percent",
|
|
15
|
+
Jitter = "oneuptime.monitor.ping.jitter",
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* HTTP(S) phase breakdown. Emitted by Website/API monitors when the probe
|
|
19
|
+
* captured socket-level timings; absent behind proxies and on older probes.
|
|
20
|
+
*/
|
|
21
|
+
DnsLookupTime = "oneuptime.monitor.http.dns.lookup.time",
|
|
22
|
+
TcpConnectTime = "oneuptime.monitor.http.tcp.connect.time",
|
|
23
|
+
TlsHandshakeTime = "oneuptime.monitor.http.tls.handshake.time",
|
|
24
|
+
TimeToFirstByte = "oneuptime.monitor.http.time.to.first.byte",
|
|
25
|
+
DownloadTime = "oneuptime.monitor.http.download.time",
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Per-interface SNMP metrics. Emitted when interface monitoring is enabled
|
|
29
|
+
* on an SNMP monitor; one series per interface (interfaceName attribute).
|
|
30
|
+
*/
|
|
31
|
+
SnmpInterfaceOperStatus = "oneuptime.monitor.snmp.interface.oper.status",
|
|
32
|
+
SnmpInterfaceInBitsPerSecond = "oneuptime.monitor.snmp.interface.in.bits.per.second",
|
|
33
|
+
SnmpInterfaceOutBitsPerSecond = "oneuptime.monitor.snmp.interface.out.bits.per.second",
|
|
34
|
+
SnmpInterfaceUtilizationPercent = "oneuptime.monitor.snmp.interface.utilization.percent",
|
|
35
|
+
SnmpInterfaceErrorsPerSecond = "oneuptime.monitor.snmp.interface.errors.per.second",
|
|
36
|
+
|
|
10
37
|
/*
|
|
11
38
|
* Extended server/VM metrics. Emitted when the agent payload contains them;
|
|
12
39
|
* absent for older agents, which keeps the pipeline backwards-compatible.
|
|
@@ -29,6 +29,9 @@ import MonitorStepExceptionMonitor, {
|
|
|
29
29
|
import MonitorStepProfileMonitor, {
|
|
30
30
|
MonitorStepProfileMonitorUtil,
|
|
31
31
|
} from "./MonitorStepProfileMonitor";
|
|
32
|
+
import MonitorStepNetworkDeviceMonitor, {
|
|
33
|
+
MonitorStepNetworkDeviceMonitorUtil,
|
|
34
|
+
} from "./MonitorStepNetworkDeviceMonitor";
|
|
32
35
|
import MonitorStepSnmpMonitor, {
|
|
33
36
|
MonitorStepSnmpMonitorUtil,
|
|
34
37
|
} from "./MonitorStepSnmpMonitor";
|
|
@@ -168,9 +171,16 @@ export interface MonitorStepType {
|
|
|
168
171
|
// Profile monitor
|
|
169
172
|
profileMonitor?: MonitorStepProfileMonitor | undefined;
|
|
170
173
|
|
|
171
|
-
|
|
174
|
+
/*
|
|
175
|
+
* SNMP config carrier. For Network Device monitors this is populated
|
|
176
|
+
* server-side (hydrated from the referenced NetworkDevice) when work is
|
|
177
|
+
* handed to probes — it is never set by users.
|
|
178
|
+
*/
|
|
172
179
|
snmpMonitor?: MonitorStepSnmpMonitor | undefined;
|
|
173
180
|
|
|
181
|
+
// Network Device monitor (references a NetworkDevice resource)
|
|
182
|
+
networkDeviceMonitor?: MonitorStepNetworkDeviceMonitor | undefined;
|
|
183
|
+
|
|
174
184
|
// DNS monitor
|
|
175
185
|
dnsMonitor?: MonitorStepDnsMonitor | undefined;
|
|
176
186
|
|
|
@@ -239,6 +249,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
239
249
|
exceptionMonitor: undefined,
|
|
240
250
|
profileMonitor: undefined,
|
|
241
251
|
snmpMonitor: undefined,
|
|
252
|
+
networkDeviceMonitor: undefined,
|
|
242
253
|
dnsMonitor: undefined,
|
|
243
254
|
domainMonitor: undefined,
|
|
244
255
|
dnssecMonitor: undefined,
|
|
@@ -289,6 +300,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
289
300
|
exceptionMonitor: undefined,
|
|
290
301
|
profileMonitor: undefined,
|
|
291
302
|
snmpMonitor: undefined,
|
|
303
|
+
networkDeviceMonitor: undefined,
|
|
292
304
|
dnsMonitor: undefined,
|
|
293
305
|
domainMonitor: undefined,
|
|
294
306
|
dnssecMonitor: undefined,
|
|
@@ -476,6 +488,13 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
476
488
|
return this;
|
|
477
489
|
}
|
|
478
490
|
|
|
491
|
+
public setNetworkDeviceMonitor(
|
|
492
|
+
networkDeviceMonitor: MonitorStepNetworkDeviceMonitor,
|
|
493
|
+
): MonitorStep {
|
|
494
|
+
this.data!.networkDeviceMonitor = networkDeviceMonitor;
|
|
495
|
+
return this;
|
|
496
|
+
}
|
|
497
|
+
|
|
479
498
|
public setSnmpMonitor(snmpMonitor: MonitorStepSnmpMonitor): MonitorStep {
|
|
480
499
|
this.data!.snmpMonitor = snmpMonitor;
|
|
481
500
|
return this;
|
|
@@ -681,20 +700,17 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
681
700
|
return "Port is required";
|
|
682
701
|
}
|
|
683
702
|
|
|
684
|
-
if (monitorType === MonitorType.
|
|
685
|
-
if (!value.data.
|
|
686
|
-
return "
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
if (!value.data.snmpMonitor.hostname) {
|
|
690
|
-
return "SNMP hostname is required";
|
|
703
|
+
if (monitorType === MonitorType.NetworkDevice) {
|
|
704
|
+
if (!value.data.networkDeviceMonitor?.networkDeviceId) {
|
|
705
|
+
return "Network Device is required";
|
|
691
706
|
}
|
|
692
707
|
|
|
693
708
|
if (
|
|
694
|
-
!value.data.
|
|
695
|
-
value.data.
|
|
709
|
+
!value.data.networkDeviceMonitor.monitorInterfaces &&
|
|
710
|
+
(!value.data.networkDeviceMonitor.oids ||
|
|
711
|
+
value.data.networkDeviceMonitor.oids.length === 0)
|
|
696
712
|
) {
|
|
697
|
-
return "
|
|
713
|
+
return "Enable interface monitoring or configure at least one OID";
|
|
698
714
|
}
|
|
699
715
|
}
|
|
700
716
|
|
|
@@ -886,6 +902,11 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
886
902
|
snmpMonitor: this.data.snmpMonitor
|
|
887
903
|
? MonitorStepSnmpMonitorUtil.toJSON(this.data.snmpMonitor)
|
|
888
904
|
: undefined,
|
|
905
|
+
networkDeviceMonitor: this.data.networkDeviceMonitor
|
|
906
|
+
? MonitorStepNetworkDeviceMonitorUtil.toJSON(
|
|
907
|
+
this.data.networkDeviceMonitor,
|
|
908
|
+
)
|
|
909
|
+
: undefined,
|
|
889
910
|
dnsMonitor: this.data.dnsMonitor
|
|
890
911
|
? MonitorStepDnsMonitorUtil.toJSON(this.data.dnsMonitor)
|
|
891
912
|
: undefined,
|
|
@@ -1048,6 +1069,9 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1048
1069
|
snmpMonitor: json["snmpMonitor"]
|
|
1049
1070
|
? (json["snmpMonitor"] as JSONObject)
|
|
1050
1071
|
: undefined,
|
|
1072
|
+
networkDeviceMonitor: json["networkDeviceMonitor"]
|
|
1073
|
+
? (json["networkDeviceMonitor"] as JSONObject)
|
|
1074
|
+
: undefined,
|
|
1051
1075
|
dnsMonitor: json["dnsMonitor"]
|
|
1052
1076
|
? (json["dnsMonitor"] as JSONObject)
|
|
1053
1077
|
: undefined,
|
|
@@ -1116,6 +1140,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1116
1140
|
metricMonitor: Zod.any().optional(),
|
|
1117
1141
|
profileMonitor: Zod.any().optional(),
|
|
1118
1142
|
snmpMonitor: Zod.any().optional(),
|
|
1143
|
+
networkDeviceMonitor: Zod.any().optional(),
|
|
1119
1144
|
dnsMonitor: Zod.any().optional(),
|
|
1120
1145
|
domainMonitor: Zod.any().optional(),
|
|
1121
1146
|
dnssecMonitor: Zod.any().optional(),
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { JSONObject } from "../JSON";
|
|
2
|
+
import SnmpOid from "./SnmpMonitor/SnmpOid";
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Step configuration for Network Device monitors. Unlike the retired SNMP
|
|
6
|
+
* monitor type, the step carries no connection details — it references a
|
|
7
|
+
* NetworkDevice resource which owns the hostname, credentials, and
|
|
8
|
+
* interface inventory. The server hydrates the device's SNMP config into
|
|
9
|
+
* the step (as `snmpMonitor`) when handing work to probes.
|
|
10
|
+
*/
|
|
11
|
+
export default interface MonitorStepNetworkDeviceMonitor {
|
|
12
|
+
networkDeviceId: string | undefined;
|
|
13
|
+
monitorInterfaces: boolean;
|
|
14
|
+
oids: Array<SnmpOid>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class MonitorStepNetworkDeviceMonitorUtil {
|
|
18
|
+
public static getDefault(): MonitorStepNetworkDeviceMonitor {
|
|
19
|
+
return {
|
|
20
|
+
networkDeviceId: undefined,
|
|
21
|
+
monitorInterfaces: true,
|
|
22
|
+
oids: [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public static fromJSON(json: JSONObject): MonitorStepNetworkDeviceMonitor {
|
|
27
|
+
return {
|
|
28
|
+
networkDeviceId: (json["networkDeviceId"] as string) || undefined,
|
|
29
|
+
monitorInterfaces: json["monitorInterfaces"] !== false,
|
|
30
|
+
oids: ((json["oids"] as Array<JSONObject>) || []).map(
|
|
31
|
+
(oid: JSONObject) => {
|
|
32
|
+
return {
|
|
33
|
+
oid: (oid["oid"] as string) || "",
|
|
34
|
+
name: (oid["name"] as string) || undefined,
|
|
35
|
+
description: (oid["description"] as string) || undefined,
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public static toJSON(monitor: MonitorStepNetworkDeviceMonitor): JSONObject {
|
|
43
|
+
return {
|
|
44
|
+
networkDeviceId: monitor.networkDeviceId,
|
|
45
|
+
monitorInterfaces: monitor.monitorInterfaces,
|
|
46
|
+
oids: monitor.oids.map((oid: SnmpOid) => {
|
|
47
|
+
return {
|
|
48
|
+
oid: oid.oid,
|
|
49
|
+
name: oid.name,
|
|
50
|
+
description: oid.description,
|
|
51
|
+
};
|
|
52
|
+
}),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -15,6 +15,11 @@ export default interface MonitorStepSnmpMonitor {
|
|
|
15
15
|
oids: Array<SnmpOid>;
|
|
16
16
|
timeout: number;
|
|
17
17
|
retries: number;
|
|
18
|
+
/*
|
|
19
|
+
* When true, the probe walks the IF-MIB interface tables on every check
|
|
20
|
+
* and reports per-interface status, bandwidth, and error metrics.
|
|
21
|
+
*/
|
|
22
|
+
monitorInterfaces?: boolean | undefined;
|
|
18
23
|
}
|
|
19
24
|
|
|
20
25
|
export class MonitorStepSnmpMonitorUtil {
|
|
@@ -27,6 +32,7 @@ export class MonitorStepSnmpMonitorUtil {
|
|
|
27
32
|
oids: [],
|
|
28
33
|
timeout: 5000,
|
|
29
34
|
retries: 3,
|
|
35
|
+
monitorInterfaces: false,
|
|
30
36
|
};
|
|
31
37
|
}
|
|
32
38
|
|
|
@@ -46,6 +52,7 @@ export class MonitorStepSnmpMonitorUtil {
|
|
|
46
52
|
),
|
|
47
53
|
timeout: (json["timeout"] as number) || 5000,
|
|
48
54
|
retries: (json["retries"] as number) || 3,
|
|
55
|
+
monitorInterfaces: Boolean(json["monitorInterfaces"]),
|
|
49
56
|
};
|
|
50
57
|
}
|
|
51
58
|
|
|
@@ -97,6 +104,7 @@ export class MonitorStepSnmpMonitorUtil {
|
|
|
97
104
|
}),
|
|
98
105
|
timeout: monitor.timeout,
|
|
99
106
|
retries: monitor.retries,
|
|
107
|
+
monitorInterfaces: monitor.monitorInterfaces,
|
|
100
108
|
};
|
|
101
109
|
}
|
|
102
110
|
}
|
|
@@ -32,8 +32,13 @@ enum MonitorType {
|
|
|
32
32
|
Exceptions = "Exceptions",
|
|
33
33
|
Profiles = "Profiles",
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/*
|
|
36
|
+
* Network device monitoring (SNMP-based). Replaced the retired SNMP
|
|
37
|
+
* monitor type: instead of inline SNMP config, the monitor references a
|
|
38
|
+
* NetworkDevice resource that owns the credentials and interface
|
|
39
|
+
* inventory.
|
|
40
|
+
*/
|
|
41
|
+
NetworkDevice = "Network Device",
|
|
37
42
|
|
|
38
43
|
// DNS monitoring
|
|
39
44
|
DNS = "DNS",
|
|
@@ -95,7 +100,7 @@ export class MonitorTypeHelper {
|
|
|
95
100
|
},
|
|
96
101
|
{
|
|
97
102
|
label: "Network",
|
|
98
|
-
monitorTypes: [MonitorType.
|
|
103
|
+
monitorTypes: [MonitorType.NetworkDevice],
|
|
99
104
|
},
|
|
100
105
|
{
|
|
101
106
|
label: "Infrastructure",
|
|
@@ -332,10 +337,10 @@ export class MonitorTypeHelper {
|
|
|
332
337
|
icon: IconProp.Fire,
|
|
333
338
|
},
|
|
334
339
|
{
|
|
335
|
-
monitorType: MonitorType.
|
|
336
|
-
title: "
|
|
340
|
+
monitorType: MonitorType.NetworkDevice,
|
|
341
|
+
title: "Network Device",
|
|
337
342
|
description:
|
|
338
|
-
"This monitor type lets you monitor
|
|
343
|
+
"This monitor type lets you monitor a registered Network Device (switch, router, firewall, or access point) via SNMP — availability, interface status, bandwidth, and traps.",
|
|
339
344
|
icon: IconProp.Signal,
|
|
340
345
|
},
|
|
341
346
|
{
|
|
@@ -411,7 +416,7 @@ export class MonitorTypeHelper {
|
|
|
411
416
|
monitorType === MonitorType.SSLCertificate ||
|
|
412
417
|
monitorType === MonitorType.SyntheticMonitor ||
|
|
413
418
|
monitorType === MonitorType.CustomJavaScriptCode ||
|
|
414
|
-
monitorType === MonitorType.
|
|
419
|
+
monitorType === MonitorType.NetworkDevice ||
|
|
415
420
|
monitorType === MonitorType.DNS ||
|
|
416
421
|
monitorType === MonitorType.DNSSEC ||
|
|
417
422
|
monitorType === MonitorType.Domain ||
|
|
@@ -437,7 +442,7 @@ export class MonitorTypeHelper {
|
|
|
437
442
|
MonitorType.Traces,
|
|
438
443
|
MonitorType.Exceptions,
|
|
439
444
|
MonitorType.Profiles,
|
|
440
|
-
MonitorType.
|
|
445
|
+
MonitorType.NetworkDevice,
|
|
441
446
|
MonitorType.DNS,
|
|
442
447
|
MonitorType.DNSSEC,
|
|
443
448
|
MonitorType.Domain,
|
|
@@ -482,7 +487,7 @@ export class MonitorTypeHelper {
|
|
|
482
487
|
monitorType === MonitorType.SSLCertificate ||
|
|
483
488
|
monitorType === MonitorType.SyntheticMonitor ||
|
|
484
489
|
monitorType === MonitorType.CustomJavaScriptCode ||
|
|
485
|
-
monitorType === MonitorType.
|
|
490
|
+
monitorType === MonitorType.NetworkDevice ||
|
|
486
491
|
monitorType === MonitorType.DNS ||
|
|
487
492
|
monitorType === MonitorType.DNSSEC ||
|
|
488
493
|
monitorType === MonitorType.Domain ||
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Packet-level statistics captured by the Ping/IP monitor. Populated when
|
|
3
|
+
* the probe sends multiple ICMP echo requests per check. All RTT values
|
|
4
|
+
* are in milliseconds. Absent on older probes (single-echo pings) and when
|
|
5
|
+
* ICMP is blocked and the probe falls back to TCP port checks, which keeps
|
|
6
|
+
* the pipeline backwards-compatible.
|
|
7
|
+
*/
|
|
8
|
+
export default interface PingMonitorResponse {
|
|
9
|
+
packetsSent: number;
|
|
10
|
+
packetsReceived: number;
|
|
11
|
+
packetLossPercent: number;
|
|
12
|
+
minRoundTripTimeInMs?: number | undefined;
|
|
13
|
+
maxRoundTripTimeInMs?: number | undefined;
|
|
14
|
+
avgRoundTripTimeInMs?: number | undefined;
|
|
15
|
+
/*
|
|
16
|
+
* Jitter is the standard deviation of round-trip times across the
|
|
17
|
+
* packets sent in this check.
|
|
18
|
+
*/
|
|
19
|
+
jitterInMs?: number | undefined;
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One neighbor entry from a device's LLDP remote table (LLDP-MIB
|
|
3
|
+
* lldpRemTable). Captured by the probe alongside the interface walk; the
|
|
4
|
+
* server matches remoteSysName / remoteChassisId against known
|
|
5
|
+
* NetworkDevices to build the topology graph.
|
|
6
|
+
*/
|
|
7
|
+
export default interface LldpNeighbor {
|
|
8
|
+
localInterfaceIndex?: number | undefined;
|
|
9
|
+
remoteChassisId?: string | undefined;
|
|
10
|
+
remotePortId?: string | undefined;
|
|
11
|
+
remoteSysName?: string | undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import ObjectID from "../../ObjectID";
|
|
2
|
+
import FilterCondition from "../../Filter/FilterCondition";
|
|
3
|
+
import { CheckOn, CriteriaFilter, FilterType } from "../CriteriaFilter";
|
|
4
|
+
import MonitorCriteriaInstance from "../MonitorCriteriaInstance";
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Prebuilt criteria for Network Device monitors — the alerts most operators
|
|
8
|
+
* want and would otherwise hand-build every time. Applying a pack appends
|
|
9
|
+
* these criteria instances to the monitor; the user still picks severities
|
|
10
|
+
* and on-call policies afterwards.
|
|
11
|
+
*/
|
|
12
|
+
export interface NetworkDeviceAlertPackItem {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
filters: Array<CriteriaFilter>;
|
|
16
|
+
createIncidents: boolean;
|
|
17
|
+
createAlerts: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface NetworkDeviceAlertPackContext {
|
|
21
|
+
// Status to move the monitor to when a pack criteria matches (offline/degraded).
|
|
22
|
+
downMonitorStatusId?: ObjectID | undefined;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const PACK: Array<NetworkDeviceAlertPackItem> = [
|
|
26
|
+
{
|
|
27
|
+
name: "Device unreachable",
|
|
28
|
+
description:
|
|
29
|
+
"The device stopped answering SNMP — likely down or unreachable.",
|
|
30
|
+
filters: [
|
|
31
|
+
{
|
|
32
|
+
checkOn: CheckOn.SnmpIsOnline,
|
|
33
|
+
filterType: FilterType.False,
|
|
34
|
+
value: undefined,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
createIncidents: true,
|
|
38
|
+
createAlerts: false,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "Interface down",
|
|
42
|
+
description:
|
|
43
|
+
"An administratively-enabled interface went operationally down.",
|
|
44
|
+
filters: [
|
|
45
|
+
{
|
|
46
|
+
checkOn: CheckOn.SnmpInterfaceIsDown,
|
|
47
|
+
filterType: FilterType.True,
|
|
48
|
+
value: undefined,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
createIncidents: true,
|
|
52
|
+
createAlerts: false,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "Interface saturated",
|
|
56
|
+
description:
|
|
57
|
+
"An interface is running above 80% utilization — the link may need an upgrade.",
|
|
58
|
+
filters: [
|
|
59
|
+
{
|
|
60
|
+
checkOn: CheckOn.SnmpInterfaceUtilizationPercent,
|
|
61
|
+
filterType: FilterType.GreaterThan,
|
|
62
|
+
value: 80,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
createIncidents: false,
|
|
66
|
+
createAlerts: true,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "Interface errors",
|
|
70
|
+
description:
|
|
71
|
+
"An interface is logging errors — usually cabling, optics, or duplex problems.",
|
|
72
|
+
filters: [
|
|
73
|
+
{
|
|
74
|
+
checkOn: CheckOn.SnmpInterfaceErrorsPerSecond,
|
|
75
|
+
filterType: FilterType.GreaterThan,
|
|
76
|
+
value: 1,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
createIncidents: false,
|
|
80
|
+
createAlerts: true,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
export default class NetworkDeviceAlertPackUtil {
|
|
85
|
+
public static getPackItems(): Array<NetworkDeviceAlertPackItem> {
|
|
86
|
+
return PACK;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Builds ready-to-append MonitorCriteriaInstances from the pack. Each is
|
|
91
|
+
* enabled and set to change monitor status; severities and on-call
|
|
92
|
+
* policies are left for the user to fill in.
|
|
93
|
+
*/
|
|
94
|
+
public static buildCriteriaInstances(
|
|
95
|
+
context?: NetworkDeviceAlertPackContext,
|
|
96
|
+
): Array<MonitorCriteriaInstance> {
|
|
97
|
+
return PACK.map((item: NetworkDeviceAlertPackItem) => {
|
|
98
|
+
const instance: MonitorCriteriaInstance = new MonitorCriteriaInstance();
|
|
99
|
+
instance.data = {
|
|
100
|
+
id: ObjectID.generate().toString(),
|
|
101
|
+
monitorStatusId: context?.downMonitorStatusId,
|
|
102
|
+
filterCondition: FilterCondition.All,
|
|
103
|
+
filters: item.filters,
|
|
104
|
+
incidents: [],
|
|
105
|
+
alerts: [],
|
|
106
|
+
createAlerts: item.createAlerts,
|
|
107
|
+
createIncidents: item.createIncidents,
|
|
108
|
+
changeMonitorStatus: item.createIncidents,
|
|
109
|
+
isEnabled: true,
|
|
110
|
+
name: item.name,
|
|
111
|
+
description: item.description,
|
|
112
|
+
};
|
|
113
|
+
return instance;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A derived view of the network topology for one project, built server-side
|
|
3
|
+
* from the LLDP neighbor data each device reports. Nodes are devices;
|
|
4
|
+
* unmanaged neighbors (LLDP peers with no matching NetworkDevice) appear as
|
|
5
|
+
* lightweight nodes so the graph doesn't dead-end. Edges are LLDP links.
|
|
6
|
+
*/
|
|
7
|
+
export type NetworkTopologyNodeStatus = "up" | "down" | "unknown";
|
|
8
|
+
|
|
9
|
+
export interface NetworkTopologyNode {
|
|
10
|
+
// Device id for managed nodes; a synthetic "unmanaged:<key>" id otherwise.
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
isManaged: boolean;
|
|
14
|
+
status: NetworkTopologyNodeStatus;
|
|
15
|
+
interfacesUp?: number | undefined;
|
|
16
|
+
interfacesDown?: number | undefined;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface NetworkTopologyEdge {
|
|
20
|
+
fromNodeId: string;
|
|
21
|
+
toNodeId: string;
|
|
22
|
+
fromPort?: string | undefined;
|
|
23
|
+
toPort?: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default interface NetworkTopology {
|
|
27
|
+
nodes: Array<NetworkTopologyNode>;
|
|
28
|
+
edges: Array<NetworkTopologyEdge>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One row of the IF-MIB interface tables (ifTable + ifXTable), walked by the
|
|
3
|
+
* probe when interface monitoring is enabled on an SNMP monitor.
|
|
4
|
+
*
|
|
5
|
+
* Octet/error/discard counters are cumulative since device boot (64-bit HC
|
|
6
|
+
* counters preferred, 32-bit fallback). The `*PerSecond` and
|
|
7
|
+
* `utilizationPercent` fields are NOT collected from the device — the server
|
|
8
|
+
* computes them from the delta against the previous check before the
|
|
9
|
+
* response is persisted, so they are absent on the first check after a
|
|
10
|
+
* monitor is created and after a counter wrap or device reboot.
|
|
11
|
+
*/
|
|
12
|
+
export default interface SnmpInterface {
|
|
13
|
+
interfaceIndex: number;
|
|
14
|
+
name: string;
|
|
15
|
+
alias?: string | undefined;
|
|
16
|
+
isOperationallyUp: boolean;
|
|
17
|
+
isAdministrativelyUp: boolean;
|
|
18
|
+
speedInBitsPerSecond?: number | undefined;
|
|
19
|
+
inOctets?: number | undefined;
|
|
20
|
+
outOctets?: number | undefined;
|
|
21
|
+
inErrors?: number | undefined;
|
|
22
|
+
outErrors?: number | undefined;
|
|
23
|
+
inDiscards?: number | undefined;
|
|
24
|
+
outDiscards?: number | undefined;
|
|
25
|
+
|
|
26
|
+
// Computed server-side from the previous check. See note above.
|
|
27
|
+
inBitsPerSecond?: number | undefined;
|
|
28
|
+
outBitsPerSecond?: number | undefined;
|
|
29
|
+
utilizationPercent?: number | undefined;
|
|
30
|
+
errorsPerSecond?: number | undefined;
|
|
31
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import ProbeAttempt from "../../Probe/ProbeAttempt";
|
|
2
2
|
import SnmpDataType from "./SnmpDataType";
|
|
3
|
+
import SnmpInterface from "./SnmpInterface";
|
|
4
|
+
import LldpNeighbor from "./LldpNeighbor";
|
|
3
5
|
|
|
4
6
|
export interface SnmpOidResponse {
|
|
5
7
|
oid: string;
|
|
@@ -16,4 +18,26 @@ export default interface SnmpMonitorResponse {
|
|
|
16
18
|
isTimeout?: boolean | undefined;
|
|
17
19
|
probeAttempts?: Array<ProbeAttempt> | undefined;
|
|
18
20
|
totalAttempts?: number | undefined;
|
|
21
|
+
/*
|
|
22
|
+
* Populated when interface monitoring is enabled on the monitor step.
|
|
23
|
+
* Undefined on older probes and when the interface walk failed (the
|
|
24
|
+
* failure is recorded in interfaceWalkFailure).
|
|
25
|
+
*/
|
|
26
|
+
interfaces?: Array<SnmpInterface> | undefined;
|
|
27
|
+
interfaceWalkFailure?: string | undefined;
|
|
28
|
+
/*
|
|
29
|
+
* System-group identity (sysDescr / sysName), collected alongside the
|
|
30
|
+
* interface walk. Used to enrich the NetworkDevice resource.
|
|
31
|
+
*/
|
|
32
|
+
systemInfo?:
|
|
33
|
+
| {
|
|
34
|
+
sysDescr?: string | undefined;
|
|
35
|
+
sysName?: string | undefined;
|
|
36
|
+
}
|
|
37
|
+
| undefined;
|
|
38
|
+
/*
|
|
39
|
+
* LLDP neighbors discovered during the walk (when interface monitoring is
|
|
40
|
+
* enabled). Used to build the network topology graph.
|
|
41
|
+
*/
|
|
42
|
+
lldpNeighbors?: Array<LldpNeighbor> | undefined;
|
|
19
43
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SnmpTrapVarbind {
|
|
2
|
+
oid: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* An SNMP trap (or inform) received by a probe's trap receiver and forwarded
|
|
8
|
+
* to the server. For v1 traps the trapOid is derived from the standard
|
|
9
|
+
* generic-trap mapping (e.g. linkDown → 1.3.6.1.6.3.1.1.5.3) or
|
|
10
|
+
* enterprise.0.specific for enterprise traps; for v2c/v3 it is the value of
|
|
11
|
+
* the snmpTrapOID.0 varbind.
|
|
12
|
+
*/
|
|
13
|
+
export default interface SnmpTrap {
|
|
14
|
+
sourceIpAddress: string;
|
|
15
|
+
trapOid: string;
|
|
16
|
+
snmpVersion: string;
|
|
17
|
+
community?: string | undefined;
|
|
18
|
+
receivedAt: Date;
|
|
19
|
+
varbinds: Array<SnmpTrapVarbind>;
|
|
20
|
+
}
|