@oneuptime/common 11.5.8 → 11.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/Index.ts +13 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByContainer.ts +178 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +179 -0
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +179 -0
- package/Models/AnalyticsModels/NetworkFlow.ts +397 -0
- package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +15 -6
- package/Models/DatabaseModels/AIRun.ts +37 -0
- package/Models/DatabaseModels/AIRunEvent.ts +34 -1
- package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +18 -0
- package/Models/DatabaseModels/GlobalConfig.ts +36 -0
- package/Models/DatabaseModels/Index.ts +2 -0
- package/Models/DatabaseModels/MarketingConversion.ts +198 -0
- package/Models/DatabaseModels/MetricSavedView.ts +34 -0
- package/Models/DatabaseModels/MetricType.ts +74 -0
- package/Models/DatabaseModels/NetworkDevice.ts +332 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +328 -0
- package/Models/DatabaseModels/NetworkInterface.ts +58 -0
- package/Models/DatabaseModels/Project.ts +62 -0
- package/Models/DatabaseModels/StatusPage.ts +42 -0
- package/Models/DatabaseModels/User.ts +37 -0
- package/Server/API/AIAgentTaskAPI.ts +38 -12
- package/Server/API/AIAgentTaskLogAPI.ts +49 -0
- package/Server/API/AIChatAPI.ts +16 -0
- package/Server/API/AIReadinessAPI.ts +84 -0
- package/Server/API/BaseAnalyticsAPI.ts +23 -0
- package/Server/API/CodeFixRunAPI.ts +182 -0
- package/Server/API/EnterpriseLicenseAPI.ts +14 -0
- package/Server/API/TelemetryExceptionAPI.ts +6 -1
- package/Server/EnvironmentConfig.ts +84 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.ts +95 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.ts +52 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.ts +38 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.ts +108 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
- package/Server/Services/AIRunEventService.ts +15 -1
- package/Server/Services/AIRunService.ts +38 -1
- package/Server/Services/AnalyticsDatabaseService.ts +70 -1
- package/Server/Services/IncidentService.ts +13 -0
- package/Server/Services/Index.ts +10 -0
- package/Server/Services/LlmProviderService.ts +2 -0
- package/Server/Services/MarketingConversionService.ts +10 -0
- package/Server/Services/MetricItemAggMV1mByContainerService.ts +31 -0
- package/Server/Services/MetricItemAggMV1mByK8sClusterService.ts +31 -0
- package/Server/Services/MetricItemAggMV1mByServiceService.ts +31 -0
- package/Server/Services/MetricService.ts +970 -122
- package/Server/Services/MonitorService.ts +14 -0
- package/Server/Services/NetworkDeviceOwnerTeamService.ts +42 -0
- package/Server/Services/NetworkDeviceOwnerUserService.ts +106 -0
- package/Server/Services/NetworkFlowService.ts +11 -0
- package/Server/Services/OnCallDutyPolicyService.ts +11 -1
- package/Server/Services/ProjectService.ts +178 -0
- package/Server/Services/SpanService.ts +13 -9
- package/Server/Services/StatusPageService.ts +97 -0
- package/Server/Services/TeamMemberService.ts +11 -0
- package/Server/Services/TelemetryExceptionService.ts +19 -90
- package/Server/Services/UserService.ts +59 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +37 -7
- package/Server/Types/Markdown.ts +9 -9
- package/Server/Types/MarkdownSlugify.ts +47 -0
- package/Server/Utils/AI/AIRunTranscript.ts +240 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +9 -0
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +119 -5
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +75 -0
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +235 -0
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +2 -3
- package/Server/Utils/AI/Toolbox/CodeTools.ts +883 -0
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +519 -0
- package/Server/Utils/AI/Toolbox/Index.ts +27 -0
- package/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.ts +279 -0
- package/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.ts +19 -1
- package/Server/Utils/Attribution.ts +99 -0
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +600 -0
- package/Server/Utils/CodeRepository/StackTraceRepoResolver.ts +7 -2
- package/Server/Utils/LLM/LLMService.ts +397 -18
- package/Server/Utils/Marketing/ConversionUploadProvider.ts +103 -0
- package/Server/Utils/Marketing/ConversionUploadProviders.ts +22 -0
- package/Server/Utils/Marketing/Providers/GoogleAds.ts +270 -0
- package/Server/Utils/Marketing/Providers/LinkedIn.ts +147 -0
- package/Server/Utils/Marketing/Providers/Meta.ts +148 -0
- package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +196 -0
- package/Server/Utils/Marketing/Providers/Reddit.ts +178 -0
- package/Server/Utils/Monitor/MonitorAlert.ts +71 -7
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +31 -19
- package/Server/Utils/Monitor/MonitorIncident.ts +71 -7
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +57 -0
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +94 -0
- package/Server/Utils/Monitor/NetworkDeviceHydrationUtil.ts +19 -11
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +125 -14
- package/Server/Utils/ProductAnalytics.ts +133 -0
- package/Server/Utils/Telemetry/Telemetry.ts +39 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +21 -0
- package/Tests/Models/StatusPageEnableMcpServer.test.ts +125 -0
- package/Tests/Server/API/BaseAnalyticsAPI.test.ts +72 -0
- package/Tests/Server/Infrastructure/SemaphorePermit.test.ts +9 -1
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +21 -2
- package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +173 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +1391 -0
- package/Tests/Server/Services/NetworkDeviceOwnerServices.test.ts +260 -0
- package/Tests/Server/Services/StatusPageServiceMcp.test.ts +223 -0
- package/Tests/Server/Services/TelemetryExceptionAIFixReadiness.test.ts +26 -3
- package/Tests/Server/Services/TelemetryExceptionCodeFixRun.test.ts +12 -0
- package/Tests/Server/Types/Markdown.test.ts +106 -0
- package/Tests/Server/Utils/AI/AIRunTranscript.test.ts +182 -0
- package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +411 -0
- package/Tests/Server/Utils/AI/CodeTools.test.ts +596 -0
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +475 -0
- package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +548 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +142 -0
- package/Tests/Server/Utils/AI/ScheduledMaintenanceTools.test.ts +176 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.test.ts +63 -0
- package/Tests/Server/Utils/GitHubGetFileContent.test.ts +197 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplateUtilNetworkDevice.test.ts +389 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceHydrationUtil.test.ts +502 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +764 -0
- package/Tests/Types/AI/AIAgentTaskStatus.test.ts +7 -6
- package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
- package/Tests/Types/AI/AIRunStatus.test.ts +42 -0
- package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +111 -2
- package/Tests/Types/Database/EndsWith.test.ts +64 -0
- package/Tests/Types/Database/GreaterThan.test.ts +62 -0
- package/Tests/Types/Database/GreaterThanOrEqual.test.ts +65 -0
- package/Tests/Types/Database/GreaterThanOrNull.test.ts +63 -0
- package/Tests/Types/Database/Includes.test.ts +65 -0
- package/Tests/Types/Database/IncludesAll.test.ts +65 -0
- package/Tests/Types/Database/IncludesNone.test.ts +65 -0
- package/Tests/Types/Database/IsNull.test.ts +44 -0
- package/Tests/Types/Database/LessThan.test.ts +62 -0
- package/Tests/Types/Database/LessThanOrEqual.test.ts +62 -0
- package/Tests/Types/Database/LessThanOrNull.test.ts +62 -0
- package/Tests/Types/Database/MultiSearch.test.ts +81 -0
- package/Tests/Types/Database/NotContains.test.ts +64 -0
- package/Tests/Types/Database/NotNull.test.ts +44 -0
- package/Tests/Types/Database/StartsWith.test.ts +64 -0
- package/Tests/Types/Log/LogSeverity.test.ts +78 -0
- package/Tests/Types/Monitor/MonitorStepSqlMonitor.test.ts +83 -1
- package/Tests/Types/Monitor/SnmpV3EnumParsing.test.ts +247 -0
- package/Tests/Types/Monitor/SnmpVendorTemplate.test.ts +263 -0
- package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +167 -0
- package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +66 -0
- package/Tests/UI/Components/XAxis.test.ts +5 -3
- package/Tests/UI/Utils/AIChatExport/ChatWidgetData.test.ts +319 -0
- package/Tests/UI/Utils/AIChatExport/ChatWidgetMarkdown.test.ts +188 -0
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +76 -0
- package/Tests/Utils/Metrics/MetricExplorerUrl.test.ts +622 -0
- package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +474 -0
- package/Tests/Utils/Telemetry/HeartbeatAvailability.test.ts +52 -4
- package/Types/AI/AIAgentTaskStatus.ts +13 -0
- package/Types/AI/AIChatPageContext.ts +137 -0
- package/Types/AI/AIChatTypes.ts +44 -0
- package/Types/AI/AIFixReadiness.ts +46 -0
- package/Types/AI/AIRunStatus.ts +11 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +11 -0
- package/Types/BaseDatabase/AggregateBy.ts +31 -2
- package/Types/BaseDatabase/AggregatedResult.ts +22 -0
- package/Types/BaseDatabase/AggregationInterval.ts +11 -0
- package/Types/BaseDatabase/AggregationIntervalUtil.ts +30 -5
- package/Types/Dashboard/DashboardComponents/DashboardTraceChartComponent.ts +16 -0
- package/Types/Email/EmailTemplateType.ts +3 -0
- package/Types/Log/LogSeverity.ts +61 -0
- package/Types/Marketing/MarketingConversion.ts +11 -0
- package/Types/Metrics/MetricQueryConfigData.ts +21 -0
- package/Types/Metrics/MetricQueryData.ts +8 -0
- package/Types/Metrics/MetricViewData.ts +8 -0
- package/Types/Monitor/MonitorMetricType.ts +8 -0
- package/Types/Monitor/MonitorStep.ts +9 -0
- package/Types/Monitor/MonitorStepSqlMonitor.ts +12 -0
- package/Types/Monitor/MonitorType.ts +2 -1
- package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +17 -12
- package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +13 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +37 -3
- package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +46 -0
- package/Types/Monitor/SnmpMonitor/SnmpEntityInfo.ts +15 -0
- package/Types/Monitor/SnmpMonitor/SnmpInterface.ts +8 -0
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +17 -8
- package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +53 -0
- package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +43 -0
- package/Types/Monitor/SnmpMonitor/SnmpSystemInfo.ts +16 -0
- package/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.ts +119 -3
- package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +40 -0
- package/Types/NetFlow/NetworkFlowRecord.ts +25 -0
- package/Types/Syslog/SyslogMessage.ts +18 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +9 -0
- package/Types/Telemetry/TelemetrySavedViewType.ts +12 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +51 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +51 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +97 -26
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +336 -3
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +118 -1
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +336 -3
- package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +7 -0
- package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +15 -0
- package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +51 -0
- package/UI/Components/Charts/Types/ReferenceRegionProps.ts +12 -0
- package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +12 -0
- package/UI/Components/Charts/Types/XAxis/XAxisPrecision.ts +1 -0
- package/UI/Components/Charts/Utils/DataPoint.ts +0 -0
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +169 -0
- package/UI/Components/Charts/Utils/XAxis.ts +28 -4
- package/UI/Components/Forms/BasicForm.tsx +26 -8
- package/UI/Components/Icon/Icon.tsx +33 -13
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +9 -0
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +67 -0
- package/UI/Components/Page/ModelPage.tsx +6 -1
- package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +33 -4
- package/UI/Styles/Theme.css +1324 -0
- package/UI/Utils/AIChatExport/ChatWidgetData.ts +316 -0
- package/UI/Utils/AIChatExport/ChatWidgetMarkdown.ts +349 -0
- package/UI/Utils/AIChatExport/ConversationMarkdown.ts +177 -0
- package/UI/Utils/AIChatExport/MarkdownBlocks.ts +327 -0
- package/UI/Utils/AIChatExport/MarkdownSafety.ts +215 -0
- package/UI/Utils/DownloadFile.ts +54 -0
- package/UI/Utils/User.ts +41 -2
- package/Utils/Analytics.ts +8 -6
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +74 -0
- package/Utils/Metrics/MetricExplorerUrl.ts +771 -0
- package/Utils/Metrics/MetricFormulaEvaluator.ts +410 -46
- package/Utils/Monitor/NetworkTopologyUtil.ts +261 -49
- package/Utils/ValueFormatter.ts +22 -1
- package/build/dist/Models/AnalyticsModels/Index.js +13 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js +159 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByContainer.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +158 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +160 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js +351 -0
- package/build/dist/Models/AnalyticsModels/NetworkFlow.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +15 -7
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRun.js +38 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRunEvent.js +31 -0
- package/build/dist/Models/DatabaseModels/AIRunEvent.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +19 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +38 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MarketingConversion.js +219 -0
- package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js +35 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +76 -0
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +341 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +341 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkInterface.js +60 -0
- package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +65 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +43 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +38 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskAPI.js +37 -11
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -1
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +32 -7
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +9 -0
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIReadinessAPI.js +57 -0
- package/build/dist/Server/API/AIReadinessAPI.js.map +1 -0
- package/build/dist/Server/API/BaseAnalyticsAPI.js +19 -0
- package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
- package/build/dist/Server/API/CodeFixRunAPI.js +142 -0
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +8 -0
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +4 -0
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +51 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js +80 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784124919694-AddAITaskNumberAndRunTranscript.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js +37 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784135099754-AllowNullAiAgentOnPullRequest.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784137457184-AddEnableMcpServerToStatusPage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js +27 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414522-AddCounterSemanticsToMetricType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js +21 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784191414600-AddViewTypeToMetricSavedView.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784200000000-AddSnmpV3ColumnsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js +47 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784211212164-AddNetworkDeviceInventoryAndDiscoverySchedule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784218257664-AddEnterpriseLicenseNotificationColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784293516000-AddAttributionColumnsToUserAndProject.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1784298000000-AddMarketingConversionTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIRunEventService.js +8 -0
- package/build/dist/Server/Services/AIRunEventService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +29 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +58 -4
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +12 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +10 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LlmProviderService.js +2 -0
- package/build/dist/Server/Services/LlmProviderService.js.map +1 -1
- package/build/dist/Server/Services/MarketingConversionService.js +9 -0
- package/build/dist/Server/Services/MarketingConversionService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByContainerService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByK8sClusterService.js.map +1 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js +29 -0
- package/build/dist/Server/Services/MetricItemAggMV1mByServiceService.js.map +1 -0
- package/build/dist/Server/Services/MetricService.js +761 -125
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +18 -5
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js +44 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js +88 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/NetworkFlowService.js +9 -0
- package/build/dist/Server/Services/NetworkFlowService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +15 -6
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +146 -6
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +8 -6
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +91 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +11 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +14 -61
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +52 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +33 -7
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +8 -8
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Types/MarkdownSlugify.js +47 -0
- package/build/dist/Server/Types/MarkdownSlugify.js.map +1 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js +180 -0
- package/build/dist/Server/Utils/AI/AIRunTranscript.js.map +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +103 -5
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +55 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +211 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +654 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +389 -0
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +19 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js +239 -0
- package/build/dist/Server/Utils/AI/Toolbox/ScheduledMaintenanceTools.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js +19 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/ClickhouseCapacity.js.map +1 -1
- package/build/dist/Server/Utils/Attribution.js +74 -0
- package/build/dist/Server/Utils/Attribution.js.map +1 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +439 -0
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js +1 -1
- package/build/dist/Server/Utils/CodeRepository/StackTraceRepoResolver.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +275 -19
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +40 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js +20 -0
- package/build/dist/Server/Utils/Marketing/ConversionUploadProviders.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +177 -0
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +113 -0
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js +109 -0
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +130 -0
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -0
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +126 -0
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +53 -9
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +21 -10
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +54 -11
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +43 -3
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +68 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js +17 -11
- package/build/dist/Server/Utils/Monitor/NetworkDeviceHydrationUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +100 -15
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/ProductAnalytics.js +111 -0
- package/build/dist/Server/Utils/ProductAnalytics.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +32 -5
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -0
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/AI/AIAgentTaskStatus.js +12 -0
- package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -1
- package/build/dist/Types/AI/AIChatPageContext.js +101 -0
- package/build/dist/Types/AI/AIChatPageContext.js.map +1 -0
- package/build/dist/Types/AI/AIChatTypes.js +2 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/AI/AIFixReadiness.js +9 -0
- package/build/dist/Types/AI/AIFixReadiness.js.map +1 -0
- package/build/dist/Types/AI/AIRunStatus.js +11 -0
- package/build/dist/Types/AI/AIRunStatus.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +11 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationInterval.js +11 -0
- package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +33 -5
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Log/LogSeverity.js +56 -0
- package/build/dist/Types/Log/LogSeverity.js.map +1 -1
- package/build/dist/Types/Marketing/MarketingConversion.js +13 -0
- package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js +7 -0
- package/build/dist/Types/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +6 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js +3 -0
- package/build/dist/Types/Monitor/MonitorStepSqlMonitor.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +2 -1
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/CdpNeighbor.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +41 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpEntityInfo.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +48 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +38 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSystemInfo.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js +96 -3
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVendorTemplate.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +38 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -1
- package/build/dist/Types/NetFlow/NetworkFlowRecord.js +2 -0
- package/build/dist/Types/NetFlow/NetworkFlowRecord.js.map +1 -0
- package/build/dist/Types/Syslog/SyslogMessage.js +2 -0
- package/build/dist/Types/Syslog/SyslogMessage.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js +0 -7
- package/build/dist/Types/Telemetry/TelemetrySavedViewState.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetrySavedViewType.js +13 -0
- package/build/dist/Types/Telemetry/TelemetrySavedViewType.js.map +1 -0
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +25 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +26 -2
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +36 -12
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +217 -8
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +55 -4
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +217 -8
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +6 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js +2 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js +2 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +25 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js +2 -0
- package/build/dist/UI/Components/Charts/Types/ReferenceRegionProps.js.map +1 -0
- package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js +2 -0
- package/build/dist/UI/Components/Charts/Types/TimeReferenceLineProps.js.map +1 -0
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js +1 -0
- package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js +0 -0
- package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +121 -0
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -0
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +27 -4
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +24 -6
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +15 -8
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +58 -0
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
- package/build/dist/UI/Components/Page/ModelPage.js +7 -1
- package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +10 -4
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js +217 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetData.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js +234 -0
- package/build/dist/UI/Utils/AIChatExport/ChatWidgetMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +111 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js +233 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownBlocks.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js +134 -0
- package/build/dist/UI/Utils/AIChatExport/MarkdownSafety.js.map +1 -0
- package/build/dist/UI/Utils/DownloadFile.js +41 -0
- package/build/dist/UI/Utils/DownloadFile.js.map +1 -0
- package/build/dist/UI/Utils/User.js +35 -2
- package/build/dist/UI/Utils/User.js.map +1 -1
- package/build/dist/Utils/Analytics.js +8 -5
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +57 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +418 -0
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +296 -37
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +176 -40
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +20 -1
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +6 -2
|
@@ -64,6 +64,12 @@ export default interface MonitorStepSqlMonitor {
|
|
|
64
64
|
username: string;
|
|
65
65
|
// Raw password OR a {{monitorSecrets.name}} reference resolved server-side.
|
|
66
66
|
password: string;
|
|
67
|
+
/*
|
|
68
|
+
* Microsoft SQL Server only: authenticate with the identity under which the
|
|
69
|
+
* probe is running (SSPI on Windows, Kerberos on Linux/macOS). Username and
|
|
70
|
+
* password are ignored when this is enabled.
|
|
71
|
+
*/
|
|
72
|
+
useWindowsIntegratedAuthentication: boolean;
|
|
67
73
|
useSsl: boolean;
|
|
68
74
|
/*
|
|
69
75
|
* When SSL is on, whether the server certificate chain must validate. Users
|
|
@@ -87,6 +93,7 @@ export class MonitorStepSqlMonitorUtil {
|
|
|
87
93
|
databaseName: "",
|
|
88
94
|
username: "",
|
|
89
95
|
password: "",
|
|
96
|
+
useWindowsIntegratedAuthentication: false,
|
|
90
97
|
useSsl: false,
|
|
91
98
|
rejectUnauthorizedSsl: true,
|
|
92
99
|
query: "",
|
|
@@ -105,6 +112,9 @@ export class MonitorStepSqlMonitorUtil {
|
|
|
105
112
|
databaseName: (json["databaseName"] as string) || "",
|
|
106
113
|
username: (json["username"] as string) || "",
|
|
107
114
|
password: (json["password"] as string) || "",
|
|
115
|
+
useWindowsIntegratedAuthentication: Boolean(
|
|
116
|
+
json["useWindowsIntegratedAuthentication"],
|
|
117
|
+
),
|
|
108
118
|
useSsl: Boolean(json["useSsl"]),
|
|
109
119
|
rejectUnauthorizedSsl:
|
|
110
120
|
json["rejectUnauthorizedSsl"] === undefined ||
|
|
@@ -130,6 +140,8 @@ export class MonitorStepSqlMonitorUtil {
|
|
|
130
140
|
databaseName: monitor.databaseName,
|
|
131
141
|
username: monitor.username,
|
|
132
142
|
password: monitor.password,
|
|
143
|
+
useWindowsIntegratedAuthentication:
|
|
144
|
+
monitor.useWindowsIntegratedAuthentication,
|
|
133
145
|
useSsl: monitor.useSsl,
|
|
134
146
|
rejectUnauthorizedSsl: monitor.rejectUnauthorizedSsl,
|
|
135
147
|
query: monitor.query,
|
|
@@ -480,7 +480,8 @@ export class MonitorTypeHelper {
|
|
|
480
480
|
return (
|
|
481
481
|
monitorType === MonitorType.IncomingRequest ||
|
|
482
482
|
monitorType === MonitorType.IncomingEmail ||
|
|
483
|
-
monitorType === MonitorType.Server
|
|
483
|
+
monitorType === MonitorType.Server ||
|
|
484
|
+
monitorType === MonitorType.NetworkDevice
|
|
484
485
|
);
|
|
485
486
|
}
|
|
486
487
|
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Every field is optional AND explicitly undefined-able: a certificate need
|
|
3
|
+
* not carry any given subject field, and under exactOptionalPropertyTypes the
|
|
4
|
+
* probe cannot assign a "may be absent" value into a bare optional property.
|
|
5
|
+
*/
|
|
1
6
|
export default interface SslMonitorResponse {
|
|
2
|
-
isSelfSigned?: boolean;
|
|
3
|
-
createdAt?: Date;
|
|
4
|
-
expiresAt?: Date;
|
|
5
|
-
commonName?: string;
|
|
6
|
-
organizationalUnit?: string;
|
|
7
|
-
organization?: string;
|
|
8
|
-
locality?: string;
|
|
9
|
-
state?: string;
|
|
10
|
-
country?: string;
|
|
11
|
-
serialNumber?: string;
|
|
12
|
-
fingerprint?: string;
|
|
13
|
-
fingerprint256?: string;
|
|
7
|
+
isSelfSigned?: boolean | undefined;
|
|
8
|
+
createdAt?: Date | undefined;
|
|
9
|
+
expiresAt?: Date | undefined;
|
|
10
|
+
commonName?: string | undefined;
|
|
11
|
+
organizationalUnit?: string | undefined;
|
|
12
|
+
organization?: string | undefined;
|
|
13
|
+
locality?: string | undefined;
|
|
14
|
+
state?: string | undefined;
|
|
15
|
+
country?: string | undefined;
|
|
16
|
+
serialNumber?: string | undefined;
|
|
17
|
+
fingerprint?: string | undefined;
|
|
18
|
+
fingerprint256?: string | undefined;
|
|
14
19
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One neighbor entry from a Cisco device's CDP cache (CISCO-CDP-MIB
|
|
3
|
+
* cdpCacheTable). Collected as a fallback/complement to LLDP — plenty of
|
|
4
|
+
* Cisco estates run CDP only, and without it their topology is empty. The
|
|
5
|
+
* server matches remoteDeviceId against known NetworkDevices the same way it
|
|
6
|
+
* matches LLDP remoteSysName.
|
|
7
|
+
*/
|
|
8
|
+
export default interface CdpNeighbor {
|
|
9
|
+
localInterfaceIndex?: number | undefined;
|
|
10
|
+
remoteDeviceId?: string | undefined;
|
|
11
|
+
remotePortId?: string | undefined;
|
|
12
|
+
remotePlatform?: string | undefined;
|
|
13
|
+
}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/*
|
|
2
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 (
|
|
5
|
-
* lightweight nodes so the graph doesn't dead-end.
|
|
3
|
+
* from the LLDP and CDP neighbor data each device reports. Nodes are devices;
|
|
4
|
+
* unmanaged neighbors (discovery-protocol peers with no matching
|
|
5
|
+
* NetworkDevice) appear as lightweight nodes so the graph doesn't dead-end.
|
|
6
|
+
* Edges are physical links — one per device pair even when both ends (or
|
|
7
|
+
* both protocols) report it — annotated with the operational state of the
|
|
8
|
+
* interface at each end when the neighbor entry identifies it.
|
|
6
9
|
*/
|
|
7
10
|
export type NetworkTopologyNodeStatus = "up" | "down" | "unknown";
|
|
8
11
|
|
|
12
|
+
// Which discovery protocol(s) reported a link.
|
|
13
|
+
export type NetworkTopologyLinkProtocol = "lldp" | "cdp";
|
|
14
|
+
|
|
9
15
|
export interface NetworkTopologyNode {
|
|
10
16
|
// Device id for managed nodes; a synthetic "unmanaged:<key>" id otherwise.
|
|
11
17
|
id: string;
|
|
@@ -14,6 +20,27 @@ export interface NetworkTopologyNode {
|
|
|
14
20
|
status: NetworkTopologyNodeStatus;
|
|
15
21
|
interfacesUp?: number | undefined;
|
|
16
22
|
interfacesDown?: number | undefined;
|
|
23
|
+
// Extra device identity for search and the detail panel (managed nodes).
|
|
24
|
+
sysName?: string | undefined;
|
|
25
|
+
vendor?: string | undefined;
|
|
26
|
+
// For unmanaged CDP peers this carries the reported platform string.
|
|
27
|
+
deviceModel?: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* Operational state of one end of a link, resolved from the NetworkInterface
|
|
32
|
+
* row for that (device, interfaceIndex) pair when the neighbor entry carries
|
|
33
|
+
* enough to identify it. All fields optional — enrichment is best-effort.
|
|
34
|
+
*/
|
|
35
|
+
export interface NetworkTopologyEdgeEndpoint {
|
|
36
|
+
interfaceIndex?: number | undefined;
|
|
37
|
+
interfaceName?: string | undefined;
|
|
38
|
+
isOperationallyUp?: boolean | undefined;
|
|
39
|
+
isAdministrativelyUp?: boolean | undefined;
|
|
40
|
+
utilizationPercent?: number | undefined;
|
|
41
|
+
inRateMbps?: number | undefined;
|
|
42
|
+
outRateMbps?: number | undefined;
|
|
43
|
+
errorsPerSecond?: number | undefined;
|
|
17
44
|
}
|
|
18
45
|
|
|
19
46
|
export interface NetworkTopologyEdge {
|
|
@@ -21,9 +48,16 @@ export interface NetworkTopologyEdge {
|
|
|
21
48
|
toNodeId: string;
|
|
22
49
|
fromPort?: string | undefined;
|
|
23
50
|
toPort?: string | undefined;
|
|
51
|
+
// Discovery protocols that reported this link (deduped union).
|
|
52
|
+
protocols?: Array<NetworkTopologyLinkProtocol> | undefined;
|
|
53
|
+
// Operational data at each end, when the endpoint interface is known.
|
|
54
|
+
fromInterface?: NetworkTopologyEdgeEndpoint | undefined;
|
|
55
|
+
toInterface?: NetworkTopologyEdgeEndpoint | undefined;
|
|
24
56
|
}
|
|
25
57
|
|
|
26
58
|
export default interface NetworkTopology {
|
|
27
59
|
nodes: Array<NetworkTopologyNode>;
|
|
28
60
|
edges: Array<NetworkTopologyEdge>;
|
|
61
|
+
// True when the device query hit its per-project cap — graph may be partial.
|
|
62
|
+
isTruncated?: boolean | undefined;
|
|
29
63
|
}
|
|
@@ -5,4 +5,50 @@ enum SnmpAuthProtocol {
|
|
|
5
5
|
SHA512 = "SHA512",
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
/*
|
|
9
|
+
* Same free-text column problem as SnmpPrivProtocol: snmpV3AuthProtocol has no
|
|
10
|
+
* check constraint, and reading it by casting the raw string to this enum
|
|
11
|
+
* silently drops to the probe's default of MD5 — the weakest digest — when the
|
|
12
|
+
* spelling does not match exactly. "SHA-256" is what the form labels that
|
|
13
|
+
* option, so it is a realistic thing to find in a hand-written row.
|
|
14
|
+
*
|
|
15
|
+
* This protocol also selects the hash used to localize the *privacy* key
|
|
16
|
+
* (RFC 3414 section 2.6), so getting it wrong corrupts the DES/AES key as well
|
|
17
|
+
* as the authentication digest. Both ends then disagree and the device simply
|
|
18
|
+
* stops answering.
|
|
19
|
+
*
|
|
20
|
+
* See SnmpPrivProtocol for why parse() returns undefined instead of a default.
|
|
21
|
+
* SHA here is SHA-1, the original RFC 3414 algorithm.
|
|
22
|
+
*/
|
|
23
|
+
export class SnmpAuthProtocolUtil {
|
|
24
|
+
public static parse(
|
|
25
|
+
value: string | undefined | null,
|
|
26
|
+
): SnmpAuthProtocol | undefined {
|
|
27
|
+
switch ((value || "").trim().toLowerCase()) {
|
|
28
|
+
case "md5":
|
|
29
|
+
return SnmpAuthProtocol.MD5;
|
|
30
|
+
case "sha":
|
|
31
|
+
case "sha1":
|
|
32
|
+
case "sha-1":
|
|
33
|
+
return SnmpAuthProtocol.SHA;
|
|
34
|
+
case "sha256":
|
|
35
|
+
case "sha-256":
|
|
36
|
+
return SnmpAuthProtocol.SHA256;
|
|
37
|
+
case "sha512":
|
|
38
|
+
case "sha-512":
|
|
39
|
+
return SnmpAuthProtocol.SHA512;
|
|
40
|
+
default:
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public static isUnrecognized(value: string | undefined | null): boolean {
|
|
46
|
+
if (!(value || "").trim()) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return SnmpAuthProtocolUtil.parse(value) === undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
8
54
|
export default SnmpAuthProtocol;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Hardware identity from ENTITY-MIB entPhysicalTable (1.3.6.1.2.1.47.1.1.1).
|
|
3
|
+
* The probe picks the chassis row (entPhysicalClass == 3), falling back to
|
|
4
|
+
* the lowest-indexed row that carries a serial number, since stacked or
|
|
5
|
+
* modular devices expose one row per component. All fields are best-effort —
|
|
6
|
+
* many low-end devices do not implement ENTITY-MIB at all.
|
|
7
|
+
*/
|
|
8
|
+
export default interface SnmpEntityInfo {
|
|
9
|
+
manufacturer?: string | undefined;
|
|
10
|
+
model?: string | undefined;
|
|
11
|
+
serialNumber?: string | undefined;
|
|
12
|
+
hardwareRevision?: string | undefined;
|
|
13
|
+
firmwareVersion?: string | undefined;
|
|
14
|
+
softwareVersion?: string | undefined;
|
|
15
|
+
}
|
|
@@ -15,6 +15,14 @@ export default interface SnmpInterface {
|
|
|
15
15
|
alias?: string | undefined;
|
|
16
16
|
isOperationallyUp: boolean;
|
|
17
17
|
isAdministrativelyUp: boolean;
|
|
18
|
+
/*
|
|
19
|
+
* ifPhysAddress formatted as lowercase colon-separated hex
|
|
20
|
+
* ("aa:bb:cc:dd:ee:ff"); undefined for interfaces with no MAC (loopbacks,
|
|
21
|
+
* tunnels) or when the device returns an empty octet string.
|
|
22
|
+
*/
|
|
23
|
+
macAddress?: string | undefined;
|
|
24
|
+
// IANAifType number (ifType column) — 6 = ethernetCsmacd, 24 = loopback...
|
|
25
|
+
interfaceType?: number | undefined;
|
|
18
26
|
speedInBitsPerSecond?: number | undefined;
|
|
19
27
|
inOctets?: number | undefined;
|
|
20
28
|
outOctets?: number | undefined;
|
|
@@ -2,6 +2,9 @@ import ProbeAttempt from "../../Probe/ProbeAttempt";
|
|
|
2
2
|
import SnmpDataType from "./SnmpDataType";
|
|
3
3
|
import SnmpInterface from "./SnmpInterface";
|
|
4
4
|
import LldpNeighbor from "./LldpNeighbor";
|
|
5
|
+
import CdpNeighbor from "./CdpNeighbor";
|
|
6
|
+
import SnmpSystemInfo from "./SnmpSystemInfo";
|
|
7
|
+
import SnmpEntityInfo from "./SnmpEntityInfo";
|
|
5
8
|
|
|
6
9
|
export interface SnmpOidResponse {
|
|
7
10
|
oid: string;
|
|
@@ -26,18 +29,24 @@ export default interface SnmpMonitorResponse {
|
|
|
26
29
|
interfaces?: Array<SnmpInterface> | undefined;
|
|
27
30
|
interfaceWalkFailure?: string | undefined;
|
|
28
31
|
/*
|
|
29
|
-
* System-group identity
|
|
30
|
-
*
|
|
32
|
+
* System-group identity, collected alongside the interface walk. Used to
|
|
33
|
+
* enrich the NetworkDevice resource. Older probes send only
|
|
34
|
+
* sysDescr/sysName.
|
|
31
35
|
*/
|
|
32
|
-
systemInfo?:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
systemInfo?: SnmpSystemInfo | undefined;
|
|
37
|
+
/*
|
|
38
|
+
* ENTITY-MIB hardware identity (manufacturer/model/serial/firmware),
|
|
39
|
+
* collected alongside the interface walk on devices that implement it.
|
|
40
|
+
*/
|
|
41
|
+
entityInfo?: SnmpEntityInfo | undefined;
|
|
38
42
|
/*
|
|
39
43
|
* LLDP neighbors discovered during the walk (when interface monitoring is
|
|
40
44
|
* enabled). Used to build the network topology graph.
|
|
41
45
|
*/
|
|
42
46
|
lldpNeighbors?: Array<LldpNeighbor> | undefined;
|
|
47
|
+
/*
|
|
48
|
+
* CDP neighbors, walked as a complement to LLDP for Cisco estates.
|
|
49
|
+
* Undefined on older probes and non-CDP devices.
|
|
50
|
+
*/
|
|
51
|
+
cdpNeighbors?: Array<CdpNeighbor> | undefined;
|
|
43
52
|
}
|
|
@@ -4,4 +4,57 @@ enum SnmpPrivProtocol {
|
|
|
4
4
|
AES256 = "AES256",
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/*
|
|
8
|
+
* The snmpV3PrivProtocol column is free text (character varying, no check
|
|
9
|
+
* constraint), so what lands in it is only as good as whoever wrote it. The
|
|
10
|
+
* forms write these enum values, but a direct API call, a hand-edited row or
|
|
11
|
+
* a restored backup can put anything there.
|
|
12
|
+
*
|
|
13
|
+
* parse() is the only correct way to read that column. Reading it by casting
|
|
14
|
+
* the raw string to this enum type compiles fine and then silently misses:
|
|
15
|
+
* an "AES-256" (the label the form shows) or "aes" is not === any member, so
|
|
16
|
+
* the probe's protocol switch falls to its default and encrypts with DES —
|
|
17
|
+
* the weakest option — against a device that expects AES. The poll then fails
|
|
18
|
+
* in a way that looks like a timeout rather than a config error.
|
|
19
|
+
*
|
|
20
|
+
* Returning undefined rather than a default member is deliberate: "unset" and
|
|
21
|
+
* "unreadable" are different problems, and only the caller knows whether it is
|
|
22
|
+
* safe to fall back. isUnrecognized() names the second case so the probe can
|
|
23
|
+
* refuse to poll rather than guess a cipher.
|
|
24
|
+
*
|
|
25
|
+
* The accepted spellings cover case, surrounding whitespace, and the hyphen
|
|
26
|
+
* the UI labels use. AES here is AES-128, per RFC 3826.
|
|
27
|
+
*/
|
|
28
|
+
export class SnmpPrivProtocolUtil {
|
|
29
|
+
public static parse(
|
|
30
|
+
value: string | undefined | null,
|
|
31
|
+
): SnmpPrivProtocol | undefined {
|
|
32
|
+
switch ((value || "").trim().toLowerCase()) {
|
|
33
|
+
case "des":
|
|
34
|
+
return SnmpPrivProtocol.DES;
|
|
35
|
+
case "aes":
|
|
36
|
+
case "aes128":
|
|
37
|
+
case "aes-128":
|
|
38
|
+
return SnmpPrivProtocol.AES;
|
|
39
|
+
case "aes256":
|
|
40
|
+
case "aes-256":
|
|
41
|
+
return SnmpPrivProtocol.AES256;
|
|
42
|
+
default:
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* True only when something is stored and none of the spellings match — an
|
|
49
|
+
* empty or absent column is "unset", not "unrecognized".
|
|
50
|
+
*/
|
|
51
|
+
public static isUnrecognized(value: string | undefined | null): boolean {
|
|
52
|
+
if (!(value || "").trim()) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return SnmpPrivProtocolUtil.parse(value) === undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
7
60
|
export default SnmpPrivProtocol;
|
|
@@ -4,4 +4,47 @@ enum SnmpSecurityLevel {
|
|
|
4
4
|
AuthPriv = "authPriv",
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/*
|
|
8
|
+
* This is the most consequential of the v3 enums to misread, because the
|
|
9
|
+
* fallback is not merely a weaker algorithm — it is no security at all.
|
|
10
|
+
*
|
|
11
|
+
* The snmpV3SecurityLevel column is free text. Casting it straight to this
|
|
12
|
+
* enum and letting an unmatched value fall through to NoAuthNoPriv means a
|
|
13
|
+
* device configured for authPriv gets polled with its authentication and
|
|
14
|
+
* privacy material dropped: the username goes out in cleartext and nothing is
|
|
15
|
+
* encrypted. The device rejects it, so the visible symptom is a dead monitor
|
|
16
|
+
* rather than a config error, and the downgrade itself is invisible.
|
|
17
|
+
*
|
|
18
|
+
* The keys ("AuthPriv") and values ("authPriv") differ only by the case of the
|
|
19
|
+
* first letter, which is exactly the kind of drift a hand-written row or an
|
|
20
|
+
* API caller reading the docs will produce. Lowercasing collapses the two
|
|
21
|
+
* spellings onto each other, so parse() accepts both by construction.
|
|
22
|
+
*
|
|
23
|
+
* See SnmpPrivProtocol for why parse() returns undefined rather than a default.
|
|
24
|
+
*/
|
|
25
|
+
export class SnmpSecurityLevelUtil {
|
|
26
|
+
public static parse(
|
|
27
|
+
value: string | undefined | null,
|
|
28
|
+
): SnmpSecurityLevel | undefined {
|
|
29
|
+
switch ((value || "").trim().toLowerCase()) {
|
|
30
|
+
case "noauthnopriv":
|
|
31
|
+
return SnmpSecurityLevel.NoAuthNoPriv;
|
|
32
|
+
case "authnopriv":
|
|
33
|
+
return SnmpSecurityLevel.AuthNoPriv;
|
|
34
|
+
case "authpriv":
|
|
35
|
+
return SnmpSecurityLevel.AuthPriv;
|
|
36
|
+
default:
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public static isUnrecognized(value: string | undefined | null): boolean {
|
|
42
|
+
if (!(value || "").trim()) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return SnmpSecurityLevelUtil.parse(value) === undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
7
50
|
export default SnmpSecurityLevel;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The SNMPv2 system group (1.3.6.1.2.1.1), read by the probe alongside the
|
|
3
|
+
* interface walk and by subnet discovery. sysObjectId is the vendor's
|
|
4
|
+
* registered enterprise OID — the canonical device fingerprint used to
|
|
5
|
+
* suggest a vendor OID template and derive the vendor name without MIBs.
|
|
6
|
+
* sysUpTimeSeconds is converted from TimeTicks (hundredths of a second) on
|
|
7
|
+
* the probe.
|
|
8
|
+
*/
|
|
9
|
+
export default interface SnmpSystemInfo {
|
|
10
|
+
sysDescr?: string | undefined;
|
|
11
|
+
sysName?: string | undefined;
|
|
12
|
+
sysObjectId?: string | undefined;
|
|
13
|
+
sysLocation?: string | undefined;
|
|
14
|
+
sysContact?: string | undefined;
|
|
15
|
+
sysUpTimeSeconds?: number | undefined;
|
|
16
|
+
}
|
|
@@ -48,7 +48,7 @@ const MIKROTIK: SnmpVendorTemplate = {
|
|
|
48
48
|
id: "mikrotik-routeros",
|
|
49
49
|
label: "MikroTik RouterOS",
|
|
50
50
|
description:
|
|
51
|
-
"CPU load,
|
|
51
|
+
"CPU load, board temperature, and voltage from the MikroTik health MIB, plus standard Host Resources CPU.",
|
|
52
52
|
oids: [
|
|
53
53
|
{
|
|
54
54
|
oid: "1.3.6.1.2.1.25.3.3.1.2.1",
|
|
@@ -56,9 +56,10 @@ const MIKROTIK: SnmpVendorTemplate = {
|
|
|
56
56
|
description: "hrProcessorLoad — first processor.",
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
|
+
// .10.0 is mtxrHlTemperature (board temp); processor temp is .11.0.
|
|
59
60
|
oid: "1.3.6.1.4.1.14988.1.1.3.10.0",
|
|
60
|
-
name: "
|
|
61
|
-
description: "
|
|
61
|
+
name: "Temperature (C)",
|
|
62
|
+
description: "mtxrHlTemperature — system/board temperature.",
|
|
62
63
|
},
|
|
63
64
|
{
|
|
64
65
|
oid: "1.3.6.1.4.1.14988.1.1.3.8.0",
|
|
@@ -128,6 +129,58 @@ export const SnmpVendorTemplates: Array<SnmpVendorTemplate> = [
|
|
|
128
129
|
UBIQUITI,
|
|
129
130
|
];
|
|
130
131
|
|
|
132
|
+
/*
|
|
133
|
+
* IANA private-enterprise numbers → vendor display names, for the vendors
|
|
134
|
+
* that actually show up on monitored networks. Used to derive a vendor from
|
|
135
|
+
* sysObjectID (1.3.6.1.4.1.<enterprise>...) when the device does not
|
|
136
|
+
* implement ENTITY-MIB. Not exhaustive by design — unknown enterprises just
|
|
137
|
+
* leave the vendor blank.
|
|
138
|
+
*/
|
|
139
|
+
const ENTERPRISE_VENDOR_NAMES: Record<number, string> = {
|
|
140
|
+
9: "Cisco",
|
|
141
|
+
11: "HPE",
|
|
142
|
+
43: "3Com",
|
|
143
|
+
171: "D-Link",
|
|
144
|
+
207: "Allied Telesis",
|
|
145
|
+
674: "Dell",
|
|
146
|
+
1588: "Brocade",
|
|
147
|
+
1916: "Extreme Networks",
|
|
148
|
+
2011: "Huawei",
|
|
149
|
+
2021: "Net-SNMP",
|
|
150
|
+
2636: "Juniper",
|
|
151
|
+
3224: "NetScreen",
|
|
152
|
+
3375: "F5",
|
|
153
|
+
4526: "Netgear",
|
|
154
|
+
6027: "Force10",
|
|
155
|
+
6486: "Alcatel-Lucent",
|
|
156
|
+
6574: "Synology",
|
|
157
|
+
8072: "Net-SNMP",
|
|
158
|
+
9303: "PacketFront",
|
|
159
|
+
10002: "Frogfoot",
|
|
160
|
+
11863: "TP-Link",
|
|
161
|
+
12325: "pfSense",
|
|
162
|
+
12356: "Fortinet",
|
|
163
|
+
14823: "Aruba",
|
|
164
|
+
14988: "MikroTik",
|
|
165
|
+
17163: "Riverbed",
|
|
166
|
+
22610: "Vyatta",
|
|
167
|
+
24681: "QNAP",
|
|
168
|
+
25461: "Palo Alto Networks",
|
|
169
|
+
25506: "H3C",
|
|
170
|
+
26543: "Yamaha",
|
|
171
|
+
30065: "Arista",
|
|
172
|
+
35098: "PICA8",
|
|
173
|
+
41112: "Ubiquiti",
|
|
174
|
+
47196: "OPNsense",
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// sysObjectID template routing: enterprise number → vendor template id.
|
|
178
|
+
const ENTERPRISE_TEMPLATE_IDS: Record<number, string> = {
|
|
179
|
+
9: "cisco-ios",
|
|
180
|
+
14988: "mikrotik-routeros",
|
|
181
|
+
41112: "ubiquiti-edgeos",
|
|
182
|
+
};
|
|
183
|
+
|
|
131
184
|
export default class SnmpVendorTemplateUtil {
|
|
132
185
|
public static getAll(): Array<SnmpVendorTemplate> {
|
|
133
186
|
return SnmpVendorTemplates;
|
|
@@ -139,6 +192,69 @@ export default class SnmpVendorTemplateUtil {
|
|
|
139
192
|
});
|
|
140
193
|
}
|
|
141
194
|
|
|
195
|
+
/*
|
|
196
|
+
* Extracts the IANA private-enterprise number from a sysObjectID value
|
|
197
|
+
* ("1.3.6.1.4.1.<enterprise>...", with or without a leading dot). Returns
|
|
198
|
+
* undefined for OIDs outside the enterprises arc (e.g. the mib-2 values
|
|
199
|
+
* some appliances report).
|
|
200
|
+
*/
|
|
201
|
+
public static getEnterpriseNumber(
|
|
202
|
+
sysObjectId: string | undefined,
|
|
203
|
+
): number | undefined {
|
|
204
|
+
if (!sysObjectId) {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const normalized: string = sysObjectId.trim().replace(/^\./, "");
|
|
209
|
+
const enterprisesPrefix: string = "1.3.6.1.4.1.";
|
|
210
|
+
|
|
211
|
+
if (!normalized.startsWith(enterprisesPrefix)) {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const enterprisePart: string | undefined = normalized
|
|
216
|
+
.substring(enterprisesPrefix.length)
|
|
217
|
+
.split(".")[0];
|
|
218
|
+
|
|
219
|
+
const enterpriseNumber: number = parseInt(enterprisePart || "", 10);
|
|
220
|
+
return isNaN(enterpriseNumber) ? undefined : enterpriseNumber;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
public static getVendorNameBySysObjectId(
|
|
224
|
+
sysObjectId: string | undefined,
|
|
225
|
+
): string | undefined {
|
|
226
|
+
const enterpriseNumber: number | undefined =
|
|
227
|
+
SnmpVendorTemplateUtil.getEnterpriseNumber(sysObjectId);
|
|
228
|
+
|
|
229
|
+
if (enterpriseNumber === undefined) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return ENTERPRISE_VENDOR_NAMES[enterpriseNumber];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/*
|
|
237
|
+
* Suggests the vendor OID template matching a device's sysObjectID.
|
|
238
|
+
* Returns undefined when no vendor-specific template exists — callers can
|
|
239
|
+
* fall back to the generic Host Resources template, which most
|
|
240
|
+
* Linux-based appliances answer.
|
|
241
|
+
*/
|
|
242
|
+
public static matchBySysObjectId(
|
|
243
|
+
sysObjectId: string | undefined,
|
|
244
|
+
): SnmpVendorTemplate | undefined {
|
|
245
|
+
const enterpriseNumber: number | undefined =
|
|
246
|
+
SnmpVendorTemplateUtil.getEnterpriseNumber(sysObjectId);
|
|
247
|
+
|
|
248
|
+
if (enterpriseNumber === undefined) {
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const templateId: string | undefined =
|
|
253
|
+
ENTERPRISE_TEMPLATE_IDS[enterpriseNumber];
|
|
254
|
+
|
|
255
|
+
return templateId ? SnmpVendorTemplateUtil.getById(templateId) : undefined;
|
|
256
|
+
}
|
|
257
|
+
|
|
142
258
|
/*
|
|
143
259
|
* Merges a template's OIDs into an existing list, skipping any OID already
|
|
144
260
|
* present so applying a template twice (or applying two overlapping ones)
|
|
@@ -4,4 +4,44 @@ enum SnmpVersion {
|
|
|
4
4
|
V3 = "3",
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/*
|
|
8
|
+
* Two spellings exist, and they belong to two different layers:
|
|
9
|
+
*
|
|
10
|
+
* - These enum VALUES ("1"/"2c"/"3") are the probe-contract spelling.
|
|
11
|
+
* MonitorStepSnmpMonitor.snmpVersion is typed as this enum, and
|
|
12
|
+
* SnmpMonitor branches on it to pick the session type.
|
|
13
|
+
* - The KEYS ("V1"/"V2c"/"V3") are the stored spelling. The free-text
|
|
14
|
+
* snmpVersion column on NetworkDevice / NetworkDeviceDiscoveryScan holds
|
|
15
|
+
* these: it is what every form writes, what the column default is, and
|
|
16
|
+
* what the public API reference documents as the allowed values.
|
|
17
|
+
*
|
|
18
|
+
* parse() is the conversion at that seam, and it is the only correct way to
|
|
19
|
+
* read the column. Comparing the raw column against an enum member instead
|
|
20
|
+
* silently takes the wrong branch — a stored "V3" is not === SnmpVersion.V3
|
|
21
|
+
* ("3"), so a v3 device reads as v2c and gets polled in cleartext.
|
|
22
|
+
*
|
|
23
|
+
* parse() also accepts the value spelling and mixed case, so a row written by
|
|
24
|
+
* hand (direct API call, manual DB edit) can't strand a device in the wrong
|
|
25
|
+
* branch. No product path writes that spelling — the tolerance is a guard, not
|
|
26
|
+
* a sign that the column is expected to hold both.
|
|
27
|
+
*/
|
|
28
|
+
export class SnmpVersionUtil {
|
|
29
|
+
public static parse(value: string | undefined | null): SnmpVersion {
|
|
30
|
+
switch ((value || "").trim().toLowerCase()) {
|
|
31
|
+
case "1":
|
|
32
|
+
case "v1":
|
|
33
|
+
return SnmpVersion.V1;
|
|
34
|
+
case "3":
|
|
35
|
+
case "v3":
|
|
36
|
+
return SnmpVersion.V3;
|
|
37
|
+
default:
|
|
38
|
+
return SnmpVersion.V2c;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public static isV3(value: string | undefined | null): boolean {
|
|
43
|
+
return SnmpVersionUtil.parse(value) === SnmpVersion.V3;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
7
47
|
export default SnmpVersion;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One network flow parsed from a NetFlow v5 record, forwarded by a probe's
|
|
3
|
+
* NetFlow receiver to the server, where it is correlated to a NetworkDevice
|
|
4
|
+
* by the EXPORTER's IP address (the router/switch that sent the datagram)
|
|
5
|
+
* and written into the ClickHouse NetworkFlow table. Source/destination
|
|
6
|
+
* describe the traffic itself; exporterIpAddress identifies the device that
|
|
7
|
+
* observed it. Flow timestamps are converted to wall-clock time by the
|
|
8
|
+
* probe from the datagram's sysUptime/unixSecs header fields.
|
|
9
|
+
*/
|
|
10
|
+
export default interface NetworkFlowRecord {
|
|
11
|
+
exporterIpAddress: string;
|
|
12
|
+
sourceIpAddress: string;
|
|
13
|
+
destinationIpAddress: string;
|
|
14
|
+
sourcePort: number;
|
|
15
|
+
destinationPort: number;
|
|
16
|
+
protocolNumber: number;
|
|
17
|
+
octets: number;
|
|
18
|
+
packets: number;
|
|
19
|
+
flowStartAt: Date;
|
|
20
|
+
flowEndAt: Date;
|
|
21
|
+
inputInterfaceIndex?: number | undefined;
|
|
22
|
+
outputInterfaceIndex?: number | undefined;
|
|
23
|
+
tcpFlags?: number | undefined;
|
|
24
|
+
tos?: number | undefined;
|
|
25
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A syslog message received by a probe's syslog receiver and forwarded to
|
|
3
|
+
* the server, where it is correlated to a NetworkDevice by source IP and
|
|
4
|
+
* written into the telemetry Logs pipeline. Facility and severity are the
|
|
5
|
+
* RFC 5424 numerical codes decoded from the message's <PRI> prefix
|
|
6
|
+
* (facility 0-23, severity 0-7). The timestamp comes from the message
|
|
7
|
+
* itself when parseable, otherwise it equals receivedAt.
|
|
8
|
+
*/
|
|
9
|
+
export default interface SyslogMessage {
|
|
10
|
+
sourceIpAddress: string;
|
|
11
|
+
facility: number;
|
|
12
|
+
severity: number;
|
|
13
|
+
timestamp: Date;
|
|
14
|
+
hostname?: string | undefined;
|
|
15
|
+
appName?: string | undefined;
|
|
16
|
+
message: string;
|
|
17
|
+
receivedAt: Date;
|
|
18
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { JSONObject } from "../JSON";
|
|
2
|
+
|
|
1
3
|
/*
|
|
2
4
|
* Serializable view state for the Metrics and Traces explorers. Stored in the
|
|
3
5
|
* `query` JSONB column of MetricSavedView / TraceSavedView. This is the same
|
|
@@ -25,4 +27,11 @@ export default interface TelemetrySavedViewState {
|
|
|
25
27
|
pageSize?: number | undefined;
|
|
26
28
|
// Traces explorer: root-spans-only toggle (defaults to true when absent).
|
|
27
29
|
rootOnly?: boolean | undefined;
|
|
30
|
+
/*
|
|
31
|
+
* Metrics explorer: the full chart-builder state — MetricsViewConfig-
|
|
32
|
+
* shaped { queryConfigs, formulaConfigs } plus a time-range token.
|
|
33
|
+
* Kept loosely typed like the rest of this state: the explorer owns
|
|
34
|
+
* serialization and must deserialize defensively.
|
|
35
|
+
*/
|
|
36
|
+
explorerConfig?: JSONObject | undefined;
|
|
28
37
|
}
|