Files
karma/alertmanager/alertmanager.go
Łukasz Mierzwa 3a1f6905e0 Add basic support for Alertmanager 0.6.1
This makes unsee work with 0.6.1, but the new status means that we should refactor unsee data model and pull inhibited and silenced into it, with a single filter
2017-04-28 12:40:04 -07:00

61 lines
1.5 KiB
Go

package alertmanager
import (
"time"
"github.com/cloudflare/unsee/mapper"
"github.com/cloudflare/unsee/mapper/v04"
"github.com/cloudflare/unsee/mapper/v05"
"github.com/cloudflare/unsee/mapper/v061"
"github.com/cloudflare/unsee/models"
log "github.com/Sirupsen/logrus"
)
// initialize all mappers
func init() {
mapper.RegisterAlertMapper(v04.AlertMapper{})
mapper.RegisterAlertMapper(v05.AlertMapper{})
mapper.RegisterAlertMapper(v061.AlertMapper{})
mapper.RegisterSilenceMapper(v04.SilenceMapper{})
mapper.RegisterSilenceMapper(v05.SilenceMapper{})
}
// GetAlerts will send request to Alertmanager and return list of alert groups
// from the API
func GetAlerts(version string) ([]models.AlertGroup, error) {
groups := []models.AlertGroup{}
mapper, err := mapper.GetAlertMapper(version)
if err != nil {
return groups, err
}
start := time.Now()
groups, err = mapper.GetAlerts()
if err != nil {
return groups, err
}
log.Infof("Got %d alert group(s) in %s", len(groups), time.Since(start))
return groups, nil
}
// GetSilences will send request to Alertmanager and return list of silences
// from the API
func GetSilences(version string) ([]models.Silence, error) {
silences := []models.Silence{}
mapper, err := mapper.GetSilenceMapper(version)
if err != nil {
return silences, err
}
start := time.Now()
silences, err = mapper.GetSilences()
if err != nil {
return silences, err
}
log.Infof("Got %d silences(s) in %s", len(silences), time.Since(start))
return silences, nil
}