mirror of
https://github.com/prymitive/karma
synced 2026-08-23 11:56:20 +00:00
fix(backend): correctly filter alertmanager data
This commit is contained in:
committed by
Łukasz Mierzwa
parent
82e762e672
commit
ee718cff23
@@ -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++
|
||||
|
||||
@@ -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++
|
||||
|
||||
@@ -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++
|
||||
|
||||
@@ -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++
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user