mirror of
https://github.com/prometheus/alertmanager
synced 2025-03-06 11:47:34 +00:00
Implement in-memory silences provider
This commit is contained in:
parent
e10ae037d0
commit
0597c1757b
10
main.go
10
main.go
@ -35,6 +35,7 @@ func main() {
|
||||
}
|
||||
|
||||
memAlerts := provider.NewMemAlerts()
|
||||
memSilences := provider.NewMemSilences()
|
||||
|
||||
inhibitor := &Inhibitor{alerts: memAlerts}
|
||||
inhibitor.ApplyConfig(conf)
|
||||
@ -48,11 +49,10 @@ func main() {
|
||||
Notifier: notifier,
|
||||
silencer: inhibitor,
|
||||
}
|
||||
// TODO(fabxc)
|
||||
// notifier = &mutingNotifier{
|
||||
// Notifier: notifier,
|
||||
// silencer: provider.Silences
|
||||
// }
|
||||
notifier = &mutingNotifier{
|
||||
Notifier: notifier,
|
||||
silencer: memSilences,
|
||||
}
|
||||
|
||||
disp := NewDispatcher(memAlerts, notifier)
|
||||
|
||||
|
@ -119,3 +119,57 @@ func (a *MemAlerts) Get(fp model.Fingerprint) (*types.Alert, error) {
|
||||
}
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
type MemSilences struct {
|
||||
mtx sync.RWMutex
|
||||
silences map[model.Fingerprint]*types.Silence
|
||||
}
|
||||
|
||||
func NewMemSilences() *MemSilences {
|
||||
return &MemSilences{
|
||||
silences: map[model.Fingerprint]*types.Silence{},
|
||||
}
|
||||
}
|
||||
|
||||
func (s *MemSilences) Mutes(lset model.LabelSet) bool {
|
||||
s.mtx.RLock()
|
||||
defer s.mtx.RUnlock()
|
||||
|
||||
for _, sil := range s.silences {
|
||||
if sil.Mutes(lset) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *MemSilences) All() ([]*types.Silence, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (s *MemSilences) Set(sil *types.Silence) error {
|
||||
s.mtx.Lock()
|
||||
defer s.mtx.Unlock()
|
||||
|
||||
s.silences[sil.ID] = sil
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *MemSilences) Del(id model.Fingerprint) error {
|
||||
s.mtx.Lock()
|
||||
defer s.mtx.Unlock()
|
||||
|
||||
delete(s.silences, id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *MemSilences) Get(id model.Fingerprint) (*types.Silence, error) {
|
||||
s.mtx.RLock()
|
||||
defer s.mtx.RUnlock()
|
||||
|
||||
sil, ok := s.silences[id]
|
||||
if !ok {
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return sil, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user