mirror of
https://github.com/prymitive/karma
synced 2026-05-05 03:16:51 +00:00
Fixes for 0.5.1
This commit is contained in:
@@ -12,17 +12,12 @@ import (
|
||||
log "github.com/Sirupsen/logrus"
|
||||
)
|
||||
|
||||
type silencesData struct {
|
||||
Silences []models.AlertmanagerSilence `json:"silences"`
|
||||
TotalSilences int `json:"totalSilences"`
|
||||
}
|
||||
|
||||
// SilenceAPIResponse is what Alertmanager API returns
|
||||
type SilenceAPIResponse struct {
|
||||
Status string `json:"status"`
|
||||
Data silencesData `json:"data"`
|
||||
ErrorType string `json:"errorType"`
|
||||
Error string `json:"error"`
|
||||
Status string `json:"status"`
|
||||
Data []models.AlertmanagerSilence `json:"data"`
|
||||
ErrorType string `json:"errorType"`
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
// Get will return fresh data from Alertmanager API
|
||||
@@ -44,6 +39,6 @@ func (response *SilenceAPIResponse) Get() error {
|
||||
return errors.New(response.Error)
|
||||
}
|
||||
|
||||
log.Infof("Got %d silences(s) in %s", len(response.Data.Silences), time.Since(start))
|
||||
log.Infof("Got %d silences(s) in %s", len(response.Data), time.Since(start))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package filters
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
|
||||
"github.com/cloudflare/unsee/models"
|
||||
"github.com/cloudflare/unsee/store"
|
||||
)
|
||||
@@ -41,8 +41,8 @@ func (filter *fuzzyFilter) Match(alert *models.UnseeAlert, matches int) bool {
|
||||
}
|
||||
}
|
||||
|
||||
if alert.Silenced > 0 {
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found {
|
||||
if alert.Silenced != "" {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found {
|
||||
if filter.Matcher.Compare(silence.Comment, filter.Value) {
|
||||
filter.Hits++
|
||||
return true
|
||||
|
||||
@@ -2,8 +2,8 @@ package filters
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/cloudflare/unsee/models"
|
||||
"github.com/cloudflare/unsee/store"
|
||||
)
|
||||
@@ -15,9 +15,9 @@ type silenceAuthorFilter struct {
|
||||
func (filter *silenceAuthorFilter) Match(alert *models.UnseeAlert, matches int) bool {
|
||||
if filter.IsValid {
|
||||
var isMatch bool
|
||||
if alert.Silenced > 0 {
|
||||
if alert.Silenced != "" {
|
||||
store.StoreLock.RLock()
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found {
|
||||
isMatch = filter.Matcher.Compare(filter.Value, silence.CreatedBy)
|
||||
}
|
||||
store.StoreLock.RUnlock()
|
||||
@@ -41,9 +41,9 @@ func newSilenceAuthorFilter() FilterT {
|
||||
func sinceAuthorAutocomplete(name string, operators []string, alerts []models.UnseeAlert) []models.UnseeAutocomplete {
|
||||
tokens := map[string]models.UnseeAutocomplete{}
|
||||
for _, alert := range alerts {
|
||||
if alert.Silenced > 0 {
|
||||
if alert.Silenced != "" {
|
||||
store.StoreLock.RLock()
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found && silence.CreatedBy != "" {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found && silence.CreatedBy != "" {
|
||||
for _, operator := range operators {
|
||||
token := fmt.Sprintf("%s%s%s", name, operator, silence.CreatedBy)
|
||||
tokens[token] = makeAC(token, []string{
|
||||
|
||||
@@ -2,8 +2,8 @@ package filters
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/cloudflare/unsee/models"
|
||||
"github.com/cloudflare/unsee/store"
|
||||
)
|
||||
@@ -15,9 +15,9 @@ type silenceJiraFilter struct {
|
||||
func (filter *silenceJiraFilter) Match(alert *models.UnseeAlert, matches int) bool {
|
||||
if filter.IsValid {
|
||||
var isMatch bool
|
||||
if alert.Silenced > 0 {
|
||||
if alert.Silenced != "" {
|
||||
store.StoreLock.RLock()
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found {
|
||||
isMatch = filter.Matcher.Compare(silence.JiraID, filter.Value)
|
||||
}
|
||||
store.StoreLock.RUnlock()
|
||||
@@ -41,9 +41,9 @@ func newSilenceJiraFilter() FilterT {
|
||||
func sinceJiraIDAutocomplete(name string, operators []string, alerts []models.UnseeAlert) []models.UnseeAutocomplete {
|
||||
tokens := map[string]models.UnseeAutocomplete{}
|
||||
for _, alert := range alerts {
|
||||
if alert.Silenced > 0 {
|
||||
if alert.Silenced != "" {
|
||||
store.StoreLock.RLock()
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found && silence.JiraID != "" {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found && silence.JiraID != "" {
|
||||
for _, operator := range operators {
|
||||
token := fmt.Sprintf("%s%s%s", name, operator, silence.JiraID)
|
||||
tokens[token] = makeAC(token, []string{
|
||||
|
||||
@@ -3,6 +3,7 @@ package filters
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/cloudflare/unsee/models"
|
||||
)
|
||||
|
||||
@@ -30,7 +31,7 @@ func (filter *silencedFilter) init(name string, matcher *matcherT, rawText strin
|
||||
func (filter *silencedFilter) Match(alert *models.UnseeAlert, matches int) bool {
|
||||
if filter.IsValid {
|
||||
var isSilenced bool
|
||||
isSilenced = (alert.Silenced > 0)
|
||||
isSilenced = (alert.Silenced != "")
|
||||
isMatch := filter.Matcher.Compare(isSilenced, filter.Value)
|
||||
if isMatch {
|
||||
filter.Hits++
|
||||
|
||||
@@ -2,12 +2,12 @@ package filters_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cloudflare/unsee/filters"
|
||||
"github.com/cloudflare/unsee/models"
|
||||
"github.com/cloudflare/unsee/store"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type filterTest struct {
|
||||
@@ -34,13 +34,13 @@ var tests = []filterTest{
|
||||
filterTest{
|
||||
Expression: "@silenced=true",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silenced!=true",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
@@ -51,86 +51,86 @@ var tests = []filterTest{
|
||||
filterTest{
|
||||
Expression: "@silence_jira=1",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}, JiraID: "1"},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}, JiraID: "1"},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira=2",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira!=3",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}, JiraID: "x"},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}, JiraID: "x"},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira!=4",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}, JiraID: "4"},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}, JiraID: "4"},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira!=5",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira=~abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}, JiraID: "xxabcxx"},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}, JiraID: "xxabcxx"},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_jira=~abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}, JiraID: "xxx"},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}, JiraID: "xxx"},
|
||||
IsMatch: false,
|
||||
},
|
||||
|
||||
filterTest{
|
||||
Expression: "@silence_author=john",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, CreatedBy: "john"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", CreatedBy: "john"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_author=john",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, CreatedBy: "bob"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", CreatedBy: "bob"}},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_author!=john",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, CreatedBy: "bob"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", CreatedBy: "bob"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_author!=john",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, CreatedBy: "john"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", CreatedBy: "john"}},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "@silence_author!=john",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
|
||||
@@ -241,29 +241,29 @@ var tests = []filterTest{
|
||||
filterTest{
|
||||
Expression: "abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, Comment: "abc"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", Comment: "abc"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, Comment: "abcxxx"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", Comment: "abcxxx"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, Comment: "ABCD"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", Comment: "ABCD"}},
|
||||
IsMatch: true,
|
||||
},
|
||||
filterTest{
|
||||
Expression: "abc",
|
||||
IsValid: true,
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: 1}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: 1, Comment: "xzc"}},
|
||||
Alert: models.UnseeAlert{AlertmanagerAlert: models.AlertmanagerAlert{Silenced: "1"}},
|
||||
Silence: models.UnseeSilence{AlertmanagerSilence: models.AlertmanagerSilence{ID: "1", Comment: "xzc"}},
|
||||
IsMatch: false,
|
||||
},
|
||||
filterTest{
|
||||
@@ -282,7 +282,7 @@ func TestFilters(t *testing.T) {
|
||||
for _, ft := range tests {
|
||||
if &ft.Silence != nil {
|
||||
store.SilenceStore.Store = map[string]models.UnseeSilence{}
|
||||
store.SilenceStore.Store[strconv.Itoa(ft.Silence.ID)] = ft.Silence
|
||||
store.SilenceStore.Store[ft.Silence.ID] = ft.Silence
|
||||
} else {
|
||||
store.SilenceStore.Store = map[string]models.UnseeSilence{}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://localhost/graph",
|
||||
"inhibited": false,
|
||||
"silenced": 1
|
||||
"silenced": "1"
|
||||
},
|
||||
{
|
||||
"labels": {
|
||||
@@ -88,7 +88,7 @@
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://localhost/graph",
|
||||
"inhibited": false,
|
||||
"silenced": 1
|
||||
"silenced": "1"
|
||||
},
|
||||
{
|
||||
"labels": {
|
||||
@@ -164,7 +164,7 @@
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://localhost/graph",
|
||||
"inhibited": false,
|
||||
"silenced": 2
|
||||
"silenced": "2"
|
||||
},
|
||||
{
|
||||
"labels": {
|
||||
@@ -180,7 +180,7 @@
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://localhost/graph",
|
||||
"inhibited": false,
|
||||
"silenced": 2
|
||||
"silenced": "2"
|
||||
},
|
||||
{
|
||||
"labels": {
|
||||
@@ -196,7 +196,7 @@
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "http://localhost/graph",
|
||||
"inhibited": false,
|
||||
"silenced": 2
|
||||
"silenced": "2"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
{
|
||||
"status": "success",
|
||||
"data": {
|
||||
"silences": [
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"id": "1",
|
||||
"matchers": [
|
||||
{
|
||||
"name": "instance",
|
||||
@@ -18,7 +17,7 @@
|
||||
"comment": "Silenced instance"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"id": "2",
|
||||
"matchers": [
|
||||
{
|
||||
"name": "alertname",
|
||||
@@ -38,6 +37,5 @@
|
||||
"comment": "Silenced Host_Down alerts in the dev cluster"
|
||||
}
|
||||
],
|
||||
"totalSilences": 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ type AlertmanagerAlert struct {
|
||||
EndsAt time.Time `json:"endsAt"`
|
||||
GeneratorURL string `json:"generatorURL"`
|
||||
Inhibited bool `json:"inhibited"`
|
||||
Silenced int `json:"silenced"`
|
||||
Silenced string `json:"silenced"`
|
||||
}
|
||||
|
||||
// AlertmanagerAlertGroup is vanilla group object from Alertmanager, exposed under api/v1/alerts/groups
|
||||
@@ -23,7 +23,7 @@ type AlertmanagerAlertGroup struct {
|
||||
|
||||
// AlertmanagerSilence is vanilla silence object from Alertmanager, exposed under api/v1/silences
|
||||
type AlertmanagerSilence struct {
|
||||
ID int `json:"id"`
|
||||
ID string `json:"id"`
|
||||
Matchers []struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
|
||||
7
timer.go
7
timer.go
@@ -6,7 +6,6 @@ import (
|
||||
"io"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/cloudflare/unsee/alertmanager"
|
||||
@@ -48,9 +47,9 @@ func PullFromAlertmanager() {
|
||||
}
|
||||
|
||||
silenceStore := make(map[string]models.UnseeSilence)
|
||||
for _, silence := range silenceResponse.Data.Silences {
|
||||
for _, silence := range silenceResponse.Data {
|
||||
jiraID, jiraLink := transform.DetectJIRAs(&silence)
|
||||
silenceStore[strconv.Itoa(silence.ID)] = models.UnseeSilence{
|
||||
silenceStore[silence.ID] = models.UnseeSilence{
|
||||
AlertmanagerSilence: silence,
|
||||
JiraID: jiraID,
|
||||
JiraURL: jiraLink,
|
||||
@@ -116,7 +115,7 @@ func PullFromAlertmanager() {
|
||||
|
||||
for _, alert := range alerts {
|
||||
ag.Alerts = append(ag.Alerts, alert)
|
||||
if alert.Silenced > 0 {
|
||||
if alert.Silenced != "" {
|
||||
counterAlertsSilenced++
|
||||
} else {
|
||||
counterAlertsUnsilenced++
|
||||
|
||||
7
views.go
7
views.go
@@ -7,7 +7,6 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -153,9 +152,9 @@ func alerts(c *gin.Context) {
|
||||
}
|
||||
io.WriteString(h, string(aj))
|
||||
|
||||
if alert.Silenced > 0 {
|
||||
if silence, found := store.SilenceStore.Store[strconv.Itoa(alert.Silenced)]; found {
|
||||
silences[strconv.Itoa(alert.Silenced)] = silence
|
||||
if alert.Silenced != "" {
|
||||
if silence, found := store.SilenceStore.Store[alert.Silenced]; found {
|
||||
silences[alert.Silenced] = silence
|
||||
}
|
||||
agCopy.SilencedCount++
|
||||
countLabel(counters, "@silenced", "true")
|
||||
|
||||
@@ -64,10 +64,9 @@ func mockAlerts() {
|
||||
|
||||
silences := `{
|
||||
"status": "success",
|
||||
"data": {
|
||||
"silences": [
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"id": "1",
|
||||
"matchers": [
|
||||
{
|
||||
"name": "alertname",
|
||||
@@ -81,9 +80,7 @@ func mockAlerts() {
|
||||
"createdBy": "john@localhost",
|
||||
"comment": "JIRA-3273"
|
||||
}
|
||||
],
|
||||
"totalSilences": 1100
|
||||
}
|
||||
]
|
||||
}`
|
||||
httpmock.RegisterResponder("GET", "http://localhost/api/v1/silences?limit=4294967295", httpmock.NewStringResponder(200, silences))
|
||||
|
||||
@@ -119,7 +116,7 @@ func mockAlerts() {
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"generatorURL": "https://localhost/prometheus",
|
||||
"inhibited": false,
|
||||
"silenced": 1
|
||||
"silenced": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user