diff options
Diffstat (limited to 'app/services/alert_management/process_prometheus_alert_service.rb')
-rw-r--r-- | app/services/alert_management/process_prometheus_alert_service.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/app/services/alert_management/process_prometheus_alert_service.rb b/app/services/alert_management/process_prometheus_alert_service.rb index 90fcbd95e4b..573d3914c05 100644 --- a/app/services/alert_management/process_prometheus_alert_service.rb +++ b/app/services/alert_management/process_prometheus_alert_service.rb @@ -66,7 +66,11 @@ module AlertManagement def process_resolved_alert_management_alert return if am_alert.blank? - return if am_alert.resolve(ends_at) + + if am_alert.resolve(ends_at) + close_issue(am_alert.issue) + return + end logger.warn( message: 'Unable to update AlertManagement::Alert status to resolved', @@ -75,12 +79,22 @@ module AlertManagement ) end + def close_issue(issue) + return if issue.blank? || issue.closed? + + Issues::CloseService + .new(project, User.alert_bot) + .execute(issue, system_note: false) + + SystemNoteService.auto_resolve_prometheus_alert(issue, project, User.alert_bot) if issue.reset.closed? + end + def logger @logger ||= Gitlab::AppLogger end def am_alert - @am_alert ||= AlertManagement::Alert.for_fingerprint(project, gitlab_fingerprint).first + @am_alert ||= AlertManagement::Alert.not_resolved.for_fingerprint(project, gitlab_fingerprint).first end def bad_request |