@oneuptime/common 10.0.53 → 10.0.54
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/Metric.ts +78 -0
- package/Server/API/AIAgentDataAPI.ts +6 -1
- package/Server/API/BillingAPI.ts +28 -6
- package/Server/API/CommonAPI.ts +11 -0
- package/Server/API/DashboardAPI.ts +6 -2
- package/Server/API/DashboardDomainAPI.ts +10 -3
- package/Server/API/GitHubAPI.ts +58 -14
- package/Server/API/MicrosoftTeamsAPI.ts +97 -33
- package/Server/API/OpenSourceDeploymentAPI.ts +2 -2
- package/Server/API/SlackAPI.ts +107 -36
- package/Server/API/StatusAPI.ts +37 -16
- package/Server/API/StatusPageAPI.ts +97 -23
- package/Server/API/StatusPageDomainAPI.ts +6 -3
- package/Server/API/UserAPI.ts +3 -3
- package/Server/API/UserCallAPI.ts +5 -2
- package/Server/API/UserEmailAPI.ts +5 -2
- package/Server/API/UserPushAPI.ts +9 -3
- package/Server/API/UserSmsAPI.ts +5 -2
- package/Server/API/UserWhatsAppAPI.ts +5 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Middleware/NotificationMiddleware.ts +2 -2
- package/Server/Middleware/ProjectAuthorization.ts +6 -0
- package/Server/Middleware/SCIMAuthorization.ts +2 -1
- package/Server/Middleware/SlackAuthorization.ts +28 -10
- package/Server/Middleware/TelemetryIngest.ts +16 -3
- package/Server/Middleware/UserAuthorization.ts +22 -5
- package/Server/Middleware/WhatsAppAuthorization.ts +15 -4
- package/Server/Services/AIAgentService.ts +13 -6
- package/Server/Services/AIService.ts +9 -3
- package/Server/Services/AlertEpisodeFeedService.ts +17 -5
- package/Server/Services/AlertEpisodeService.ts +34 -3
- package/Server/Services/AlertEpisodeStateTimelineService.ts +80 -22
- package/Server/Services/AlertFeedService.ts +17 -5
- package/Server/Services/AlertGroupingEngineService.ts +36 -7
- package/Server/Services/AlertService.ts +60 -8
- package/Server/Services/AlertStateTimelineService.ts +29 -7
- package/Server/Services/AnalyticsDatabaseService.ts +59 -25
- package/Server/Services/BillingInvoiceService.ts +7 -3
- package/Server/Services/BillingService.ts +9 -2
- package/Server/Services/DashboardDomainService.ts +56 -22
- package/Server/Services/DashboardService.ts +11 -4
- package/Server/Services/DatabaseService.ts +31 -11
- package/Server/Services/IncidentEpisodeFeedService.ts +17 -5
- package/Server/Services/IncidentEpisodeService.ts +34 -3
- package/Server/Services/IncidentEpisodeStateTimelineService.ts +80 -22
- package/Server/Services/IncidentFeedService.ts +33 -9
- package/Server/Services/IncidentGroupingEngineService.ts +35 -6
- package/Server/Services/IncidentService.ts +103 -9
- package/Server/Services/IncidentSlaRuleService.ts +16 -4
- package/Server/Services/IncidentSlaService.ts +20 -4
- package/Server/Services/IncidentStateTimelineService.ts +120 -31
- package/Server/Services/KubernetesClusterService.ts +62 -14
- package/Server/Services/MonitorFeedService.ts +33 -9
- package/Server/Services/MonitorProbeService.ts +4 -2
- package/Server/Services/MonitorService.ts +35 -4
- package/Server/Services/MonitorStatusTimelineService.ts +68 -20
- package/Server/Services/NotificationService.ts +4 -2
- package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +53 -9
- package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +9 -2
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +29 -8
- package/Server/Services/OnCallDutyPolicyFeedService.ts +33 -8
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +97 -24
- package/Server/Services/OnCallDutyPolicyService.ts +2 -1
- package/Server/Services/OpenTelemetryIngestService.ts +51 -20
- package/Server/Services/ProbeService.ts +16 -7
- package/Server/Services/ProjectService.ts +21 -7
- package/Server/Services/ScheduledMaintenanceFeedService.ts +17 -4
- package/Server/Services/ScheduledMaintenanceService.ts +52 -6
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +72 -20
- package/Server/Services/StatusPageDomainService.ts +59 -23
- package/Server/Services/StatusPageService.ts +26 -8
- package/Server/Services/StatusPageSubscriberService.ts +382 -111
- package/Server/Services/TeamMemberService.ts +9 -3
- package/Server/Services/UserNotificationRuleService.ts +9 -3
- package/Server/Services/UserService.ts +6 -4
- package/Server/Services/UserWhatsAppService.ts +9 -3
- package/Server/Services/WorkflowService.ts +7 -3
- package/Server/Services/WorkspaceNotificationRuleService.ts +398 -156
- package/Server/Types/Domain.ts +15 -5
- package/Server/Types/Workflow/Components/API/Post.ts +22 -8
- package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +12 -4
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +10 -0
- package/Server/Utils/CodeRepository/CodeRepository.ts +62 -13
- package/Server/Utils/Express.ts +1 -0
- package/Server/Utils/Greenlock/Greenlock.ts +75 -20
- package/Server/Utils/LLM/LLMService.ts +22 -7
- package/Server/Utils/Logger.ts +93 -13
- package/Server/Utils/Monitor/MonitorAlert.ts +15 -3
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +15 -5
- package/Server/Utils/Monitor/MonitorIncident.ts +17 -3
- package/Server/Utils/Monitor/MonitorStatusTimeline.ts +6 -1
- package/Server/Utils/Profiling.ts +11 -5
- package/Server/Utils/Realtime.ts +90 -31
- package/Server/Utils/Response.ts +2 -2
- package/Server/Utils/StartServer.ts +43 -9
- package/Server/Utils/Telemetry/SpanUtil.ts +90 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +58 -15
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.ts +58 -15
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +19 -3
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +87 -22
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.ts +12 -3
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.ts +25 -7
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.ts +55 -8
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +100 -22
- package/Server/Utils/Workspace/Slack/Actions/Alert.ts +35 -9
- package/Server/Utils/Workspace/Slack/Actions/AlertEpisode.ts +32 -8
- package/Server/Utils/Workspace/Slack/Actions/Auth.ts +3 -1
- package/Server/Utils/Workspace/Slack/Actions/Incident.ts +52 -11
- package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +4 -1
- package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +89 -20
- package/Server/Utils/Workspace/Slack/Slack.ts +498 -247
- package/Server/Utils/Workspace/Workspace.ts +33 -11
- package/Server/Utils/Workspace/WorkspaceBase.ts +3 -1
- package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +8 -2
- package/Tests/Server/Middleware/UserAuthorization.test.ts +1 -1
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +12 -3
- package/UI/Components/Charts/Area/AreaChart.tsx +35 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +7 -0
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +33 -0
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +33 -0
- package/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.ts +14 -0
- package/UI/Components/Charts/Line/LineChart.tsx +35 -1
- package/UI/Components/Charts/Types/ExemplarPoint.ts +6 -0
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +3 -3
- package/UI/Components/Navbar/NavBar.tsx +10 -0
- package/build/dist/Models/AnalyticsModels/Metric.js +70 -0
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +6 -6
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
- package/build/dist/Server/API/BillingAPI.js +13 -13
- package/build/dist/Server/API/BillingAPI.js.map +1 -1
- package/build/dist/Server/API/CommonAPI.js +5 -0
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +2 -2
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardDomainAPI.js +3 -3
- package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
- package/build/dist/Server/API/GitHubAPI.js +19 -19
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +34 -34
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/OpenSourceDeploymentAPI.js +2 -2
- package/build/dist/Server/API/OpenSourceDeploymentAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +38 -38
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/StatusAPI.js +16 -16
- package/build/dist/Server/API/StatusAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +52 -52
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageDomainAPI.js +3 -3
- package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +3 -3
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/API/UserCallAPI.js +2 -2
- package/build/dist/Server/API/UserCallAPI.js.map +1 -1
- package/build/dist/Server/API/UserEmailAPI.js +2 -2
- package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
- package/build/dist/Server/API/UserPushAPI.js +3 -3
- package/build/dist/Server/API/UserPushAPI.js.map +1 -1
- package/build/dist/Server/API/UserSmsAPI.js +2 -2
- package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
- package/build/dist/Server/API/UserWhatsAppAPI.js +2 -2
- package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1774559064921-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1775735059360-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/NotificationMiddleware.js +2 -2
- package/build/dist/Server/Middleware/NotificationMiddleware.js.map +1 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js +5 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +2 -2
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/SlackAuthorization.js +10 -10
- package/build/dist/Server/Middleware/SlackAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +9 -4
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +10 -5
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js +6 -6
- package/build/dist/Server/Middleware/WhatsAppAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AIAgentService.js +13 -7
- package/build/dist/Server/Services/AIAgentService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +9 -2
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeFeedService.js +17 -5
- package/build/dist/Server/Services/AlertEpisodeFeedService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeService.js +40 -10
- package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +81 -24
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/AlertFeedService.js +17 -5
- package/build/dist/Server/Services/AlertFeedService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +44 -28
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +72 -20
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AlertStateTimelineService.js +36 -13
- package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +52 -28
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/BillingInvoiceService.js +7 -2
- package/build/dist/Server/Services/BillingInvoiceService.js.map +1 -1
- package/build/dist/Server/Services/BillingService.js +8 -8
- package/build/dist/Server/Services/BillingService.js.map +1 -1
- package/build/dist/Server/Services/DashboardDomainService.js +49 -27
- package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
- package/build/dist/Server/Services/DashboardService.js +11 -4
- package/build/dist/Server/Services/DashboardService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +32 -12
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeFeedService.js +17 -5
- package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js +40 -10
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +81 -24
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFeedService.js +34 -10
- package/build/dist/Server/Services/IncidentFeedService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +43 -29
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +116 -28
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js +19 -11
- package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSlaService.js +21 -14
- package/build/dist/Server/Services/IncidentSlaService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +130 -37
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +51 -14
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/MonitorFeedService.js +34 -10
- package/build/dist/Server/Services/MonitorFeedService.js.map +1 -1
- package/build/dist/Server/Services/MonitorProbeService.js +4 -2
- package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +42 -11
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +69 -21
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/NotificationService.js +4 -3
- package/build/dist/Server/Services/NotificationService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +49 -12
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +9 -3
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +26 -11
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +34 -10
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +94 -37
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +45 -17
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ProbeService.js +13 -7
- package/build/dist/Server/Services/ProbeService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +33 -17
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js +17 -5
- package/build/dist/Server/Services/ScheduledMaintenanceFeedService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +71 -24
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +72 -24
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageDomainService.js +55 -29
- package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +29 -9
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +393 -130
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +10 -2
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +10 -2
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +8 -3
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +10 -2
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowService.js +7 -2
- package/build/dist/Server/Services/WorkflowService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +367 -180
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Types/Domain.js +12 -6
- package/build/dist/Server/Types/Domain.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -7
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +11 -4
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +7 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/CodeRepository.js +45 -17
- package/build/dist/Server/Utils/CodeRepository/CodeRepository.js.map +1 -1
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/Greenlock/Greenlock.js +36 -29
- package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +18 -6
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Logger.js +61 -13
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +23 -20
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +13 -4
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +25 -22
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +6 -3
- package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Server/Utils/Profiling.js +9 -6
- package/build/dist/Server/Utils/Profiling.js.map +1 -1
- package/build/dist/Server/Utils/Realtime.js +50 -34
- package/build/dist/Server/Utils/Realtime.js.map +1 -1
- package/build/dist/Server/Utils/Response.js +2 -2
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +23 -11
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js +52 -0
- package/build/dist/Server/Utils/Telemetry/SpanUtil.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +58 -15
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js +58 -15
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/AlertEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +19 -5
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +90 -26
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.js +12 -3
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Monitor.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.js +25 -7
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/OnCallDutyPolicy.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js +58 -19
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +102 -29
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +38 -9
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js +34 -8
- package/build/dist/Server/Utils/Workspace/Slack/Actions/AlertEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js +3 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Auth.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +55 -13
- package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +5 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +91 -26
- package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +355 -270
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Workspace.js +21 -12
- package/build/dist/Server/Utils/Workspace/Workspace.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js +3 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js +9 -2
- package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +1 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js +12 -6
- package/build/dist/Tests/Server/Services/AnalyticsDatabaseService.test.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +20 -2
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +9 -2
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +9 -2
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.js +2 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Types/FormattedExemplarPoint.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +20 -2
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/ExemplarPoint.js +2 -0
- package/build/dist/UI/Components/Charts/Types/ExemplarPoint.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +3 -3
- package/build/dist/UI/Components/Navbar/NavBar.js +9 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ import AlertEpisode from "../../Models/DatabaseModels/AlertEpisode";
|
|
|
15
15
|
import AlertEpisodeStateTimeline from "../../Models/DatabaseModels/AlertEpisodeStateTimeline";
|
|
16
16
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
17
17
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
18
|
-
import logger from "../Utils/Logger";
|
|
18
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
19
19
|
import AlertEpisodeFeedService from "./AlertEpisodeFeedService";
|
|
20
20
|
import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpisodeFeed";
|
|
21
21
|
import Semaphore, { SemaphoreMutex } from "../Infrastructure/Semaphore";
|
|
@@ -50,7 +50,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
50
50
|
namespace: "AlertEpisodeStateTimeline.create",
|
|
51
51
|
});
|
|
52
52
|
} catch (err) {
|
|
53
|
-
logger.error(err
|
|
53
|
+
logger.error(err, {
|
|
54
|
+
projectId: createBy.data.projectId?.toString(),
|
|
55
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
56
|
+
} as LogAttributes);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
if (
|
|
@@ -109,8 +112,14 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
109
112
|
},
|
|
110
113
|
});
|
|
111
114
|
|
|
112
|
-
logger.debug("State Before this"
|
|
113
|
-
|
|
115
|
+
logger.debug("State Before this", {
|
|
116
|
+
projectId: createBy.data.projectId?.toString(),
|
|
117
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
118
|
+
} as LogAttributes);
|
|
119
|
+
logger.debug(stateBeforeThis, {
|
|
120
|
+
projectId: createBy.data.projectId?.toString(),
|
|
121
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
122
|
+
} as LogAttributes);
|
|
114
123
|
|
|
115
124
|
// If this is the first state, then do not notify the owner.
|
|
116
125
|
if (!stateBeforeThis) {
|
|
@@ -164,8 +173,14 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
164
173
|
}
|
|
165
174
|
}
|
|
166
175
|
|
|
167
|
-
logger.debug("State After this"
|
|
168
|
-
|
|
176
|
+
logger.debug("State After this", {
|
|
177
|
+
projectId: createBy.data.projectId?.toString(),
|
|
178
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
179
|
+
} as LogAttributes);
|
|
180
|
+
logger.debug(stateAfterThis, {
|
|
181
|
+
projectId: createBy.data.projectId?.toString(),
|
|
182
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
183
|
+
} as LogAttributes);
|
|
169
184
|
|
|
170
185
|
return {
|
|
171
186
|
createBy,
|
|
@@ -181,7 +196,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
181
196
|
try {
|
|
182
197
|
await Semaphore.release(mutex);
|
|
183
198
|
} catch (err) {
|
|
184
|
-
logger.error(err
|
|
199
|
+
logger.error(err, {
|
|
200
|
+
projectId: createBy.data.projectId?.toString(),
|
|
201
|
+
alertEpisodeId: createBy.data.alertEpisodeId?.toString(),
|
|
202
|
+
} as LogAttributes);
|
|
185
203
|
}
|
|
186
204
|
}
|
|
187
205
|
|
|
@@ -204,19 +222,40 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
204
222
|
throw new BadDataException("alertStateId is null");
|
|
205
223
|
}
|
|
206
224
|
|
|
207
|
-
logger.debug("Status Timeline Before this"
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
logger.debug(onCreate.carryForward.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
225
|
+
logger.debug("Status Timeline Before this", {
|
|
226
|
+
projectId: createdItem.projectId?.toString(),
|
|
227
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
228
|
+
} as LogAttributes);
|
|
229
|
+
logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus, {
|
|
230
|
+
projectId: createdItem.projectId?.toString(),
|
|
231
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
232
|
+
} as LogAttributes);
|
|
233
|
+
|
|
234
|
+
logger.debug("Status Timeline After this", {
|
|
235
|
+
projectId: createdItem.projectId?.toString(),
|
|
236
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
237
|
+
} as LogAttributes);
|
|
238
|
+
logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus, {
|
|
239
|
+
projectId: createdItem.projectId?.toString(),
|
|
240
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
241
|
+
} as LogAttributes);
|
|
242
|
+
|
|
243
|
+
logger.debug("Created Item", {
|
|
244
|
+
projectId: createdItem.projectId?.toString(),
|
|
245
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
246
|
+
} as LogAttributes);
|
|
247
|
+
logger.debug(createdItem, {
|
|
248
|
+
projectId: createdItem.projectId?.toString(),
|
|
249
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
250
|
+
} as LogAttributes);
|
|
215
251
|
|
|
216
252
|
// Handle timeline updates
|
|
217
253
|
if (!onCreate.carryForward.statusTimelineBeforeThisStatus) {
|
|
218
254
|
// This is the first status, no need to update previous status.
|
|
219
|
-
logger.debug("This is the first status."
|
|
255
|
+
logger.debug("This is the first status.", {
|
|
256
|
+
projectId: createdItem.projectId?.toString(),
|
|
257
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
258
|
+
} as LogAttributes);
|
|
220
259
|
} else if (!onCreate.carryForward.statusTimelineAfterThisStatus) {
|
|
221
260
|
// This is the last status. Update the previous status to end at the start of this status.
|
|
222
261
|
await this.updateOneById({
|
|
@@ -228,7 +267,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
228
267
|
isRoot: true,
|
|
229
268
|
},
|
|
230
269
|
});
|
|
231
|
-
logger.debug("This is the last status."
|
|
270
|
+
logger.debug("This is the last status.", {
|
|
271
|
+
projectId: createdItem.projectId?.toString(),
|
|
272
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
273
|
+
} as LogAttributes);
|
|
232
274
|
} else {
|
|
233
275
|
// This is in the middle. Update the previous status to end at the start of this status.
|
|
234
276
|
await this.updateOneById({
|
|
@@ -251,7 +293,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
251
293
|
isRoot: true,
|
|
252
294
|
},
|
|
253
295
|
});
|
|
254
|
-
logger.debug("This status is in the middle."
|
|
296
|
+
logger.debug("This status is in the middle.", {
|
|
297
|
+
projectId: createdItem.projectId?.toString(),
|
|
298
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
299
|
+
} as LogAttributes);
|
|
255
300
|
}
|
|
256
301
|
|
|
257
302
|
// Update episode's current state if this is the latest timeline entry
|
|
@@ -305,6 +350,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
305
350
|
} catch (error) {
|
|
306
351
|
logger.error(
|
|
307
352
|
`Failed to cascade state change to member alerts: ${error}`,
|
|
353
|
+
{
|
|
354
|
+
projectId: createdItem.projectId?.toString(),
|
|
355
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
356
|
+
} as LogAttributes,
|
|
308
357
|
);
|
|
309
358
|
}
|
|
310
359
|
}
|
|
@@ -314,7 +363,10 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
314
363
|
try {
|
|
315
364
|
await Semaphore.release(mutex);
|
|
316
365
|
} catch (err) {
|
|
317
|
-
logger.error(err
|
|
366
|
+
logger.error(err, {
|
|
367
|
+
projectId: createdItem.projectId?.toString(),
|
|
368
|
+
alertEpisodeId: createdItem.alertEpisodeId?.toString(),
|
|
369
|
+
} as LogAttributes);
|
|
318
370
|
}
|
|
319
371
|
}
|
|
320
372
|
|
|
@@ -471,7 +523,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
471
523
|
|
|
472
524
|
if (!stateBeforeThis) {
|
|
473
525
|
// This is the first state, no need to update previous state.
|
|
474
|
-
logger.debug("This is the first state."
|
|
526
|
+
logger.debug("This is the first state.", {
|
|
527
|
+
alertEpisodeId: episodeId?.toString(),
|
|
528
|
+
} as LogAttributes);
|
|
475
529
|
} else if (!stateAfterThis) {
|
|
476
530
|
// This is the last state. Update the previous state to end at the end of this state.
|
|
477
531
|
await this.updateOneById({
|
|
@@ -483,7 +537,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
483
537
|
isRoot: true,
|
|
484
538
|
},
|
|
485
539
|
});
|
|
486
|
-
logger.debug("This is the last state."
|
|
540
|
+
logger.debug("This is the last state.", {
|
|
541
|
+
alertEpisodeId: episodeId?.toString(),
|
|
542
|
+
} as LogAttributes);
|
|
487
543
|
} else {
|
|
488
544
|
// This state is in the middle. Update the previous state to end at the start of the next state.
|
|
489
545
|
await this.updateOneById({
|
|
@@ -506,7 +562,9 @@ export class Service extends DatabaseService<AlertEpisodeStateTimeline> {
|
|
|
506
562
|
isRoot: true,
|
|
507
563
|
},
|
|
508
564
|
});
|
|
509
|
-
logger.debug("This state is in the middle."
|
|
565
|
+
logger.debug("This state is in the middle.", {
|
|
566
|
+
alertEpisodeId: episodeId?.toString(),
|
|
567
|
+
} as LogAttributes);
|
|
510
568
|
}
|
|
511
569
|
}
|
|
512
570
|
|
|
@@ -4,7 +4,7 @@ import OneUptimeDate from "../../Types/Date";
|
|
|
4
4
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
5
5
|
import ObjectID from "../../Types/ObjectID";
|
|
6
6
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
7
|
-
import logger from "../Utils/Logger";
|
|
7
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
8
8
|
import DatabaseService from "./DatabaseService";
|
|
9
9
|
import Model, {
|
|
10
10
|
AlertFeedEventType,
|
|
@@ -101,14 +101,26 @@ export class Service extends DatabaseService<Model> {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
} catch (e) {
|
|
104
|
-
logger.error("Error in sending notification to slack and teams"
|
|
105
|
-
|
|
104
|
+
logger.error("Error in sending notification to slack and teams", {
|
|
105
|
+
projectId: data.projectId?.toString(),
|
|
106
|
+
alertId: data.alertId?.toString(),
|
|
107
|
+
} as LogAttributes);
|
|
108
|
+
logger.error(e, {
|
|
109
|
+
projectId: data.projectId?.toString(),
|
|
110
|
+
alertId: data.alertId?.toString(),
|
|
111
|
+
} as LogAttributes);
|
|
106
112
|
|
|
107
113
|
// we dont throw this error as it is not a critical error
|
|
108
114
|
}
|
|
109
115
|
} catch (error) {
|
|
110
|
-
logger.error("AlertFeedService.createAlertFeedItem"
|
|
111
|
-
|
|
116
|
+
logger.error("AlertFeedService.createAlertFeedItem", {
|
|
117
|
+
projectId: data.projectId?.toString(),
|
|
118
|
+
alertId: data.alertId?.toString(),
|
|
119
|
+
} as LogAttributes);
|
|
120
|
+
logger.error(error, {
|
|
121
|
+
projectId: data.projectId?.toString(),
|
|
122
|
+
alertId: data.alertId?.toString(),
|
|
123
|
+
} as LogAttributes);
|
|
112
124
|
// we dont want to throw the error here, as this is a non-critical operation
|
|
113
125
|
}
|
|
114
126
|
}
|
|
@@ -12,7 +12,7 @@ import Monitor from "../../Models/DatabaseModels/Monitor";
|
|
|
12
12
|
import AlertSeverity from "../../Models/DatabaseModels/AlertSeverity";
|
|
13
13
|
import ServiceMonitor from "../../Models/DatabaseModels/ServiceMonitor";
|
|
14
14
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
15
|
-
import logger from "../Utils/Logger";
|
|
15
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
16
16
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
17
17
|
import OneUptimeDate from "../../Types/Date";
|
|
18
18
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
@@ -38,11 +38,15 @@ export interface GroupingResult {
|
|
|
38
38
|
class AlertGroupingEngineServiceClass {
|
|
39
39
|
@CaptureSpan()
|
|
40
40
|
public async processAlert(alert: Alert): Promise<GroupingResult> {
|
|
41
|
-
logger.debug(`Processing alert ${alert.id} for grouping
|
|
41
|
+
logger.debug(`Processing alert ${alert.id} for grouping`, {
|
|
42
|
+
projectId: alert.projectId?.toString(),
|
|
43
|
+
} as LogAttributes);
|
|
42
44
|
|
|
43
45
|
try {
|
|
44
46
|
if (!alert.id || !alert.projectId) {
|
|
45
|
-
logger.warn("Alert missing id or projectId, skipping grouping"
|
|
47
|
+
logger.warn("Alert missing id or projectId, skipping grouping", {
|
|
48
|
+
projectId: alert.projectId?.toString(),
|
|
49
|
+
} as LogAttributes);
|
|
46
50
|
return { grouped: false };
|
|
47
51
|
}
|
|
48
52
|
|
|
@@ -124,12 +128,14 @@ class AlertGroupingEngineServiceClass {
|
|
|
124
128
|
if (rules.length === 0) {
|
|
125
129
|
logger.debug(
|
|
126
130
|
`No enabled grouping rules found for project ${alert.projectId}`,
|
|
131
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
127
132
|
);
|
|
128
133
|
return { grouped: false };
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
logger.debug(
|
|
132
137
|
`Found ${rules.length} enabled grouping rules for project ${alert.projectId}`,
|
|
138
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
133
139
|
);
|
|
134
140
|
|
|
135
141
|
// Find first matching rule
|
|
@@ -139,6 +145,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
139
145
|
if (matches) {
|
|
140
146
|
logger.debug(
|
|
141
147
|
`Alert ${alert.id} matches rule ${rule.name || rule.id}`,
|
|
148
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
142
149
|
);
|
|
143
150
|
|
|
144
151
|
// Try to find existing episode or create new one
|
|
@@ -150,10 +157,14 @@ class AlertGroupingEngineServiceClass {
|
|
|
150
157
|
}
|
|
151
158
|
}
|
|
152
159
|
|
|
153
|
-
logger.debug(`Alert ${alert.id} did not match any grouping rules
|
|
160
|
+
logger.debug(`Alert ${alert.id} did not match any grouping rules`, {
|
|
161
|
+
projectId: alert.projectId?.toString(),
|
|
162
|
+
} as LogAttributes);
|
|
154
163
|
return { grouped: false };
|
|
155
164
|
} catch (error) {
|
|
156
|
-
logger.error(`Error processing alert for grouping: ${error}
|
|
165
|
+
logger.error(`Error processing alert for grouping: ${error}`, {
|
|
166
|
+
projectId: alert.projectId?.toString(),
|
|
167
|
+
} as LogAttributes);
|
|
157
168
|
return { grouped: false };
|
|
158
169
|
}
|
|
159
170
|
}
|
|
@@ -165,6 +176,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
165
176
|
): Promise<boolean> {
|
|
166
177
|
logger.debug(
|
|
167
178
|
`Checking if alert ${alert.id} matches rule ${rule.name || rule.id}`,
|
|
179
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
168
180
|
);
|
|
169
181
|
|
|
170
182
|
// Check monitor IDs - if monitors are specified, alert must be from one of them
|
|
@@ -286,6 +298,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
286
298
|
} catch {
|
|
287
299
|
logger.warn(
|
|
288
300
|
`Invalid regex pattern in rule ${rule.id}: ${rule.monitorNamePattern}`,
|
|
301
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
289
302
|
);
|
|
290
303
|
return false;
|
|
291
304
|
}
|
|
@@ -304,6 +317,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
304
317
|
} catch {
|
|
305
318
|
logger.warn(
|
|
306
319
|
`Invalid regex pattern in rule ${rule.id}: ${rule.monitorDescriptionPattern}`,
|
|
320
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
307
321
|
);
|
|
308
322
|
return false;
|
|
309
323
|
}
|
|
@@ -323,6 +337,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
323
337
|
} catch {
|
|
324
338
|
logger.warn(
|
|
325
339
|
`Invalid regex pattern in rule ${rule.id}: ${rule.alertTitlePattern}`,
|
|
340
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
326
341
|
);
|
|
327
342
|
return false;
|
|
328
343
|
}
|
|
@@ -341,6 +356,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
341
356
|
} catch {
|
|
342
357
|
logger.warn(
|
|
343
358
|
`Invalid regex pattern in rule ${rule.id}: ${rule.alertDescriptionPattern}`,
|
|
359
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
344
360
|
);
|
|
345
361
|
return false;
|
|
346
362
|
}
|
|
@@ -349,6 +365,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
349
365
|
// If no criteria specified (all fields empty), rule matches all alerts
|
|
350
366
|
logger.debug(
|
|
351
367
|
`Rule ${rule.name || rule.id} matched alert ${alert.id} (all criteria passed)`,
|
|
368
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
352
369
|
);
|
|
353
370
|
return true;
|
|
354
371
|
}
|
|
@@ -373,6 +390,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
373
390
|
*/
|
|
374
391
|
logger.debug(
|
|
375
392
|
`Acquiring mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
|
|
393
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
376
394
|
);
|
|
377
395
|
mutex = await Semaphore.lock({
|
|
378
396
|
key: mutexKey,
|
|
@@ -382,6 +400,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
382
400
|
});
|
|
383
401
|
logger.debug(
|
|
384
402
|
`Acquired mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
|
|
403
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
385
404
|
);
|
|
386
405
|
|
|
387
406
|
// Calculate time window cutoff (only if time window is enabled)
|
|
@@ -496,14 +515,17 @@ class AlertGroupingEngineServiceClass {
|
|
|
496
515
|
try {
|
|
497
516
|
logger.debug(
|
|
498
517
|
`Releasing mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
|
|
518
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
499
519
|
);
|
|
500
520
|
await Semaphore.release(mutex);
|
|
501
521
|
logger.debug(
|
|
502
522
|
`Released mutex for grouping key: ${mutexKey} for alert ${alert.id}`,
|
|
523
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
503
524
|
);
|
|
504
525
|
} catch (err) {
|
|
505
526
|
logger.error(
|
|
506
527
|
`Error releasing mutex for grouping key: ${mutexKey}: ${err}`,
|
|
528
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
507
529
|
);
|
|
508
530
|
}
|
|
509
531
|
}
|
|
@@ -747,6 +769,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
747
769
|
} catch (ownerError) {
|
|
748
770
|
logger.error(
|
|
749
771
|
`Error adding owner user ${user.id} to episode: ${ownerError}`,
|
|
772
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
750
773
|
);
|
|
751
774
|
}
|
|
752
775
|
}
|
|
@@ -777,6 +800,7 @@ class AlertGroupingEngineServiceClass {
|
|
|
777
800
|
} catch (ownerError) {
|
|
778
801
|
logger.error(
|
|
779
802
|
`Error adding owner team ${team.id} to episode: ${ownerError}`,
|
|
803
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
780
804
|
);
|
|
781
805
|
}
|
|
782
806
|
}
|
|
@@ -824,13 +848,16 @@ class AlertGroupingEngineServiceClass {
|
|
|
824
848
|
} catch (feedError) {
|
|
825
849
|
logger.error(
|
|
826
850
|
`Error creating episode feed for episode creation: ${feedError}`,
|
|
851
|
+
{ projectId: alert.projectId?.toString() } as LogAttributes,
|
|
827
852
|
);
|
|
828
853
|
}
|
|
829
854
|
}
|
|
830
855
|
|
|
831
856
|
return createdEpisode;
|
|
832
857
|
} catch (error) {
|
|
833
|
-
logger.error(`Error creating new episode: ${error}
|
|
858
|
+
logger.error(`Error creating new episode: ${error}`, {
|
|
859
|
+
projectId: alert.projectId?.toString(),
|
|
860
|
+
} as LogAttributes);
|
|
834
861
|
return null;
|
|
835
862
|
}
|
|
836
863
|
}
|
|
@@ -989,7 +1016,9 @@ class AlertGroupingEngineServiceClass {
|
|
|
989
1016
|
error instanceof Error &&
|
|
990
1017
|
error.message.includes("already a member")
|
|
991
1018
|
) {
|
|
992
|
-
logger.debug(`Alert ${alert.id} is already in episode ${episodeId}
|
|
1019
|
+
logger.debug(`Alert ${alert.id} is already in episode ${episodeId}`, {
|
|
1020
|
+
projectId: alert.projectId?.toString(),
|
|
1021
|
+
} as LogAttributes);
|
|
993
1022
|
return;
|
|
994
1023
|
}
|
|
995
1024
|
throw error;
|
|
@@ -28,7 +28,7 @@ import AlertState from "../../Models/DatabaseModels/AlertState";
|
|
|
28
28
|
import AlertStateTimeline from "../../Models/DatabaseModels/AlertStateTimeline";
|
|
29
29
|
import User from "../../Models/DatabaseModels/User";
|
|
30
30
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
31
|
-
import logger from "../Utils/Logger";
|
|
31
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
32
32
|
import TelemetryUtil from "../Utils/Telemetry/Telemetry";
|
|
33
33
|
import MetricService from "./MetricService";
|
|
34
34
|
import GlobalConfigService from "./GlobalConfigService";
|
|
@@ -261,6 +261,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
261
261
|
} catch (error) {
|
|
262
262
|
logger.error(
|
|
263
263
|
`Workspace operations failed in AlertService.onCreateSuccess: ${error}`,
|
|
264
|
+
{
|
|
265
|
+
projectId: createdItem.projectId?.toString(),
|
|
266
|
+
alertId: createdItem.id?.toString(),
|
|
267
|
+
} as LogAttributes,
|
|
264
268
|
);
|
|
265
269
|
return Promise.resolve();
|
|
266
270
|
}
|
|
@@ -273,6 +277,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
273
277
|
} catch (error) {
|
|
274
278
|
logger.error(
|
|
275
279
|
`Create alert feed failed in AlertService.onCreateSuccess: ${error}`,
|
|
280
|
+
{
|
|
281
|
+
projectId: createdItem.projectId?.toString(),
|
|
282
|
+
alertId: createdItem.id?.toString(),
|
|
283
|
+
} as LogAttributes,
|
|
276
284
|
);
|
|
277
285
|
return Promise.resolve(); // Continue chain even on error
|
|
278
286
|
}
|
|
@@ -283,6 +291,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
283
291
|
} catch (error) {
|
|
284
292
|
logger.error(
|
|
285
293
|
`Handle alert state change failed in AlertService.onCreateSuccess: ${error}`,
|
|
294
|
+
{
|
|
295
|
+
projectId: createdItem.projectId?.toString(),
|
|
296
|
+
alertId: createdItem.id?.toString(),
|
|
297
|
+
} as LogAttributes,
|
|
286
298
|
);
|
|
287
299
|
return Promise.resolve(); // Continue chain even on error
|
|
288
300
|
}
|
|
@@ -311,6 +323,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
311
323
|
} catch (error) {
|
|
312
324
|
logger.error(
|
|
313
325
|
`Add owners failed in AlertService.onCreateSuccess: ${error}`,
|
|
326
|
+
{
|
|
327
|
+
projectId: createdItem.projectId?.toString(),
|
|
328
|
+
alertId: createdItem.id?.toString(),
|
|
329
|
+
} as LogAttributes,
|
|
314
330
|
);
|
|
315
331
|
return Promise.resolve(); // Continue chain even on error
|
|
316
332
|
}
|
|
@@ -325,6 +341,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
325
341
|
} catch (error) {
|
|
326
342
|
logger.error(
|
|
327
343
|
`On-call duty policy execution failed in AlertService.onCreateSuccess: ${error}`,
|
|
344
|
+
{
|
|
345
|
+
projectId: createdItem.projectId?.toString(),
|
|
346
|
+
alertId: createdItem.id?.toString(),
|
|
347
|
+
} as LogAttributes,
|
|
328
348
|
);
|
|
329
349
|
return Promise.resolve();
|
|
330
350
|
}
|
|
@@ -338,6 +358,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
338
358
|
} catch (error) {
|
|
339
359
|
logger.error(
|
|
340
360
|
`Alert grouping failed in AlertService.onCreateSuccess: ${error}`,
|
|
361
|
+
{
|
|
362
|
+
projectId: createdItem.projectId?.toString(),
|
|
363
|
+
alertId: createdItem.id?.toString(),
|
|
364
|
+
} as LogAttributes,
|
|
341
365
|
);
|
|
342
366
|
return Promise.resolve();
|
|
343
367
|
}
|
|
@@ -345,6 +369,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
345
369
|
.catch((error: Error) => {
|
|
346
370
|
logger.error(
|
|
347
371
|
`Critical error in AlertService sequential operations: ${error}`,
|
|
372
|
+
{
|
|
373
|
+
projectId: createdItem.projectId?.toString(),
|
|
374
|
+
alertId: createdItem.id?.toString(),
|
|
375
|
+
} as LogAttributes,
|
|
348
376
|
);
|
|
349
377
|
});
|
|
350
378
|
|
|
@@ -375,8 +403,14 @@ export class Service extends DatabaseService<Model> {
|
|
|
375
403
|
: {}),
|
|
376
404
|
});
|
|
377
405
|
|
|
378
|
-
logger.debug("Alert created. Workspace result:"
|
|
379
|
-
|
|
406
|
+
logger.debug("Alert created. Workspace result:", {
|
|
407
|
+
projectId: createdItem.projectId?.toString(),
|
|
408
|
+
alertId: createdItem.id?.toString(),
|
|
409
|
+
} as LogAttributes);
|
|
410
|
+
logger.debug(workspaceResult, {
|
|
411
|
+
projectId: createdItem.projectId?.toString(),
|
|
412
|
+
alertId: createdItem.id?.toString(),
|
|
413
|
+
} as LogAttributes);
|
|
380
414
|
|
|
381
415
|
if (workspaceResult && workspaceResult.channelsCreated?.length > 0) {
|
|
382
416
|
// update alert with these channels.
|
|
@@ -392,7 +426,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
392
426
|
});
|
|
393
427
|
}
|
|
394
428
|
} catch (error) {
|
|
395
|
-
logger.error(`Error in handleAlertWorkspaceOperationsAsync: ${error}
|
|
429
|
+
logger.error(`Error in handleAlertWorkspaceOperationsAsync: ${error}`, {
|
|
430
|
+
projectId: createdItem.projectId?.toString(),
|
|
431
|
+
alertId: createdItem.id?.toString(),
|
|
432
|
+
} as LogAttributes);
|
|
396
433
|
throw error;
|
|
397
434
|
}
|
|
398
435
|
}
|
|
@@ -506,7 +543,9 @@ ${alert.remediationNotes || "No remediation notes provided."}
|
|
|
506
543
|
},
|
|
507
544
|
});
|
|
508
545
|
} catch (error) {
|
|
509
|
-
logger.error(`Error in createAlertFeedAsync: ${error}
|
|
546
|
+
logger.error(`Error in createAlertFeedAsync: ${error}`, {
|
|
547
|
+
alertId: alertId?.toString(),
|
|
548
|
+
} as LogAttributes);
|
|
510
549
|
throw error;
|
|
511
550
|
}
|
|
512
551
|
}
|
|
@@ -532,7 +571,10 @@ ${alert.remediationNotes || "No remediation notes provided."}
|
|
|
532
571
|
},
|
|
533
572
|
});
|
|
534
573
|
} catch (error) {
|
|
535
|
-
logger.error(`Error in handleAlertStateChangeAsync: ${error}
|
|
574
|
+
logger.error(`Error in handleAlertStateChangeAsync: ${error}`, {
|
|
575
|
+
projectId: createdItem.projectId?.toString(),
|
|
576
|
+
alertId: createdItem.id?.toString(),
|
|
577
|
+
} as LogAttributes);
|
|
536
578
|
throw error;
|
|
537
579
|
}
|
|
538
580
|
}
|
|
@@ -562,7 +604,10 @@ ${alert.remediationNotes || "No remediation notes provided."}
|
|
|
562
604
|
await Promise.allSettled(policyPromises);
|
|
563
605
|
}
|
|
564
606
|
} catch (error) {
|
|
565
|
-
logger.error(`Error in executeAlertOnCallDutyPoliciesAsync: ${error}
|
|
607
|
+
logger.error(`Error in executeAlertOnCallDutyPoliciesAsync: ${error}`, {
|
|
608
|
+
projectId: createdItem.projectId?.toString(),
|
|
609
|
+
alertId: createdItem.id?.toString(),
|
|
610
|
+
} as LogAttributes);
|
|
566
611
|
throw error;
|
|
567
612
|
}
|
|
568
613
|
}
|
|
@@ -1385,7 +1430,10 @@ ${alertSeverity.name}
|
|
|
1385
1430
|
metricNameServiceNameMap: metricTypesMap,
|
|
1386
1431
|
projectId: alert.projectId,
|
|
1387
1432
|
}).catch((err: Error) => {
|
|
1388
|
-
logger.error(err
|
|
1433
|
+
logger.error(err, {
|
|
1434
|
+
projectId: alert.projectId?.toString(),
|
|
1435
|
+
alertId: alert.id?.toString(),
|
|
1436
|
+
} as LogAttributes);
|
|
1389
1437
|
});
|
|
1390
1438
|
}
|
|
1391
1439
|
|
|
@@ -1562,6 +1610,10 @@ ${alertSeverity.name}
|
|
|
1562
1610
|
});
|
|
1563
1611
|
logger.info(
|
|
1564
1612
|
`Updated Alert ${alert.id} current state to ${latestTimeline.alertStateId}`,
|
|
1613
|
+
{
|
|
1614
|
+
projectId: alert.projectId?.toString(),
|
|
1615
|
+
alertId: alert.id?.toString(),
|
|
1616
|
+
} as LogAttributes,
|
|
1565
1617
|
);
|
|
1566
1618
|
}
|
|
1567
1619
|
}
|
|
@@ -18,7 +18,7 @@ import { JSONObject } from "../../Types/JSON";
|
|
|
18
18
|
import AlertInternalNote from "../../Models/DatabaseModels/AlertInternalNote";
|
|
19
19
|
import AlertInternalNoteService from "./AlertInternalNoteService";
|
|
20
20
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
21
|
-
import logger from "../Utils/Logger";
|
|
21
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
22
22
|
import AlertFeedService from "./AlertFeedService";
|
|
23
23
|
import { AlertFeedEventType } from "../../Models/DatabaseModels/AlertFeed";
|
|
24
24
|
import WorkspaceNotificationRuleService from "./WorkspaceNotificationRuleService";
|
|
@@ -78,7 +78,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
|
|
|
78
78
|
namespace: "AlertStateTimeline.create",
|
|
79
79
|
});
|
|
80
80
|
} catch (err) {
|
|
81
|
-
logger.error(err
|
|
81
|
+
logger.error(err, {
|
|
82
|
+
projectId: createBy.data.projectId?.toString(),
|
|
83
|
+
alertId: createBy.data.alertId?.toString(),
|
|
84
|
+
} as LogAttributes);
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
if (
|
|
@@ -267,7 +270,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
|
|
|
267
270
|
try {
|
|
268
271
|
await Semaphore.release(mutex);
|
|
269
272
|
} catch (err) {
|
|
270
|
-
logger.error(err
|
|
273
|
+
logger.error(err, {
|
|
274
|
+
projectId: createBy.data.projectId?.toString(),
|
|
275
|
+
alertId: createBy.data.alertId?.toString(),
|
|
276
|
+
} as LogAttributes);
|
|
271
277
|
}
|
|
272
278
|
}
|
|
273
279
|
|
|
@@ -365,7 +371,10 @@ export class Service extends DatabaseService<AlertStateTimeline> {
|
|
|
365
371
|
try {
|
|
366
372
|
await Semaphore.release(mutex);
|
|
367
373
|
} catch (err) {
|
|
368
|
-
logger.error(err
|
|
374
|
+
logger.error(err, {
|
|
375
|
+
projectId: createdItem.projectId?.toString(),
|
|
376
|
+
alertId: createdItem.alertId?.toString(),
|
|
377
|
+
} as LogAttributes);
|
|
369
378
|
}
|
|
370
379
|
}
|
|
371
380
|
|
|
@@ -450,8 +459,15 @@ ${createdItem.rootCause}`,
|
|
|
450
459
|
}).catch((error: Error) => {
|
|
451
460
|
logger.error(
|
|
452
461
|
"Error while refreshing alert metrics after alert state timeline creation",
|
|
462
|
+
{
|
|
463
|
+
projectId: createdItem.projectId?.toString(),
|
|
464
|
+
alertId: createdItem.alertId?.toString(),
|
|
465
|
+
} as LogAttributes,
|
|
453
466
|
);
|
|
454
|
-
logger.error(error
|
|
467
|
+
logger.error(error, {
|
|
468
|
+
projectId: createdItem.projectId?.toString(),
|
|
469
|
+
alertId: createdItem.alertId?.toString(),
|
|
470
|
+
} as LogAttributes);
|
|
455
471
|
});
|
|
456
472
|
|
|
457
473
|
const isLastAlertState: boolean = await this.isLastAlertState({
|
|
@@ -475,8 +491,14 @@ ${createdItem.rootCause}`,
|
|
|
475
491
|
).toString()})** is resolved. Archiving channel.`,
|
|
476
492
|
},
|
|
477
493
|
}).catch((error: Error) => {
|
|
478
|
-
logger.error(`Error while archiving workspace channels
|
|
479
|
-
|
|
494
|
+
logger.error(`Error while archiving workspace channels:`, {
|
|
495
|
+
projectId: createdItem.projectId?.toString(),
|
|
496
|
+
alertId: createdItem.alertId?.toString(),
|
|
497
|
+
} as LogAttributes);
|
|
498
|
+
logger.error(error, {
|
|
499
|
+
projectId: createdItem.projectId?.toString(),
|
|
500
|
+
alertId: createdItem.alertId?.toString(),
|
|
501
|
+
} as LogAttributes);
|
|
480
502
|
});
|
|
481
503
|
}
|
|
482
504
|
|