mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Alerting: Send alerts to external Alertmanager(s) Within this PR we're adding support for registering or unregistering sending to a set of external alertmanagers. A few of the things that are going are: - Introduce a new table to hold "admin" (either org or global) configuration we can change at runtime. - A new periodic check that polls for this configuration and adjusts the "senders" accordingly. - Introduces a new concept of "senders" that are responsible for shipping the alerts to the external Alertmanager(s). In a nutshell, this is the Prometheus notifier (the one in charge of sending the alert) mapped to a multi-tenant map. There are a few code movements here and there but those are minor, I tried to keep things intact as much as possible so that we could have an easier diff.
25 lines
555 B
Go
25 lines
555 B
Go
package models
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"fmt"
|
|
)
|
|
|
|
// AdminConfiguration represents the ngalert administration configuration settings.
|
|
type AdminConfiguration struct {
|
|
ID int64 `xorm:"pk autoincr 'id'"`
|
|
OrgID int64 `xorm:"org_id"`
|
|
|
|
// List of Alertmanager(s) URL to push alerts to.
|
|
Alertmanagers []string
|
|
|
|
CreatedAt int64 `xorm:"created"`
|
|
UpdatedAt int64 `xorm:"updated"`
|
|
}
|
|
|
|
func (ac *AdminConfiguration) AsSHA256() string {
|
|
h := sha256.New()
|
|
_, _ = h.Write([]byte(fmt.Sprintf("%v", ac.Alertmanagers)))
|
|
return fmt.Sprintf("%x", h.Sum(nil))
|
|
}
|