fix(backend): correctly filter alertmanager data

This commit is contained in:
Łukasz Mierzwa
2020-06-12 19:14:17 +01:00
committed by Łukasz Mierzwa
parent 82e762e672
commit ee718cff23
5 changed files with 28 additions and 33 deletions
+7 -11
View File
@@ -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++
+2 -4
View File
@@ -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++
+7 -11
View File
@@ -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++
+6 -1
View File
@@ -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++
}
+6 -6
View File
@@ -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,
},
{