diff --git a/internal/filters/filter_silence_author.go b/internal/filters/filter_silence_author.go index e3a2b7735..93ab5775e 100644 --- a/internal/filters/filter_silence_author.go +++ b/internal/filters/filter_silence_author.go @@ -14,20 +14,16 @@ type silenceAuthorFilter struct { func (filter *silenceAuthorFilter) Match(alert *models.Alert, matches int) bool { if filter.IsValid { var isMatch bool - if alert.IsSilenced() { - for _, silenceID := range alert.SilencedBy { - for _, am := range alert.Alertmanager { - silence, found := am.Silences[silenceID] - if found { - m := filter.Matcher.Compare(silence.CreatedBy, filter.Value) - if m { - isMatch = m - } + for _, am := range alert.Alertmanager { + for _, silenceID := range am.SilencedBy { + silence, found := am.Silences[silenceID] + if found { + m := filter.Matcher.Compare(silence.CreatedBy, filter.Value) + if m { + isMatch = m } } } - } else { - isMatch = filter.Matcher.Compare("", filter.Value) } if isMatch { filter.Hits++ diff --git a/internal/filters/filter_silence_id.go b/internal/filters/filter_silence_id.go index 77b46602a..e85f71f02 100644 --- a/internal/filters/filter_silence_id.go +++ b/internal/filters/filter_silence_id.go @@ -14,15 +14,13 @@ type silenceIDFilter struct { func (filter *silenceIDFilter) Match(alert *models.Alert, matches int) bool { if filter.IsValid { var isMatch bool - if alert.IsSilenced() { - for _, silenceID := range alert.SilencedBy { + for _, am := range alert.Alertmanager { + for _, silenceID := range am.SilencedBy { m := filter.Matcher.Compare(silenceID, filter.Value) if m { isMatch = m } } - } else { - isMatch = filter.Matcher.Compare("", filter.Value) } if isMatch { filter.Hits++ diff --git a/internal/filters/filter_silence_ticket.go b/internal/filters/filter_silence_ticket.go index 7444cf5e3..dfd78590c 100644 --- a/internal/filters/filter_silence_ticket.go +++ b/internal/filters/filter_silence_ticket.go @@ -14,20 +14,16 @@ type silenceTicketFilter struct { func (filter *silenceTicketFilter) Match(alert *models.Alert, matches int) bool { if filter.IsValid { var isMatch bool - if alert.IsSilenced() { - for _, silenceID := range alert.SilencedBy { - for _, am := range alert.Alertmanager { - silence, found := am.Silences[silenceID] - if found { - m := filter.Matcher.Compare(silence.TicketID, filter.Value) - if m { - isMatch = m - } + for _, am := range alert.Alertmanager { + for _, silenceID := range am.SilencedBy { + silence, found := am.Silences[silenceID] + if found { + m := filter.Matcher.Compare(silence.TicketID, filter.Value) + if m { + isMatch = m } } } - } else { - isMatch = filter.Matcher.Compare("", filter.Value) } if isMatch { filter.Hits++ diff --git a/internal/filters/filter_state.go b/internal/filters/filter_state.go index abdf249e4..ddf839a88 100644 --- a/internal/filters/filter_state.go +++ b/internal/filters/filter_state.go @@ -27,7 +27,12 @@ func (filter *stateFilter) init(name string, matcher *matcherT, rawText string, func (filter *stateFilter) Match(alert *models.Alert, matches int) bool { if filter.IsValid { - isMatch := filter.Matcher.Compare(alert.State, filter.Value) + var isMatch bool + for _, am := range alert.Alertmanager { + if filter.Matcher.Compare(am.State, filter.Value) { + isMatch = true + } + } if isMatch { filter.Hits++ } diff --git a/internal/filters/filter_test.go b/internal/filters/filter_test.go index 61aea954d..119c5bcdf 100644 --- a/internal/filters/filter_test.go +++ b/internal/filters/filter_test.go @@ -159,10 +159,12 @@ var tests = []filterTest{ IsMatch: false, }, { - Expression: "@silence_id!=abcdef", - IsValid: true, - Alert: models.Alert{State: "suppressed", SilencedBy: []string{"1"}}, - IsMatch: true, + Expression: "@silence_id!=abcdef", + IsValid: true, + Alert: models.Alert{State: "suppressed", SilencedBy: []string{"1"}}, + Silence: models.Silence{ID: "1"}, + IsMatch: true, + IsAlertmanagerMatch: true, }, { Expression: "@silence_id=~cde", @@ -189,7 +191,6 @@ var tests = []filterTest{ Expression: "@silence_ticket=1", IsValid: true, Alert: models.Alert{State: "active", SilencedBy: []string{}}, - Silence: models.Silence{ID: "1", TicketID: "1"}, IsMatch: false, IsAlertmanagerMatch: true, }, @@ -272,7 +273,6 @@ var tests = []filterTest{ Expression: "@silence_author=john", IsValid: true, Alert: models.Alert{State: "active", SilencedBy: []string{}}, - Silence: models.Silence{ID: "1", CreatedBy: "john"}, IsMatch: false, }, {