@oneuptime/common 10.0.52 → 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/TelemetryAPI.ts +81 -0
- 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/LabelService.ts +14 -1
- package/Server/Services/MonitorFeedService.ts +33 -9
- package/Server/Services/MonitorProbeService.ts +31 -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 +29 -11
- 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/TelemetryAttributeService.ts +117 -4
- 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/BulkUpdate/BulkUpdateForm.tsx +60 -38
- 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/Dictionary/Dictionary.tsx +13 -1
- package/UI/Components/Filters/FiltersForm.tsx +2 -0
- package/UI/Components/Filters/JSONFilter.tsx +5 -1
- package/UI/Components/Filters/Types/Filter.ts +2 -0
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +3 -3
- package/UI/Components/ModelTable/BaseModelTable.tsx +10 -6
- 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/TelemetryAPI.js +39 -0
- package/build/dist/Server/API/TelemetryAPI.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/LabelService.js +10 -1
- package/build/dist/Server/Services/LabelService.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 +23 -3
- 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 +41 -21
- 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/TelemetryAttributeService.js +83 -6
- package/build/dist/Server/Services/TelemetryAttributeService.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/BulkUpdate/BulkUpdateForm.js +31 -30
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.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/Dictionary/Dictionary.js +9 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js +1 -1
- package/build/dist/UI/Components/Filters/JSONFilter.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +3 -3
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +9 -5
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- 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
|
@@ -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
|
IncidentEpisodeFeedEventType,
|
|
@@ -107,12 +107,24 @@ export class Service extends DatabaseService<Model> {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
} catch (e) {
|
|
110
|
-
logger.error("Error in sending notification to slack and teams"
|
|
111
|
-
|
|
110
|
+
logger.error("Error in sending notification to slack and teams", {
|
|
111
|
+
projectId: data.projectId?.toString(),
|
|
112
|
+
incidentEpisodeId: data.incidentEpisodeId?.toString(),
|
|
113
|
+
} as LogAttributes);
|
|
114
|
+
logger.error(e, {
|
|
115
|
+
projectId: data.projectId?.toString(),
|
|
116
|
+
incidentEpisodeId: data.incidentEpisodeId?.toString(),
|
|
117
|
+
} as LogAttributes);
|
|
112
118
|
}
|
|
113
119
|
} catch (error) {
|
|
114
|
-
logger.error("IncidentEpisodeFeedService.createIncidentEpisodeFeedItem"
|
|
115
|
-
|
|
120
|
+
logger.error("IncidentEpisodeFeedService.createIncidentEpisodeFeedItem", {
|
|
121
|
+
projectId: data.projectId?.toString(),
|
|
122
|
+
incidentEpisodeId: data.incidentEpisodeId?.toString(),
|
|
123
|
+
} as LogAttributes);
|
|
124
|
+
logger.error(error, {
|
|
125
|
+
projectId: data.projectId?.toString(),
|
|
126
|
+
incidentEpisodeId: data.incidentEpisodeId?.toString(),
|
|
127
|
+
} as LogAttributes);
|
|
116
128
|
// we dont want to throw the error here, as this is a non-critical operation
|
|
117
129
|
}
|
|
118
130
|
}
|
|
@@ -10,7 +10,7 @@ import IncidentState from "../../Models/DatabaseModels/IncidentState";
|
|
|
10
10
|
import IncidentSeverity from "../../Models/DatabaseModels/IncidentSeverity";
|
|
11
11
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
12
12
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
13
|
-
import logger from "../Utils/Logger";
|
|
13
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
14
14
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
15
15
|
import IncidentEpisodeStateTimeline from "../../Models/DatabaseModels/IncidentEpisodeStateTimeline";
|
|
16
16
|
import IncidentEpisodeStateTimelineService from "./IncidentEpisodeStateTimelineService";
|
|
@@ -157,6 +157,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
157
157
|
} catch (error) {
|
|
158
158
|
logger.error(
|
|
159
159
|
`Workspace operations failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
|
|
160
|
+
{
|
|
161
|
+
projectId: createdItem.projectId?.toString(),
|
|
162
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
163
|
+
} as LogAttributes,
|
|
160
164
|
);
|
|
161
165
|
}
|
|
162
166
|
})
|
|
@@ -175,6 +179,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
175
179
|
} catch (error) {
|
|
176
180
|
logger.error(
|
|
177
181
|
`Handle episode state change failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
|
|
182
|
+
{
|
|
183
|
+
projectId: createdItem.projectId?.toString(),
|
|
184
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
185
|
+
} as LogAttributes,
|
|
178
186
|
);
|
|
179
187
|
}
|
|
180
188
|
})
|
|
@@ -184,6 +192,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
184
192
|
} catch (error) {
|
|
185
193
|
logger.error(
|
|
186
194
|
`Create episode feed failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
|
|
195
|
+
{
|
|
196
|
+
projectId: createdItem.projectId?.toString(),
|
|
197
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
198
|
+
} as LogAttributes,
|
|
187
199
|
);
|
|
188
200
|
}
|
|
189
201
|
})
|
|
@@ -194,12 +206,20 @@ export class Service extends DatabaseService<Model> {
|
|
|
194
206
|
} catch (error) {
|
|
195
207
|
logger.error(
|
|
196
208
|
`On-call duty policy execution failed in IncidentEpisodeService.onCreateSuccess: ${error}`,
|
|
209
|
+
{
|
|
210
|
+
projectId: createdItem.projectId?.toString(),
|
|
211
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
212
|
+
} as LogAttributes,
|
|
197
213
|
);
|
|
198
214
|
}
|
|
199
215
|
})
|
|
200
216
|
.catch((error: Error) => {
|
|
201
217
|
logger.error(
|
|
202
218
|
`Critical error in IncidentEpisodeService.onCreateSuccess: ${error}`,
|
|
219
|
+
{
|
|
220
|
+
projectId: createdItem.projectId?.toString(),
|
|
221
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
222
|
+
} as LogAttributes,
|
|
203
223
|
);
|
|
204
224
|
});
|
|
205
225
|
|
|
@@ -246,7 +266,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
246
266
|
});
|
|
247
267
|
}
|
|
248
268
|
} catch (error) {
|
|
249
|
-
logger.error(`Error in handleEpisodeWorkspaceOperationsAsync: ${error}
|
|
269
|
+
logger.error(`Error in handleEpisodeWorkspaceOperationsAsync: ${error}`, {
|
|
270
|
+
projectId: createdItem.projectId?.toString(),
|
|
271
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
272
|
+
} as LogAttributes);
|
|
250
273
|
throw error;
|
|
251
274
|
}
|
|
252
275
|
}
|
|
@@ -375,7 +398,10 @@ export class Service extends DatabaseService<Model> {
|
|
|
375
398
|
feedInfoInMarkdown: feedInfoInMarkdown,
|
|
376
399
|
});
|
|
377
400
|
} catch (error) {
|
|
378
|
-
logger.error(`Error in executeEpisodeOnCallDutyPoliciesAsync: ${error}
|
|
401
|
+
logger.error(`Error in executeEpisodeOnCallDutyPoliciesAsync: ${error}`, {
|
|
402
|
+
projectId: createdItem.projectId?.toString(),
|
|
403
|
+
incidentEpisodeId: createdItem.id?.toString(),
|
|
404
|
+
} as LogAttributes);
|
|
379
405
|
throw error;
|
|
380
406
|
}
|
|
381
407
|
}
|
|
@@ -512,6 +538,11 @@ export class Service extends DatabaseService<Model> {
|
|
|
512
538
|
} catch (error) {
|
|
513
539
|
logger.error(
|
|
514
540
|
`Failed to cascade state change to incident ${member.incidentId.toString()}: ${error}`,
|
|
541
|
+
{
|
|
542
|
+
projectId: projectId.toString(),
|
|
543
|
+
incidentEpisodeId: episodeId.toString(),
|
|
544
|
+
incidentId: member.incidentId.toString(),
|
|
545
|
+
} as LogAttributes,
|
|
515
546
|
);
|
|
516
547
|
}
|
|
517
548
|
}
|
|
@@ -15,7 +15,7 @@ import IncidentEpisode from "../../Models/DatabaseModels/IncidentEpisode";
|
|
|
15
15
|
import IncidentEpisodeStateTimeline from "../../Models/DatabaseModels/IncidentEpisodeStateTimeline";
|
|
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 IncidentEpisodeFeedService from "./IncidentEpisodeFeedService";
|
|
20
20
|
import { IncidentEpisodeFeedEventType } from "../../Models/DatabaseModels/IncidentEpisodeFeed";
|
|
21
21
|
import Semaphore, { SemaphoreMutex } from "../Infrastructure/Semaphore";
|
|
@@ -50,7 +50,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
50
50
|
namespace: "IncidentEpisodeStateTimeline.create",
|
|
51
51
|
});
|
|
52
52
|
} catch (err) {
|
|
53
|
-
logger.error(err
|
|
53
|
+
logger.error(err, {
|
|
54
|
+
projectId: createBy.data.projectId?.toString(),
|
|
55
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
56
|
+
} as LogAttributes);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
if (
|
|
@@ -109,8 +112,14 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
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
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
118
|
+
} as LogAttributes);
|
|
119
|
+
logger.debug(stateBeforeThis, {
|
|
120
|
+
projectId: createBy.data.projectId?.toString(),
|
|
121
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
122
|
+
} as LogAttributes);
|
|
114
123
|
|
|
115
124
|
// If this is the first state, then do not notify the owner.
|
|
116
125
|
if (!stateBeforeThis) {
|
|
@@ -170,8 +179,14 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
170
179
|
}
|
|
171
180
|
}
|
|
172
181
|
|
|
173
|
-
logger.debug("State After this"
|
|
174
|
-
|
|
182
|
+
logger.debug("State After this", {
|
|
183
|
+
projectId: createBy.data.projectId?.toString(),
|
|
184
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
185
|
+
} as LogAttributes);
|
|
186
|
+
logger.debug(stateAfterThis, {
|
|
187
|
+
projectId: createBy.data.projectId?.toString(),
|
|
188
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
189
|
+
} as LogAttributes);
|
|
175
190
|
|
|
176
191
|
return {
|
|
177
192
|
createBy,
|
|
@@ -187,7 +202,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
187
202
|
try {
|
|
188
203
|
await Semaphore.release(mutex);
|
|
189
204
|
} catch (err) {
|
|
190
|
-
logger.error(err
|
|
205
|
+
logger.error(err, {
|
|
206
|
+
projectId: createBy.data.projectId?.toString(),
|
|
207
|
+
incidentEpisodeId: createBy.data.incidentEpisodeId?.toString(),
|
|
208
|
+
} as LogAttributes);
|
|
191
209
|
}
|
|
192
210
|
}
|
|
193
211
|
|
|
@@ -210,19 +228,40 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
210
228
|
throw new BadDataException("incidentStateId is null");
|
|
211
229
|
}
|
|
212
230
|
|
|
213
|
-
logger.debug("Status Timeline Before this"
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
logger.debug(onCreate.carryForward.
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
231
|
+
logger.debug("Status Timeline Before this", {
|
|
232
|
+
projectId: createdItem.projectId?.toString(),
|
|
233
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
234
|
+
} as LogAttributes);
|
|
235
|
+
logger.debug(onCreate.carryForward.statusTimelineBeforeThisStatus, {
|
|
236
|
+
projectId: createdItem.projectId?.toString(),
|
|
237
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
238
|
+
} as LogAttributes);
|
|
239
|
+
|
|
240
|
+
logger.debug("Status Timeline After this", {
|
|
241
|
+
projectId: createdItem.projectId?.toString(),
|
|
242
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
243
|
+
} as LogAttributes);
|
|
244
|
+
logger.debug(onCreate.carryForward.statusTimelineAfterThisStatus, {
|
|
245
|
+
projectId: createdItem.projectId?.toString(),
|
|
246
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
247
|
+
} as LogAttributes);
|
|
248
|
+
|
|
249
|
+
logger.debug("Created Item", {
|
|
250
|
+
projectId: createdItem.projectId?.toString(),
|
|
251
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
252
|
+
} as LogAttributes);
|
|
253
|
+
logger.debug(createdItem, {
|
|
254
|
+
projectId: createdItem.projectId?.toString(),
|
|
255
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
256
|
+
} as LogAttributes);
|
|
221
257
|
|
|
222
258
|
// Handle timeline updates
|
|
223
259
|
if (!onCreate.carryForward.statusTimelineBeforeThisStatus) {
|
|
224
260
|
// This is the first status, no need to update previous status.
|
|
225
|
-
logger.debug("This is the first status."
|
|
261
|
+
logger.debug("This is the first status.", {
|
|
262
|
+
projectId: createdItem.projectId?.toString(),
|
|
263
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
264
|
+
} as LogAttributes);
|
|
226
265
|
} else if (!onCreate.carryForward.statusTimelineAfterThisStatus) {
|
|
227
266
|
// This is the last status. Update the previous status to end at the start of this status.
|
|
228
267
|
await this.updateOneById({
|
|
@@ -234,7 +273,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
234
273
|
isRoot: true,
|
|
235
274
|
},
|
|
236
275
|
});
|
|
237
|
-
logger.debug("This is the last status."
|
|
276
|
+
logger.debug("This is the last status.", {
|
|
277
|
+
projectId: createdItem.projectId?.toString(),
|
|
278
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
279
|
+
} as LogAttributes);
|
|
238
280
|
} else {
|
|
239
281
|
// This is in the middle. Update the previous status to end at the start of this status.
|
|
240
282
|
await this.updateOneById({
|
|
@@ -257,7 +299,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
257
299
|
isRoot: true,
|
|
258
300
|
},
|
|
259
301
|
});
|
|
260
|
-
logger.debug("This status is in the middle."
|
|
302
|
+
logger.debug("This status is in the middle.", {
|
|
303
|
+
projectId: createdItem.projectId?.toString(),
|
|
304
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
305
|
+
} as LogAttributes);
|
|
261
306
|
}
|
|
262
307
|
|
|
263
308
|
// Update episode's current state if this is the latest timeline entry
|
|
@@ -311,6 +356,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
311
356
|
} catch (error) {
|
|
312
357
|
logger.error(
|
|
313
358
|
`Failed to cascade state change to member incidents: ${error}`,
|
|
359
|
+
{
|
|
360
|
+
projectId: createdItem.projectId?.toString(),
|
|
361
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
362
|
+
} as LogAttributes,
|
|
314
363
|
);
|
|
315
364
|
}
|
|
316
365
|
}
|
|
@@ -320,7 +369,10 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
320
369
|
try {
|
|
321
370
|
await Semaphore.release(mutex);
|
|
322
371
|
} catch (err) {
|
|
323
|
-
logger.error(err
|
|
372
|
+
logger.error(err, {
|
|
373
|
+
projectId: createdItem.projectId?.toString(),
|
|
374
|
+
incidentEpisodeId: createdItem.incidentEpisodeId?.toString(),
|
|
375
|
+
} as LogAttributes);
|
|
324
376
|
}
|
|
325
377
|
}
|
|
326
378
|
|
|
@@ -480,7 +532,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
480
532
|
|
|
481
533
|
if (!stateBeforeThis) {
|
|
482
534
|
// This is the first state, no need to update previous state.
|
|
483
|
-
logger.debug("This is the first state."
|
|
535
|
+
logger.debug("This is the first state.", {
|
|
536
|
+
incidentEpisodeId: episodeId?.toString(),
|
|
537
|
+
} as LogAttributes);
|
|
484
538
|
} else if (!stateAfterThis) {
|
|
485
539
|
// This is the last state. Update the previous state to end at the end of this state.
|
|
486
540
|
await this.updateOneById({
|
|
@@ -492,7 +546,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
492
546
|
isRoot: true,
|
|
493
547
|
},
|
|
494
548
|
});
|
|
495
|
-
logger.debug("This is the last state."
|
|
549
|
+
logger.debug("This is the last state.", {
|
|
550
|
+
incidentEpisodeId: episodeId?.toString(),
|
|
551
|
+
} as LogAttributes);
|
|
496
552
|
} else {
|
|
497
553
|
// This state is in the middle. Update the previous state to end at the start of the next state.
|
|
498
554
|
await this.updateOneById({
|
|
@@ -515,7 +571,9 @@ export class Service extends DatabaseService<IncidentEpisodeStateTimeline> {
|
|
|
515
571
|
isRoot: true,
|
|
516
572
|
},
|
|
517
573
|
});
|
|
518
|
-
logger.debug("This state is in the middle."
|
|
574
|
+
logger.debug("This state is in the middle.", {
|
|
575
|
+
incidentEpisodeId: episodeId?.toString(),
|
|
576
|
+
} as LogAttributes);
|
|
519
577
|
}
|
|
520
578
|
}
|
|
521
579
|
|
|
@@ -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 IncidentFeed, {
|
|
10
10
|
IncidentFeedEventType,
|
|
@@ -43,8 +43,14 @@ export class Service extends DatabaseService<IncidentFeed> {
|
|
|
43
43
|
| undefined;
|
|
44
44
|
}): Promise<void> {
|
|
45
45
|
try {
|
|
46
|
-
logger.debug("IncidentFeedService.createIncidentFeedItem"
|
|
47
|
-
|
|
46
|
+
logger.debug("IncidentFeedService.createIncidentFeedItem", {
|
|
47
|
+
projectId: data.projectId?.toString(),
|
|
48
|
+
incidentId: data.incidentId?.toString(),
|
|
49
|
+
} as LogAttributes);
|
|
50
|
+
logger.debug(data, {
|
|
51
|
+
projectId: data.projectId?.toString(),
|
|
52
|
+
incidentId: data.incidentId?.toString(),
|
|
53
|
+
} as LogAttributes);
|
|
48
54
|
|
|
49
55
|
const incidentFeed: IncidentFeed = new IncidentFeed();
|
|
50
56
|
|
|
@@ -93,8 +99,14 @@ export class Service extends DatabaseService<IncidentFeed> {
|
|
|
93
99
|
},
|
|
94
100
|
});
|
|
95
101
|
|
|
96
|
-
logger.debug("Incident Feed created"
|
|
97
|
-
|
|
102
|
+
logger.debug("Incident Feed created", {
|
|
103
|
+
projectId: data.projectId?.toString(),
|
|
104
|
+
incidentId: data.incidentId?.toString(),
|
|
105
|
+
} as LogAttributes);
|
|
106
|
+
logger.debug(createdIncidentFeed, {
|
|
107
|
+
projectId: data.projectId?.toString(),
|
|
108
|
+
incidentId: data.incidentId?.toString(),
|
|
109
|
+
} as LogAttributes);
|
|
98
110
|
|
|
99
111
|
try {
|
|
100
112
|
// send notification to slack and teams
|
|
@@ -110,14 +122,26 @@ export class Service extends DatabaseService<IncidentFeed> {
|
|
|
110
122
|
});
|
|
111
123
|
}
|
|
112
124
|
} catch (e) {
|
|
113
|
-
logger.error("Error in sending notification to slack and teams"
|
|
114
|
-
|
|
125
|
+
logger.error("Error in sending notification to slack and teams", {
|
|
126
|
+
projectId: data.projectId?.toString(),
|
|
127
|
+
incidentId: data.incidentId?.toString(),
|
|
128
|
+
} as LogAttributes);
|
|
129
|
+
logger.error(e, {
|
|
130
|
+
projectId: data.projectId?.toString(),
|
|
131
|
+
incidentId: data.incidentId?.toString(),
|
|
132
|
+
} as LogAttributes);
|
|
115
133
|
|
|
116
134
|
// we dont throw this error as it is not a critical error
|
|
117
135
|
}
|
|
118
136
|
} catch (e) {
|
|
119
|
-
logger.error("Error in creating incident feed"
|
|
120
|
-
|
|
137
|
+
logger.error("Error in creating incident feed", {
|
|
138
|
+
projectId: data.projectId?.toString(),
|
|
139
|
+
incidentId: data.incidentId?.toString(),
|
|
140
|
+
} as LogAttributes);
|
|
141
|
+
logger.error(e, {
|
|
142
|
+
projectId: data.projectId?.toString(),
|
|
143
|
+
incidentId: data.incidentId?.toString(),
|
|
144
|
+
} as LogAttributes);
|
|
121
145
|
|
|
122
146
|
// we dont throw this error as it is not a critical error
|
|
123
147
|
}
|
|
@@ -13,7 +13,7 @@ import Monitor from "../../Models/DatabaseModels/Monitor";
|
|
|
13
13
|
import IncidentSeverity from "../../Models/DatabaseModels/IncidentSeverity";
|
|
14
14
|
import ServiceMonitor from "../../Models/DatabaseModels/ServiceMonitor";
|
|
15
15
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
|
-
import logger from "../Utils/Logger";
|
|
16
|
+
import logger, { LogAttributes } from "../Utils/Logger";
|
|
17
17
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
18
18
|
import OneUptimeDate from "../../Types/Date";
|
|
19
19
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
@@ -40,11 +40,15 @@ export interface GroupingResult {
|
|
|
40
40
|
class IncidentGroupingEngineServiceClass {
|
|
41
41
|
@CaptureSpan()
|
|
42
42
|
public async processIncident(incident: Incident): Promise<GroupingResult> {
|
|
43
|
-
logger.debug(`Processing incident ${incident.id} for grouping
|
|
43
|
+
logger.debug(`Processing incident ${incident.id} for grouping`, {
|
|
44
|
+
projectId: incident.projectId?.toString(),
|
|
45
|
+
} as LogAttributes);
|
|
44
46
|
|
|
45
47
|
try {
|
|
46
48
|
if (!incident.id || !incident.projectId) {
|
|
47
|
-
logger.warn("Incident missing id or projectId, skipping grouping"
|
|
49
|
+
logger.warn("Incident missing id or projectId, skipping grouping", {
|
|
50
|
+
projectId: incident.projectId?.toString(),
|
|
51
|
+
} as LogAttributes);
|
|
48
52
|
return { grouped: false };
|
|
49
53
|
}
|
|
50
54
|
|
|
@@ -130,12 +134,14 @@ class IncidentGroupingEngineServiceClass {
|
|
|
130
134
|
if (rules.length === 0) {
|
|
131
135
|
logger.debug(
|
|
132
136
|
`No enabled grouping rules found for project ${incident.projectId}`,
|
|
137
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
133
138
|
);
|
|
134
139
|
return { grouped: false };
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
logger.debug(
|
|
138
143
|
`Found ${rules.length} enabled grouping rules for project ${incident.projectId}`,
|
|
144
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
139
145
|
);
|
|
140
146
|
|
|
141
147
|
// Find first matching rule
|
|
@@ -148,6 +154,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
148
154
|
if (matches) {
|
|
149
155
|
logger.debug(
|
|
150
156
|
`Incident ${incident.id} matches rule ${rule.name || rule.id}`,
|
|
157
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
151
158
|
);
|
|
152
159
|
|
|
153
160
|
// Try to find existing episode or create new one
|
|
@@ -159,10 +166,14 @@ class IncidentGroupingEngineServiceClass {
|
|
|
159
166
|
}
|
|
160
167
|
}
|
|
161
168
|
|
|
162
|
-
logger.debug(`Incident ${incident.id} did not match any grouping rules
|
|
169
|
+
logger.debug(`Incident ${incident.id} did not match any grouping rules`, {
|
|
170
|
+
projectId: incident.projectId?.toString(),
|
|
171
|
+
} as LogAttributes);
|
|
163
172
|
return { grouped: false };
|
|
164
173
|
} catch (error) {
|
|
165
|
-
logger.error(`Error processing incident for grouping: ${error}
|
|
174
|
+
logger.error(`Error processing incident for grouping: ${error}`, {
|
|
175
|
+
projectId: incident.projectId?.toString(),
|
|
176
|
+
} as LogAttributes);
|
|
166
177
|
return { grouped: false };
|
|
167
178
|
}
|
|
168
179
|
}
|
|
@@ -174,6 +185,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
174
185
|
): Promise<boolean> {
|
|
175
186
|
logger.debug(
|
|
176
187
|
`Checking if incident ${incident.id} matches rule ${rule.name || rule.id}`,
|
|
188
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
177
189
|
);
|
|
178
190
|
|
|
179
191
|
// Check monitor IDs - if monitors are specified, incident must be from one of them
|
|
@@ -319,6 +331,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
319
331
|
} catch {
|
|
320
332
|
logger.warn(
|
|
321
333
|
`Invalid regex pattern in rule ${rule.id}: ${rule.monitorNamePattern}`,
|
|
334
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
322
335
|
);
|
|
323
336
|
monitorMatches = false;
|
|
324
337
|
}
|
|
@@ -341,6 +354,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
341
354
|
} catch {
|
|
342
355
|
logger.warn(
|
|
343
356
|
`Invalid regex pattern in rule ${rule.id}: ${rule.monitorDescriptionPattern}`,
|
|
357
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
344
358
|
);
|
|
345
359
|
monitorMatches = false;
|
|
346
360
|
}
|
|
@@ -371,6 +385,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
371
385
|
} catch {
|
|
372
386
|
logger.warn(
|
|
373
387
|
`Invalid regex pattern in rule ${rule.id}: ${rule.incidentTitlePattern}`,
|
|
388
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
374
389
|
);
|
|
375
390
|
return false;
|
|
376
391
|
}
|
|
@@ -389,6 +404,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
389
404
|
} catch {
|
|
390
405
|
logger.warn(
|
|
391
406
|
`Invalid regex pattern in rule ${rule.id}: ${rule.incidentDescriptionPattern}`,
|
|
407
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
392
408
|
);
|
|
393
409
|
return false;
|
|
394
410
|
}
|
|
@@ -397,6 +413,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
397
413
|
// If no criteria specified (all fields empty), rule matches all incidents
|
|
398
414
|
logger.debug(
|
|
399
415
|
`Rule ${rule.name || rule.id} matched incident ${incident.id} (all criteria passed)`,
|
|
416
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
400
417
|
);
|
|
401
418
|
return true;
|
|
402
419
|
}
|
|
@@ -421,6 +438,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
421
438
|
*/
|
|
422
439
|
logger.debug(
|
|
423
440
|
`Acquiring mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
|
|
441
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
424
442
|
);
|
|
425
443
|
mutex = await Semaphore.lock({
|
|
426
444
|
key: mutexKey,
|
|
@@ -430,6 +448,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
430
448
|
});
|
|
431
449
|
logger.debug(
|
|
432
450
|
`Acquired mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
|
|
451
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
433
452
|
);
|
|
434
453
|
|
|
435
454
|
// Calculate time window cutoff (only if time window is enabled)
|
|
@@ -546,14 +565,17 @@ class IncidentGroupingEngineServiceClass {
|
|
|
546
565
|
try {
|
|
547
566
|
logger.debug(
|
|
548
567
|
`Releasing mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
|
|
568
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
549
569
|
);
|
|
550
570
|
await Semaphore.release(mutex);
|
|
551
571
|
logger.debug(
|
|
552
572
|
`Released mutex for grouping key: ${mutexKey} for incident ${incident.id}`,
|
|
573
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
553
574
|
);
|
|
554
575
|
} catch (err) {
|
|
555
576
|
logger.error(
|
|
556
577
|
`Error releasing mutex for grouping key: ${mutexKey}: ${err}`,
|
|
578
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
557
579
|
);
|
|
558
580
|
}
|
|
559
581
|
}
|
|
@@ -817,6 +839,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
817
839
|
} catch (ownerError) {
|
|
818
840
|
logger.error(
|
|
819
841
|
`Error adding owner user ${user.id} to episode: ${ownerError}`,
|
|
842
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
820
843
|
);
|
|
821
844
|
}
|
|
822
845
|
}
|
|
@@ -847,6 +870,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
847
870
|
} catch (ownerError) {
|
|
848
871
|
logger.error(
|
|
849
872
|
`Error adding owner team ${team.id} to episode: ${ownerError}`,
|
|
873
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
850
874
|
);
|
|
851
875
|
}
|
|
852
876
|
}
|
|
@@ -878,6 +902,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
878
902
|
} catch (memberError) {
|
|
879
903
|
logger.error(
|
|
880
904
|
`Error adding member role assignment to episode: ${memberError}`,
|
|
905
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
881
906
|
);
|
|
882
907
|
}
|
|
883
908
|
}
|
|
@@ -926,13 +951,16 @@ class IncidentGroupingEngineServiceClass {
|
|
|
926
951
|
} catch (feedError) {
|
|
927
952
|
logger.error(
|
|
928
953
|
`Error creating episode feed for episode creation: ${feedError}`,
|
|
954
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
929
955
|
);
|
|
930
956
|
}
|
|
931
957
|
}
|
|
932
958
|
|
|
933
959
|
return createdEpisode;
|
|
934
960
|
} catch (error) {
|
|
935
|
-
logger.error(`Error creating new episode: ${error}
|
|
961
|
+
logger.error(`Error creating new episode: ${error}`, {
|
|
962
|
+
projectId: incident.projectId?.toString(),
|
|
963
|
+
} as LogAttributes);
|
|
936
964
|
return null;
|
|
937
965
|
}
|
|
938
966
|
}
|
|
@@ -1118,6 +1146,7 @@ class IncidentGroupingEngineServiceClass {
|
|
|
1118
1146
|
) {
|
|
1119
1147
|
logger.debug(
|
|
1120
1148
|
`Incident ${incident.id} is already in episode ${episodeId}`,
|
|
1149
|
+
{ projectId: incident.projectId?.toString() } as LogAttributes,
|
|
1121
1150
|
);
|
|
1122
1151
|
return;
|
|
1123
1152
|
}
|