@oneuptime/common 9.4.11 → 9.4.13
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/Incident.ts +77 -0
- package/Models/DatabaseModels/IncidentEpisode.ts +1223 -0
- package/Models/DatabaseModels/IncidentEpisodeFeed.ts +533 -0
- package/Models/DatabaseModels/IncidentEpisodeInternalNote.ts +456 -0
- package/Models/DatabaseModels/IncidentEpisodeMember.ts +587 -0
- package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +421 -0
- package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +419 -0
- package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +524 -0
- package/Models/DatabaseModels/IncidentGroupingRule.ts +1430 -0
- package/Models/DatabaseModels/Index.ts +18 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +70 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +59 -0
- package/Models/DatabaseModels/Project.ts +29 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +48 -0
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -0
- package/Models/DatabaseModels/WorkspaceNotificationLog.ts +57 -0
- package/Server/API/BillingAPI.ts +78 -1
- package/Server/API/IncidentEpisodeAPI.ts +150 -0
- package/Server/API/SlackAPI.ts +23 -0
- package/Server/API/UserOnCallLogTimelineAPI.ts +24 -4
- package/Server/BillingConfig.ts +3 -0
- package/Server/EnvironmentConfig.ts +1 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.ts +729 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.ts +261 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Services/AIBillingService.ts +10 -0
- package/Server/Services/BillingService.ts +349 -1
- package/Server/Services/CallService.ts +1 -0
- package/Server/Services/IncidentEpisodeFeedService.ts +94 -0
- package/Server/Services/IncidentEpisodeInternalNoteService.ts +71 -0
- package/Server/Services/IncidentEpisodeMemberService.ts +321 -0
- package/Server/Services/IncidentEpisodeOwnerTeamService.ts +10 -0
- package/Server/Services/IncidentEpisodeOwnerUserService.ts +10 -0
- package/Server/Services/IncidentEpisodeService.ts +1045 -0
- package/Server/Services/IncidentEpisodeStateTimelineService.ts +566 -0
- package/Server/Services/IncidentGroupingEngineService.ts +1047 -0
- package/Server/Services/IncidentGroupingRuleService.ts +14 -0
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +18 -0
- package/Server/Services/MailService.ts +1 -0
- package/Server/Services/MonitorService.ts +9 -0
- package/Server/Services/NotificationService.ts +10 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +18 -0
- package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +64 -2
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +26 -1
- package/Server/Services/OnCallDutyPolicyService.ts +15 -0
- package/Server/Services/ProjectService.ts +33 -2
- package/Server/Services/SmsService.ts +1 -0
- package/Server/Services/UserNotificationRuleService.ts +48 -2
- package/Server/Services/UserNotificationSettingService.ts +23 -0
- package/Server/Services/UserOnCallLogService.ts +41 -4
- package/Server/Services/UserService.ts +45 -1
- package/Server/Services/WhatsAppService.ts +1 -0
- package/Server/Services/WorkspaceNotificationLogService.ts +16 -0
- package/Server/Services/WorkspaceNotificationRuleService.ts +116 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +20 -0
- package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +490 -0
- package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +1 -1
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +1 -1
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +1 -1
- package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +1 -1
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +2 -2
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +182 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +13 -0
- package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +1 -1
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +37 -0
- package/Server/Utils/PushNotificationUtil.ts +31 -0
- package/Server/Utils/WhatsAppTemplateUtil.ts +14 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +18 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +702 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +20 -0
- package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +11 -0
- package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +918 -0
- package/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.ts +120 -0
- package/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.ts +74 -0
- package/Types/Email/EmailTemplateType.ts +7 -0
- package/Types/Monitor/CriteriaFilter.ts +24 -4
- package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
- package/Types/Monitor/MonitorStep.ts +37 -0
- package/Types/Monitor/MonitorStepSnmpMonitor.ts +102 -0
- package/Types/Monitor/MonitorType.ts +15 -2
- package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +8 -0
- package/Types/Monitor/SnmpMonitor/SnmpDataType.ts +21 -0
- package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +16 -0
- package/Types/Monitor/SnmpMonitor/SnmpOid.ts +60 -0
- package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +7 -0
- package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +7 -0
- package/Types/Monitor/SnmpMonitor/SnmpV3Auth.ts +12 -0
- package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +7 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
- package/Types/Permission.ts +311 -0
- package/Types/Probe/ProbeMonitorResponse.ts +2 -0
- package/Types/UserNotification/UserNotificationEventType.ts +1 -0
- package/Types/WhatsApp/WhatsAppTemplates.ts +24 -0
- package/Types/Workspace/NotificationRules/EventType.ts +1 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +38 -1
- package/Utils/Monitor/MonitorMetricType.ts +2 -1
- package/build/dist/Models/DatabaseModels/Incident.js +78 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1250 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +555 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js +467 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +607 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +437 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +436 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +546 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +1437 -0
- package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +16 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +69 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +58 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +30 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +47 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +58 -0
- package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -1
- package/build/dist/Server/API/BillingAPI.js +44 -1
- package/build/dist/Server/API/BillingAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +97 -0
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -0
- package/build/dist/Server/API/SlackAPI.js +18 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +30 -10
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/BillingConfig.js +2 -0
- package/build/dist/Server/BillingConfig.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +1 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js +256 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js +96 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js +25 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIBillingService.js +10 -1
- package/build/dist/Server/Services/AIBillingService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +224 -5
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/CallService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeFeedService.js +83 -0
- package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js +70 -0
- package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeMemberService.js +298 -0
- package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js +9 -0
- package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeService.js +933 -0
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -0
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +498 -0
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -0
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +799 -0
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -0
- package/build/dist/Server/Services/IncidentGroupingRuleService.js +13 -0
- package/build/dist/Server/Services/IncidentGroupingRuleService.js.map +1 -0
- package/build/dist/Server/Services/IncidentService.js +10 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +16 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MailService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +9 -1
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NotificationService.js +10 -1
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +10 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +48 -2
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +20 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +16 -3
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/SmsService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +39 -2
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +9 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js +35 -3
- package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +40 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/WhatsAppService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationLogService.js +12 -0
- package/build/dist/Server/Services/WorkspaceNotificationLogService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +95 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +17 -0
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +402 -0
- package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +2 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +135 -0
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +10 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +26 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/PushNotificationUtil.js +20 -0
- package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +8 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +17 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +547 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +15 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +10 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +651 -0
- package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js +100 -0
- package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js +70 -0
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +6 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +16 -3
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +26 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +77 -0
- package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +13 -2
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +9 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js +22 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js +55 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +8 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +8 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js +2 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js.map +1 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +8 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +264 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
- package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +15 -0
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
- package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +33 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +2 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import BadDataException from "../../../../../Types/Exception/BadDataException";
|
|
2
|
+
import ObjectID from "../../../../../Types/ObjectID";
|
|
3
|
+
import {
|
|
4
|
+
WorkspaceMessageBlock,
|
|
5
|
+
WorkspaceMessagePayloadButton,
|
|
6
|
+
WorkspacePayloadButtons,
|
|
7
|
+
WorkspacePayloadDivider,
|
|
8
|
+
} from "../../../../../Types/Workspace/WorkspaceMessagePayload";
|
|
9
|
+
import IncidentEpisodeService from "../../../../Services/IncidentEpisodeService";
|
|
10
|
+
import SlackActionType from "../../../../Utils/Workspace/Slack/Actions/ActionTypes";
|
|
11
|
+
import CaptureSpan from "../../../Telemetry/CaptureSpan";
|
|
12
|
+
|
|
13
|
+
export default class SlackIncidentEpisodeMessages {
|
|
14
|
+
@CaptureSpan()
|
|
15
|
+
public static async getIncidentEpisodeCreateMessageBlocks(data: {
|
|
16
|
+
incidentEpisodeId: ObjectID;
|
|
17
|
+
projectId: ObjectID;
|
|
18
|
+
}): Promise<Array<WorkspaceMessageBlock>> {
|
|
19
|
+
if (!data.incidentEpisodeId) {
|
|
20
|
+
throw new BadDataException("Incident Episode ID is required");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Slack.
|
|
24
|
+
|
|
25
|
+
const blockSlack: Array<WorkspaceMessageBlock> = [];
|
|
26
|
+
|
|
27
|
+
// add divider.
|
|
28
|
+
|
|
29
|
+
const dividerBlock: WorkspacePayloadDivider = {
|
|
30
|
+
_type: "WorkspacePayloadDivider",
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
blockSlack.push(dividerBlock);
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* now add buttons.
|
|
37
|
+
* View data.
|
|
38
|
+
* Execute On Call
|
|
39
|
+
* Acknowledge incident episode
|
|
40
|
+
* Resolve data.
|
|
41
|
+
* Change Incident Episode State.
|
|
42
|
+
* Add Note.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
const buttons: Array<WorkspaceMessagePayloadButton> = [];
|
|
46
|
+
|
|
47
|
+
// view data.
|
|
48
|
+
const viewIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
|
|
49
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
50
|
+
title: "View Episode",
|
|
51
|
+
url: await IncidentEpisodeService.getEpisodeLinkInDashboard(
|
|
52
|
+
data.projectId!,
|
|
53
|
+
data.incidentEpisodeId!,
|
|
54
|
+
),
|
|
55
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
56
|
+
actionId: SlackActionType.ViewIncidentEpisode,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
buttons.push(viewIncidentEpisodeButton);
|
|
60
|
+
|
|
61
|
+
// execute on call.
|
|
62
|
+
const executeOnCallButton: WorkspaceMessagePayloadButton = {
|
|
63
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
64
|
+
title: "Execute On Call",
|
|
65
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
66
|
+
actionId: SlackActionType.ViewExecuteIncidentEpisodeOnCallPolicy,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
buttons.push(executeOnCallButton);
|
|
70
|
+
|
|
71
|
+
// acknowledge data.
|
|
72
|
+
const acknowledgeIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
|
|
73
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
74
|
+
title: "Acknowledge Episode",
|
|
75
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
76
|
+
actionId: SlackActionType.AcknowledgeIncidentEpisode,
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
buttons.push(acknowledgeIncidentEpisodeButton);
|
|
80
|
+
|
|
81
|
+
// resolve data.
|
|
82
|
+
const resolveIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
|
|
83
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
84
|
+
title: "Resolve Episode",
|
|
85
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
86
|
+
actionId: SlackActionType.ResolveIncidentEpisode,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
buttons.push(resolveIncidentEpisodeButton);
|
|
90
|
+
|
|
91
|
+
// change incident episode state.
|
|
92
|
+
const changeIncidentEpisodeStateButton: WorkspaceMessagePayloadButton = {
|
|
93
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
94
|
+
title: "Change Episode State",
|
|
95
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
96
|
+
actionId: SlackActionType.ViewChangeIncidentEpisodeState,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
buttons.push(changeIncidentEpisodeStateButton);
|
|
100
|
+
|
|
101
|
+
// add note.
|
|
102
|
+
const addNoteButton: WorkspaceMessagePayloadButton = {
|
|
103
|
+
_type: "WorkspaceMessagePayloadButton",
|
|
104
|
+
title: "Add Note",
|
|
105
|
+
value: data.incidentEpisodeId?.toString() || "",
|
|
106
|
+
actionId: SlackActionType.ViewAddIncidentEpisodeNote,
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
buttons.push(addNoteButton);
|
|
110
|
+
|
|
111
|
+
const workspacePayloadButtons: WorkspacePayloadButtons = {
|
|
112
|
+
buttons: buttons,
|
|
113
|
+
_type: "WorkspacePayloadButtons",
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
blockSlack.push(workspacePayloadButtons);
|
|
117
|
+
|
|
118
|
+
return blockSlack;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import ObjectID from "../../../../Types/ObjectID";
|
|
2
|
+
import NotificationRuleEventType from "../../../../Types/Workspace/NotificationRules/EventType";
|
|
3
|
+
import NotificationRuleWorkspaceChannel from "../../../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
|
|
4
|
+
import { WorkspaceMessageBlock } from "../../../../Types/Workspace/WorkspaceMessagePayload";
|
|
5
|
+
import WorkspaceType from "../../../../Types/Workspace/WorkspaceType";
|
|
6
|
+
import WorkspaceNotificationRuleService, {
|
|
7
|
+
MessageBlocksByWorkspaceType,
|
|
8
|
+
} from "../../../Services/WorkspaceNotificationRuleService";
|
|
9
|
+
import logger from "../../Logger";
|
|
10
|
+
import SlackIncidentEpisodeMessages from "../Slack/Messages/IncidentEpisode";
|
|
11
|
+
import CaptureSpan from "../../Telemetry/CaptureSpan";
|
|
12
|
+
|
|
13
|
+
export default class IncidentEpisodeWorkspaceMessages {
|
|
14
|
+
@CaptureSpan()
|
|
15
|
+
public static async createChannelsAndInviteUsersToChannels(data: {
|
|
16
|
+
projectId: ObjectID;
|
|
17
|
+
incidentEpisodeId: ObjectID;
|
|
18
|
+
episodeNumber: number;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
channelsCreated: NotificationRuleWorkspaceChannel[];
|
|
21
|
+
} | null> {
|
|
22
|
+
try {
|
|
23
|
+
// we will notify the workspace about the incident episode creation with the bot token which is in WorkspaceProjectAuth Table.
|
|
24
|
+
return await WorkspaceNotificationRuleService.createChannelsAndInviteUsersToChannelsBasedOnRules(
|
|
25
|
+
{
|
|
26
|
+
projectId: data.projectId,
|
|
27
|
+
notificationFor: {
|
|
28
|
+
incidentEpisodeId: data.incidentEpisodeId,
|
|
29
|
+
},
|
|
30
|
+
notificationRuleEventType: NotificationRuleEventType.IncidentEpisode,
|
|
31
|
+
channelNameSiffix: data.episodeNumber.toString(),
|
|
32
|
+
},
|
|
33
|
+
);
|
|
34
|
+
} catch (err) {
|
|
35
|
+
// log the error and continue.
|
|
36
|
+
logger.error(
|
|
37
|
+
"Error in IncidentEpisode createChannelsAndInviteUsersToChannels",
|
|
38
|
+
);
|
|
39
|
+
logger.error(err);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@CaptureSpan()
|
|
45
|
+
public static async getIncidentEpisodeCreateMessageBlocks(data: {
|
|
46
|
+
incidentEpisodeId: ObjectID;
|
|
47
|
+
projectId: ObjectID;
|
|
48
|
+
}): Promise<Array<MessageBlocksByWorkspaceType>> {
|
|
49
|
+
const { incidentEpisodeId, projectId } = data;
|
|
50
|
+
|
|
51
|
+
const slackBlocks: WorkspaceMessageBlock[] =
|
|
52
|
+
await SlackIncidentEpisodeMessages.getIncidentEpisodeCreateMessageBlocks({
|
|
53
|
+
incidentEpisodeId: incidentEpisodeId,
|
|
54
|
+
projectId: projectId!,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const microsoftTeamsBlocks: WorkspaceMessageBlock[] =
|
|
58
|
+
await SlackIncidentEpisodeMessages.getIncidentEpisodeCreateMessageBlocks({
|
|
59
|
+
incidentEpisodeId: incidentEpisodeId,
|
|
60
|
+
projectId: projectId!,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return [
|
|
64
|
+
{
|
|
65
|
+
workspaceType: WorkspaceType.Slack,
|
|
66
|
+
messageBlocks: slackBlocks,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
workspaceType: WorkspaceType.MicrosoftTeams,
|
|
70
|
+
messageBlocks: microsoftTeamsBlocks,
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -47,6 +47,11 @@ enum EmailTemplateType {
|
|
|
47
47
|
AlertEpisodeOwnerNotePosted = "AlertEpisodeOwnerNotePosted.hbs",
|
|
48
48
|
AlertEpisodeOwnerResourceCreated = "AlertEpisodeOwnerResourceCreated.hbs",
|
|
49
49
|
|
|
50
|
+
IncidentEpisodeOwnerAdded = "IncidentEpisodeOwnerAdded.hbs",
|
|
51
|
+
IncidentEpisodeOwnerStateChanged = "IncidentEpisodeOwnerStateChanged.hbs",
|
|
52
|
+
IncidentEpisodeOwnerNotePosted = "IncidentEpisodeOwnerNotePosted.hbs",
|
|
53
|
+
IncidentEpisodeOwnerResourceCreated = "IncidentEpisodeOwnerResourceCreated.hbs",
|
|
54
|
+
|
|
50
55
|
ScheduledMaintenanceOwnerNotePosted = "ScheduledMaintenanceOwnerNotePosted.hbs",
|
|
51
56
|
ScheduledMaintenanceOwnerAdded = "ScheduledMaintenanceOwnerAdded.hbs",
|
|
52
57
|
ScheduledMaintenanceOwnerStateChanged = "ScheduledMaintenanceOwnerStateChanged.hbs",
|
|
@@ -59,6 +64,7 @@ enum EmailTemplateType {
|
|
|
59
64
|
AcknowledgeIncident = "AcknowledgeIncident.hbs",
|
|
60
65
|
AcknowledgeAlert = "AcknowledgeAlert.hbs",
|
|
61
66
|
AcknowledgeAlertEpisode = "AcknowledgeAlertEpisode.hbs",
|
|
67
|
+
AcknowledgeIncidentEpisode = "AcknowledgeIncidentEpisode.hbs",
|
|
62
68
|
|
|
63
69
|
UserAddedToOnCallPolicy = "UserAddedToOnCallPolicy.hbs",
|
|
64
70
|
UserRemovedFromOnCallPolicy = "UserRemovedFromOnCallPolicy.hbs",
|
|
@@ -67,6 +73,7 @@ enum EmailTemplateType {
|
|
|
67
73
|
UserNoLongerActiveOnOnCallRoster = "UserNoLongerActiveOnOnCallRoster.hbs",
|
|
68
74
|
|
|
69
75
|
ProjectSubscriptionOverdue = "ProjectSubscriptionOverdue.hbs",
|
|
76
|
+
Invoice = "Invoice.hbs",
|
|
70
77
|
}
|
|
71
78
|
|
|
72
79
|
export default EmailTemplateType;
|
|
@@ -54,12 +54,22 @@ export enum CheckOn {
|
|
|
54
54
|
EmailBody = "Email Body",
|
|
55
55
|
EmailTo = "Email To Address",
|
|
56
56
|
EmailReceivedAt = "Email Received",
|
|
57
|
+
|
|
58
|
+
// SNMP monitors.
|
|
59
|
+
SnmpOidValue = "SNMP OID Value",
|
|
60
|
+
SnmpOidExists = "SNMP OID Exists",
|
|
61
|
+
SnmpResponseTime = "SNMP Response Time (in ms)",
|
|
62
|
+
SnmpIsOnline = "SNMP Device Is Online",
|
|
57
63
|
}
|
|
58
64
|
|
|
59
65
|
export interface ServerMonitorOptions {
|
|
60
66
|
diskPath?: string | undefined;
|
|
61
67
|
}
|
|
62
68
|
|
|
69
|
+
export interface SnmpMonitorOptions {
|
|
70
|
+
oid?: string | undefined;
|
|
71
|
+
}
|
|
72
|
+
|
|
63
73
|
export enum EvaluateOverTimeType {
|
|
64
74
|
Average = "Average",
|
|
65
75
|
Sum = "Sum",
|
|
@@ -95,9 +105,10 @@ export interface CriteriaFilter {
|
|
|
95
105
|
checkOn: CheckOn;
|
|
96
106
|
serverMonitorOptions?: ServerMonitorOptions | undefined;
|
|
97
107
|
metricMonitorOptions?: MetricMonitorOptions | undefined;
|
|
108
|
+
snmpMonitorOptions?: SnmpMonitorOptions | undefined;
|
|
98
109
|
filterType: FilterType | undefined;
|
|
99
110
|
value: string | number | undefined;
|
|
100
|
-
|
|
111
|
+
evaluateOverTime?: boolean | undefined;
|
|
101
112
|
evaluateOverTimeOptions?: EvaluateOverTimeOptions | undefined;
|
|
102
113
|
}
|
|
103
114
|
|
|
@@ -130,7 +141,7 @@ export class CriteriaFilterUtil {
|
|
|
130
141
|
}): boolean {
|
|
131
142
|
const { checkOn } = data;
|
|
132
143
|
|
|
133
|
-
if (checkOn === CheckOn.IsOnline) {
|
|
144
|
+
if (checkOn === CheckOn.IsOnline || checkOn === CheckOn.SnmpIsOnline) {
|
|
134
145
|
return false;
|
|
135
146
|
}
|
|
136
147
|
|
|
@@ -138,6 +149,10 @@ export class CriteriaFilterUtil {
|
|
|
138
149
|
return false;
|
|
139
150
|
}
|
|
140
151
|
|
|
152
|
+
if (checkOn === CheckOn.SnmpOidExists) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
|
|
141
156
|
if (
|
|
142
157
|
checkOn === CheckOn.IsValidCertificate ||
|
|
143
158
|
checkOn === CheckOn.IsSelfSignedCertificate ||
|
|
@@ -187,7 +202,9 @@ export class CriteriaFilterUtil {
|
|
|
187
202
|
checkOn === CheckOn.DiskUsagePercent ||
|
|
188
203
|
checkOn === CheckOn.CPUUsagePercent ||
|
|
189
204
|
checkOn === CheckOn.MemoryUsagePercent ||
|
|
190
|
-
checkOn === CheckOn.IsOnline
|
|
205
|
+
checkOn === CheckOn.IsOnline ||
|
|
206
|
+
checkOn === CheckOn.SnmpResponseTime ||
|
|
207
|
+
checkOn === CheckOn.SnmpIsOnline
|
|
191
208
|
);
|
|
192
209
|
}
|
|
193
210
|
}
|
|
@@ -201,9 +218,12 @@ export const CriteriaFilterSchema: ZodSchema = Zod.object({
|
|
|
201
218
|
metricAlias: Zod.string().optional(),
|
|
202
219
|
metricAggregationType: Zod.string().optional(),
|
|
203
220
|
}).optional(),
|
|
221
|
+
snmpMonitorOptions: Zod.object({
|
|
222
|
+
oid: Zod.string().optional(),
|
|
223
|
+
}).optional(),
|
|
204
224
|
filterType: Zod.string().optional(),
|
|
205
225
|
value: Zod.union([Zod.string(), Zod.number()]).optional(),
|
|
206
|
-
|
|
226
|
+
evaluateOverTime: Zod.boolean().optional(),
|
|
207
227
|
evaluateOverTimeOptions: Zod.object({
|
|
208
228
|
timeValueInMinutes: Zod.number().optional(),
|
|
209
229
|
evaluateOverTimeType: Zod.string().optional(),
|
|
@@ -367,6 +367,33 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
367
367
|
return monitorCriteriaInstance;
|
|
368
368
|
}
|
|
369
369
|
|
|
370
|
+
if (arg.monitorType === MonitorType.SNMP) {
|
|
371
|
+
const monitorCriteriaInstance: MonitorCriteriaInstance =
|
|
372
|
+
new MonitorCriteriaInstance();
|
|
373
|
+
|
|
374
|
+
monitorCriteriaInstance.data = {
|
|
375
|
+
id: ObjectID.generate().toString(),
|
|
376
|
+
monitorStatusId: arg.monitorStatusId,
|
|
377
|
+
filterCondition: FilterCondition.All,
|
|
378
|
+
filters: [
|
|
379
|
+
{
|
|
380
|
+
checkOn: CheckOn.SnmpIsOnline,
|
|
381
|
+
filterType: FilterType.True,
|
|
382
|
+
value: undefined,
|
|
383
|
+
},
|
|
384
|
+
],
|
|
385
|
+
incidents: [],
|
|
386
|
+
alerts: [],
|
|
387
|
+
createAlerts: false,
|
|
388
|
+
changeMonitorStatus: true,
|
|
389
|
+
createIncidents: false,
|
|
390
|
+
name: `Check if ${arg.monitorName} is online`,
|
|
391
|
+
description: `This criteria checks if the ${arg.monitorName} SNMP device is online`,
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
return monitorCriteriaInstance;
|
|
395
|
+
}
|
|
396
|
+
|
|
370
397
|
return null;
|
|
371
398
|
}
|
|
372
399
|
|
|
@@ -428,6 +455,46 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
428
455
|
};
|
|
429
456
|
}
|
|
430
457
|
|
|
458
|
+
if (arg.monitorType === MonitorType.SNMP) {
|
|
459
|
+
monitorCriteriaInstance.data = {
|
|
460
|
+
id: ObjectID.generate().toString(),
|
|
461
|
+
monitorStatusId: arg.monitorStatusId,
|
|
462
|
+
filterCondition: FilterCondition.Any,
|
|
463
|
+
filters: [
|
|
464
|
+
{
|
|
465
|
+
checkOn: CheckOn.SnmpIsOnline,
|
|
466
|
+
filterType: FilterType.False,
|
|
467
|
+
value: undefined,
|
|
468
|
+
},
|
|
469
|
+
],
|
|
470
|
+
incidents: [
|
|
471
|
+
{
|
|
472
|
+
title: `${arg.monitorName} is offline`,
|
|
473
|
+
description: `${arg.monitorName} SNMP device is currently offline.`,
|
|
474
|
+
incidentSeverityId: arg.incidentSeverityId,
|
|
475
|
+
autoResolveIncident: true,
|
|
476
|
+
id: ObjectID.generate().toString(),
|
|
477
|
+
onCallPolicyIds: [],
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
changeMonitorStatus: true,
|
|
481
|
+
createIncidents: true,
|
|
482
|
+
createAlerts: false,
|
|
483
|
+
alerts: [
|
|
484
|
+
{
|
|
485
|
+
title: `${arg.monitorName} is offline`,
|
|
486
|
+
description: `${arg.monitorName} SNMP device is currently offline.`,
|
|
487
|
+
alertSeverityId: arg.alertSeverityId,
|
|
488
|
+
autoResolveAlert: true,
|
|
489
|
+
id: ObjectID.generate().toString(),
|
|
490
|
+
onCallPolicyIds: [],
|
|
491
|
+
},
|
|
492
|
+
],
|
|
493
|
+
name: `Check if ${arg.monitorName} is offline`,
|
|
494
|
+
description: `This criteria checks if the ${arg.monitorName} SNMP device is offline`,
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
|
|
431
498
|
if (
|
|
432
499
|
arg.monitorType === MonitorType.API ||
|
|
433
500
|
arg.monitorType === MonitorType.Website
|
|
@@ -26,6 +26,9 @@ import MonitorStepMetricMonitor, {
|
|
|
26
26
|
import MonitorStepExceptionMonitor, {
|
|
27
27
|
MonitorStepExceptionMonitorUtil,
|
|
28
28
|
} from "./MonitorStepExceptionMonitor";
|
|
29
|
+
import MonitorStepSnmpMonitor, {
|
|
30
|
+
MonitorStepSnmpMonitorUtil,
|
|
31
|
+
} from "./MonitorStepSnmpMonitor";
|
|
29
32
|
import Zod, { ZodSchema } from "../../Utils/Schema/Zod";
|
|
30
33
|
|
|
31
34
|
export interface MonitorStepType {
|
|
@@ -66,6 +69,9 @@ export interface MonitorStepType {
|
|
|
66
69
|
|
|
67
70
|
// Exception monitor
|
|
68
71
|
exceptionMonitor?: MonitorStepExceptionMonitor | undefined;
|
|
72
|
+
|
|
73
|
+
// SNMP monitor
|
|
74
|
+
snmpMonitor?: MonitorStepSnmpMonitor | undefined;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
export default class MonitorStep extends DatabaseProperty {
|
|
@@ -91,6 +97,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
91
97
|
traceMonitor: undefined,
|
|
92
98
|
metricMonitor: undefined,
|
|
93
99
|
exceptionMonitor: undefined,
|
|
100
|
+
snmpMonitor: undefined,
|
|
94
101
|
};
|
|
95
102
|
}
|
|
96
103
|
|
|
@@ -121,6 +128,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
121
128
|
traceMonitor: undefined,
|
|
122
129
|
metricMonitor: undefined,
|
|
123
130
|
exceptionMonitor: undefined,
|
|
131
|
+
snmpMonitor: undefined,
|
|
124
132
|
};
|
|
125
133
|
|
|
126
134
|
return monitorStep;
|
|
@@ -211,6 +219,11 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
211
219
|
return this;
|
|
212
220
|
}
|
|
213
221
|
|
|
222
|
+
public setSnmpMonitor(snmpMonitor: MonitorStepSnmpMonitor): MonitorStep {
|
|
223
|
+
this.data!.snmpMonitor = snmpMonitor;
|
|
224
|
+
return this;
|
|
225
|
+
}
|
|
226
|
+
|
|
214
227
|
public setCustomCode(customCode: string): MonitorStep {
|
|
215
228
|
this.data!.customCode = customCode;
|
|
216
229
|
return this;
|
|
@@ -302,6 +315,23 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
302
315
|
return "Port is required";
|
|
303
316
|
}
|
|
304
317
|
|
|
318
|
+
if (monitorType === MonitorType.SNMP) {
|
|
319
|
+
if (!value.data.snmpMonitor) {
|
|
320
|
+
return "SNMP configuration is required";
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (!value.data.snmpMonitor.hostname) {
|
|
324
|
+
return "SNMP hostname is required";
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if (
|
|
328
|
+
!value.data.snmpMonitor.oids ||
|
|
329
|
+
value.data.snmpMonitor.oids.length === 0
|
|
330
|
+
) {
|
|
331
|
+
return "At least one OID is required";
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
305
335
|
return null;
|
|
306
336
|
}
|
|
307
337
|
|
|
@@ -344,6 +374,9 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
344
374
|
MonitorStepExceptionMonitorUtil.getDefault(),
|
|
345
375
|
)
|
|
346
376
|
: undefined,
|
|
377
|
+
snmpMonitor: this.data.snmpMonitor
|
|
378
|
+
? MonitorStepSnmpMonitorUtil.toJSON(this.data.snmpMonitor)
|
|
379
|
+
: undefined,
|
|
347
380
|
},
|
|
348
381
|
});
|
|
349
382
|
}
|
|
@@ -446,6 +479,9 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
446
479
|
exceptionMonitor: json["exceptionMonitor"]
|
|
447
480
|
? (json["exceptionMonitor"] as JSONObject)
|
|
448
481
|
: undefined,
|
|
482
|
+
snmpMonitor: json["snmpMonitor"]
|
|
483
|
+
? (json["snmpMonitor"] as JSONObject)
|
|
484
|
+
: undefined,
|
|
449
485
|
}) as any;
|
|
450
486
|
|
|
451
487
|
return monitorStep;
|
|
@@ -470,6 +506,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
470
506
|
logMonitor: Zod.any().optional(),
|
|
471
507
|
traceMonitor: Zod.any().optional(),
|
|
472
508
|
metricMonitor: Zod.any().optional(),
|
|
509
|
+
snmpMonitor: Zod.any().optional(),
|
|
473
510
|
}).openapi({
|
|
474
511
|
type: "object",
|
|
475
512
|
example: {
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { JSONObject } from "../JSON";
|
|
2
|
+
import SnmpOid from "./SnmpMonitor/SnmpOid";
|
|
3
|
+
import SnmpV3Auth from "./SnmpMonitor/SnmpV3Auth";
|
|
4
|
+
import SnmpVersion from "./SnmpMonitor/SnmpVersion";
|
|
5
|
+
import SnmpSecurityLevel from "./SnmpMonitor/SnmpSecurityLevel";
|
|
6
|
+
import SnmpAuthProtocol from "./SnmpMonitor/SnmpAuthProtocol";
|
|
7
|
+
import SnmpPrivProtocol from "./SnmpMonitor/SnmpPrivProtocol";
|
|
8
|
+
|
|
9
|
+
export default interface MonitorStepSnmpMonitor {
|
|
10
|
+
snmpVersion: SnmpVersion;
|
|
11
|
+
hostname: string;
|
|
12
|
+
port: number;
|
|
13
|
+
communityString?: string | undefined;
|
|
14
|
+
snmpV3Auth?: SnmpV3Auth | undefined;
|
|
15
|
+
oids: Array<SnmpOid>;
|
|
16
|
+
timeout: number;
|
|
17
|
+
retries: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export class MonitorStepSnmpMonitorUtil {
|
|
21
|
+
public static getDefault(): MonitorStepSnmpMonitor {
|
|
22
|
+
return {
|
|
23
|
+
snmpVersion: SnmpVersion.V2c,
|
|
24
|
+
hostname: "",
|
|
25
|
+
port: 161,
|
|
26
|
+
communityString: "public",
|
|
27
|
+
oids: [],
|
|
28
|
+
timeout: 5000,
|
|
29
|
+
retries: 3,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static fromJSON(json: JSONObject): MonitorStepSnmpMonitor {
|
|
34
|
+
return {
|
|
35
|
+
snmpVersion: (json["snmpVersion"] as SnmpVersion) || SnmpVersion.V2c,
|
|
36
|
+
hostname: (json["hostname"] as string) || "",
|
|
37
|
+
port: (json["port"] as number) || 161,
|
|
38
|
+
communityString: (json["communityString"] as string) || undefined,
|
|
39
|
+
snmpV3Auth: json["snmpV3Auth"]
|
|
40
|
+
? MonitorStepSnmpMonitorUtil.parseSnmpV3Auth(
|
|
41
|
+
json["snmpV3Auth"] as JSONObject,
|
|
42
|
+
)
|
|
43
|
+
: undefined,
|
|
44
|
+
oids: MonitorStepSnmpMonitorUtil.parseOids(
|
|
45
|
+
(json["oids"] as Array<JSONObject>) || [],
|
|
46
|
+
),
|
|
47
|
+
timeout: (json["timeout"] as number) || 5000,
|
|
48
|
+
retries: (json["retries"] as number) || 3,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private static parseSnmpV3Auth(json: JSONObject): SnmpV3Auth {
|
|
53
|
+
return {
|
|
54
|
+
securityLevel:
|
|
55
|
+
(json["securityLevel"] as SnmpSecurityLevel) ||
|
|
56
|
+
SnmpSecurityLevel.NoAuthNoPriv,
|
|
57
|
+
username: (json["username"] as string) || "",
|
|
58
|
+
authProtocol: (json["authProtocol"] as SnmpAuthProtocol) || undefined,
|
|
59
|
+
authKey: (json["authKey"] as string) || undefined,
|
|
60
|
+
privProtocol: (json["privProtocol"] as SnmpPrivProtocol) || undefined,
|
|
61
|
+
privKey: (json["privKey"] as string) || undefined,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private static parseOids(oids: Array<JSONObject>): Array<SnmpOid> {
|
|
66
|
+
return oids.map((oid: JSONObject) => {
|
|
67
|
+
return {
|
|
68
|
+
oid: (oid["oid"] as string) || "",
|
|
69
|
+
name: (oid["name"] as string) || undefined,
|
|
70
|
+
description: (oid["description"] as string) || undefined,
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public static toJSON(monitor: MonitorStepSnmpMonitor): JSONObject {
|
|
76
|
+
return {
|
|
77
|
+
snmpVersion: monitor.snmpVersion,
|
|
78
|
+
hostname: monitor.hostname,
|
|
79
|
+
port: monitor.port,
|
|
80
|
+
communityString: monitor.communityString,
|
|
81
|
+
snmpV3Auth: monitor.snmpV3Auth
|
|
82
|
+
? {
|
|
83
|
+
securityLevel: monitor.snmpV3Auth.securityLevel,
|
|
84
|
+
username: monitor.snmpV3Auth.username,
|
|
85
|
+
authProtocol: monitor.snmpV3Auth.authProtocol,
|
|
86
|
+
authKey: monitor.snmpV3Auth.authKey,
|
|
87
|
+
privProtocol: monitor.snmpV3Auth.privProtocol,
|
|
88
|
+
privKey: monitor.snmpV3Auth.privKey,
|
|
89
|
+
}
|
|
90
|
+
: undefined,
|
|
91
|
+
oids: monitor.oids.map((oid: SnmpOid) => {
|
|
92
|
+
return {
|
|
93
|
+
oid: oid.oid,
|
|
94
|
+
name: oid.name,
|
|
95
|
+
description: oid.description,
|
|
96
|
+
};
|
|
97
|
+
}),
|
|
98
|
+
timeout: monitor.timeout,
|
|
99
|
+
retries: monitor.retries,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -23,6 +23,9 @@ enum MonitorType {
|
|
|
23
23
|
Metrics = "Metrics",
|
|
24
24
|
Traces = "Traces",
|
|
25
25
|
Exceptions = "Exceptions",
|
|
26
|
+
|
|
27
|
+
// Network device monitoring
|
|
28
|
+
SNMP = "SNMP",
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
export default MonitorType;
|
|
@@ -169,6 +172,13 @@ export class MonitorTypeHelper {
|
|
|
169
172
|
"This monitor type lets you monitor metrics from any source.",
|
|
170
173
|
icon: IconProp.Heartbeat,
|
|
171
174
|
},
|
|
175
|
+
{
|
|
176
|
+
monitorType: MonitorType.SNMP,
|
|
177
|
+
title: "SNMP",
|
|
178
|
+
description:
|
|
179
|
+
"This monitor type lets you monitor network devices like switches, routers, and firewalls via SNMP.",
|
|
180
|
+
icon: IconProp.Signal,
|
|
181
|
+
},
|
|
172
182
|
];
|
|
173
183
|
|
|
174
184
|
return monitorTypeProps;
|
|
@@ -213,7 +223,8 @@ export class MonitorTypeHelper {
|
|
|
213
223
|
monitorType === MonitorType.Port ||
|
|
214
224
|
monitorType === MonitorType.SSLCertificate ||
|
|
215
225
|
monitorType === MonitorType.SyntheticMonitor ||
|
|
216
|
-
monitorType === MonitorType.CustomJavaScriptCode
|
|
226
|
+
monitorType === MonitorType.CustomJavaScriptCode ||
|
|
227
|
+
monitorType === MonitorType.SNMP;
|
|
217
228
|
return isProbeableMonitor;
|
|
218
229
|
}
|
|
219
230
|
|
|
@@ -234,6 +245,7 @@ export class MonitorTypeHelper {
|
|
|
234
245
|
MonitorType.Metrics,
|
|
235
246
|
MonitorType.Traces,
|
|
236
247
|
MonitorType.Exceptions,
|
|
248
|
+
MonitorType.SNMP,
|
|
237
249
|
];
|
|
238
250
|
}
|
|
239
251
|
|
|
@@ -265,7 +277,8 @@ export class MonitorTypeHelper {
|
|
|
265
277
|
monitorType === MonitorType.Server ||
|
|
266
278
|
monitorType === MonitorType.SSLCertificate ||
|
|
267
279
|
monitorType === MonitorType.SyntheticMonitor ||
|
|
268
|
-
monitorType === MonitorType.CustomJavaScriptCode
|
|
280
|
+
monitorType === MonitorType.CustomJavaScriptCode ||
|
|
281
|
+
monitorType === MonitorType.SNMP
|
|
269
282
|
) {
|
|
270
283
|
return true;
|
|
271
284
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
enum SnmpDataType {
|
|
2
|
+
Integer = "Integer",
|
|
3
|
+
OctetString = "OctetString",
|
|
4
|
+
ObjectIdentifier = "ObjectIdentifier",
|
|
5
|
+
IpAddress = "IpAddress",
|
|
6
|
+
Counter = "Counter",
|
|
7
|
+
Counter32 = "Counter32",
|
|
8
|
+
Gauge = "Gauge",
|
|
9
|
+
Gauge32 = "Gauge32",
|
|
10
|
+
TimeTicks = "TimeTicks",
|
|
11
|
+
Opaque = "Opaque",
|
|
12
|
+
Counter64 = "Counter64",
|
|
13
|
+
NoSuchObject = "NoSuchObject",
|
|
14
|
+
NoSuchInstance = "NoSuchInstance",
|
|
15
|
+
EndOfMibView = "EndOfMibView",
|
|
16
|
+
Null = "Null",
|
|
17
|
+
Boolean = "Boolean",
|
|
18
|
+
Unknown = "Unknown",
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default SnmpDataType;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import SnmpDataType from "./SnmpDataType";
|
|
2
|
+
|
|
3
|
+
export interface SnmpOidResponse {
|
|
4
|
+
oid: string;
|
|
5
|
+
name?: string | undefined;
|
|
6
|
+
value: string | number | null;
|
|
7
|
+
type: SnmpDataType;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default interface SnmpMonitorResponse {
|
|
11
|
+
isOnline: boolean;
|
|
12
|
+
responseTimeInMs: number;
|
|
13
|
+
failureCause: string;
|
|
14
|
+
oidResponses: Array<SnmpOidResponse>;
|
|
15
|
+
isTimeout?: boolean | undefined;
|
|
16
|
+
}
|