Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/alerting/alert.rb')
-rw-r--r--lib/gitlab/alerting/alert.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/gitlab/alerting/alert.rb b/lib/gitlab/alerting/alert.rb
index f6f52e392c6..7d97bd1bb52 100644
--- a/lib/gitlab/alerting/alert.rb
+++ b/lib/gitlab/alerting/alert.rb
@@ -21,6 +21,12 @@ module Gitlab
end
end
+ def gitlab_prometheus_alert_id
+ strong_memoize(:gitlab_prometheus_alert_id) do
+ payload&.dig('labels', 'gitlab_prometheus_alert_id')
+ end
+ end
+
def title
strong_memoize(:title) do
gitlab_alert&.title || parse_title_from_payload
@@ -120,12 +126,19 @@ module Gitlab
end
def parse_gitlab_alert_from_payload
- return unless metric_id
+ alerts_found = matching_gitlab_alerts
+
+ return if alerts_found.blank? || alerts_found.size > 1
+
+ alerts_found.first
+ end
+
+ def matching_gitlab_alerts
+ return unless metric_id || gitlab_prometheus_alert_id
Projects::Prometheus::AlertsFinder
- .new(project: project, metric: metric_id)
+ .new(project: project, metric: metric_id, id: gitlab_prometheus_alert_id)
.execute
- .first
end
def parse_title_from_payload