notifier

package
v0.0.0-cloud Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2023 License: AGPL-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const KVNamespace = "alertmanager"

Variables

View Source
var (
	ErrNoAlertmanagerForOrg = fmt.Errorf("Alertmanager does not exist for this organization")
	ErrAlertmanagerNotReady = fmt.Errorf("Alertmanager is not ready yet")
)
View Source
var (
	ErrNoReceivers = errors.New("no receivers")
)
View Source
var LoggerFactory alertingLogging.LoggerFactory = func(ctx ...interface{}) alertingLogging.Logger {
	return &logWrapper{log.New(ctx...)}
}

Functions

func Load

func Load(rawConfig []byte) (*api.PostableUserConfig, error)

func NewFakeConfigStore

func NewFakeConfigStore(t *testing.T, configs map[int64]*models.AlertConfiguration) *fakeConfigStore

func PersistTemplates

func PersistTemplates(cfg *api.PostableUserConfig, path string) ([]string, bool, error)

Types

type AlertValidationError

type AlertValidationError struct {
	Alerts []amv2.PostableAlert
	Errors []error // Errors[i] refers to Alerts[i].
}

AlertValidationError is the error capturing the validation errors faced on the alerts.

func (AlertValidationError) Error

func (e AlertValidationError) Error() string

type AlertingConfiguration

type AlertingConfiguration struct {
	AlertmanagerConfig    api.PostableApiAlertingConfig
	RawAlertmanagerConfig []byte

	AlertmanagerTemplates *alertingNotify.Template

	IntegrationsFunc         func(receivers []*api.PostableApiReceiver, templates *alertingNotify.Template) (map[string][]*alertingNotify.Integration, error)
	ReceiverIntegrationsFunc func(r *api.PostableGrafanaReceiver, tmpl *alertingNotify.Template) (alertingNotify.NotificationChannel, error)
}

AlertingConfiguration provides configuration for an Alertmanager. It implements the notify.Configuration interface.

func (AlertingConfiguration) BuildReceiverIntegrationsFunc

func (a AlertingConfiguration) BuildReceiverIntegrationsFunc() func(next *alertingNotify.GrafanaReceiver, tmpl *alertingNotify.Template) (alertingNotify.Notifier, error)

func (AlertingConfiguration) DispatcherLimits

func (AlertingConfiguration) Hash

func (a AlertingConfiguration) Hash() [16]byte

func (AlertingConfiguration) InhibitRules

func (AlertingConfiguration) MuteTimeIntervals

func (a AlertingConfiguration) MuteTimeIntervals() []alertingNotify.MuteTimeInterval

func (AlertingConfiguration) Raw

func (a AlertingConfiguration) Raw() []byte

func (AlertingConfiguration) ReceiverIntegrations

func (a AlertingConfiguration) ReceiverIntegrations() (map[string][]*alertingNotify.Integration, error)

func (AlertingConfiguration) RoutingTree

func (a AlertingConfiguration) RoutingTree() *alertingNotify.Route

func (AlertingConfiguration) Templates

type AlertingStore

type AlertingStore interface {
	store.AlertingStore
	store.ImageStore
}

type Alertmanager

type Alertmanager struct {
	Base *alertingNotify.GrafanaAlertmanager

	Settings *setting.Cfg
	Store    AlertingStore

	NotificationService notifications.Service
	// contains filtered or unexported fields
}

func (*Alertmanager) ApplyConfig

func (am *Alertmanager) ApplyConfig(ctx context.Context, dbCfg *ngmodels.AlertConfiguration) error

ApplyConfig applies the configuration to the Alertmanager.

func (*Alertmanager) CreateSilence

func (am *Alertmanager) CreateSilence(ps *alertingNotify.PostableSilence) (string, error)

func (*Alertmanager) DeleteSilence

func (am *Alertmanager) DeleteSilence(silenceID string) error

func (*Alertmanager) GetAlertGroups

func (am *Alertmanager) GetAlertGroups(active, silenced, inhibited bool, filter []string, receivers string) (alertingNotify.AlertGroups, error)

func (*Alertmanager) GetAlerts

func (am *Alertmanager) GetAlerts(active, silenced, inhibited bool, filter []string, receivers string) (alertingNotify.GettableAlerts, error)

func (*Alertmanager) GetReceivers

func (am *Alertmanager) GetReceivers(_ context.Context) []apimodels.Receiver

func (*Alertmanager) GetSilence

func (am *Alertmanager) GetSilence(silenceID string) (alertingNotify.GettableSilence, error)

func (*Alertmanager) GetStatus

func (am *Alertmanager) GetStatus() apimodels.GettableStatus

TODO: We no longer do apimodels at this layer, move it to the API.

func (*Alertmanager) ListSilences

func (am *Alertmanager) ListSilences(filter []string) (alertingNotify.GettableSilences, error)

func (*Alertmanager) PutAlerts

func (am *Alertmanager) PutAlerts(postableAlerts apimodels.PostableAlerts) error

PutAlerts receives the alerts and then sends them through the corresponding route based on whenever the alert has a receiver embedded or not

func (*Alertmanager) Ready

func (am *Alertmanager) Ready() bool

func (*Alertmanager) SaveAndApplyConfig

func (am *Alertmanager) SaveAndApplyConfig(ctx context.Context, cfg *apimodels.PostableUserConfig) error

SaveAndApplyConfig saves the configuration the database and applies the configuration to the Alertmanager. It rollbacks the save if we fail to apply the configuration.

func (*Alertmanager) SaveAndApplyDefaultConfig

func (am *Alertmanager) SaveAndApplyDefaultConfig(ctx context.Context) error

SaveAndApplyDefaultConfig saves the default configuration to the database and applies it to the Alertmanager. It rolls back the save if we fail to apply the configuration.

func (*Alertmanager) StopAndWait

func (am *Alertmanager) StopAndWait()

func (*Alertmanager) WorkingDirPath

func (am *Alertmanager) WorkingDirPath() string

type AlertmanagerConfigRejectedError

type AlertmanagerConfigRejectedError struct {
	Inner error
}

func (AlertmanagerConfigRejectedError) Error

type Crypto

type Crypto interface {
	LoadSecureSettings(ctx context.Context, orgId int64, receivers []*definitions.PostableApiReceiver) error
	Encrypt(ctx context.Context, payload []byte, opt secrets.EncryptionOptions) ([]byte, error)
	// contains filtered or unexported methods
}

Crypto allows decryption of Alertmanager Configuration and encryption of arbitrary payloads.

func NewCrypto

func NewCrypto(secrets secrets.Service, configs configurationStore, log log.Logger) Crypto

type FakeKVStore

type FakeKVStore struct {
	// contains filtered or unexported fields
}

func NewFakeKVStore

func NewFakeKVStore(t *testing.T) *FakeKVStore

func (*FakeKVStore) Del

func (fkv *FakeKVStore) Del(_ context.Context, orgId int64, namespace string, key string) error

func (*FakeKVStore) Get

func (fkv *FakeKVStore) Get(_ context.Context, orgId int64, namespace string, key string) (string, bool, error)

func (*FakeKVStore) GetAll

func (fkv *FakeKVStore) GetAll(ctx context.Context, orgId int64, namespace string) (map[int64]map[string]string, error)

func (*FakeKVStore) Keys

func (fkv *FakeKVStore) Keys(ctx context.Context, orgID int64, namespace string, keyPrefix string) ([]kvstore.Key, error)

func (*FakeKVStore) Set

func (fkv *FakeKVStore) Set(_ context.Context, orgId int64, namespace string, key string, value string) error

type FakeOrgStore

type FakeOrgStore struct {
	// contains filtered or unexported fields
}

func NewFakeOrgStore

func NewFakeOrgStore(t *testing.T, orgs []int64) FakeOrgStore

func (*FakeOrgStore) GetOrgs

func (f *FakeOrgStore) GetOrgs(_ context.Context) ([]int64, error)

type FileStore

type FileStore struct {
	// contains filtered or unexported fields
}

FileStore is in charge of persisting the alertmanager files to the database. It uses the KVstore table and encodes the files as a base64 string.

func NewFileStore

func NewFileStore(orgID int64, store kvstore.KVStore, workingDirPath string) *FileStore

func (*FileStore) CleanUp

func (fileStore *FileStore) CleanUp()

CleanUp will remove the working directory from disk.

func (*FileStore) FilepathFor

func (fileStore *FileStore) FilepathFor(ctx context.Context, filename string) (string, error)

FilepathFor returns the filepath to an Alertmanager file. If the file is already present on disk it no-ops. If not, it tries to read the database and if there's no file it no-ops. If there is a file in the database, it decodes it and writes to disk for Alertmanager consumption.

func (*FileStore) Persist

func (fileStore *FileStore) Persist(ctx context.Context, filename string, st alertingNotify.State) (int64, error)

Persist takes care of persisting the binary representation of internal state to the database as a base64 encoded string.

func (*FileStore) WriteFileToDisk

func (fileStore *FileStore) WriteFileToDisk(fn string, content []byte) error

WriteFileToDisk writes a file with the provided name and contents to the Alertmanager working directory with the default grafana permission.

type InvalidReceiverError

type InvalidReceiverError struct {
	Receiver *apimodels.PostableGrafanaReceiver
	Err      error
}

func (InvalidReceiverError) Error

func (e InvalidReceiverError) Error() string

type MultiOrgAlertmanager

type MultiOrgAlertmanager struct {
	Crypto    Crypto
	ProvStore provisioning.ProvisioningStore
	// contains filtered or unexported fields
}

func (*MultiOrgAlertmanager) AlertmanagerFor

func (moa *MultiOrgAlertmanager) AlertmanagerFor(orgID int64) (*Alertmanager, error)

AlertmanagerFor returns the Alertmanager instance for the organization provided. When the organization does not have an active Alertmanager, it returns a ErrNoAlertmanagerForOrg. When the Alertmanager of the organization is not ready, it returns a ErrAlertmanagerNotReady.

func (*MultiOrgAlertmanager) ApplyAlertmanagerConfiguration

func (moa *MultiOrgAlertmanager) ApplyAlertmanagerConfiguration(ctx context.Context, org int64, config definitions.PostableUserConfig) error

func (*MultiOrgAlertmanager) GetAlertmanagerConfiguration

func (moa *MultiOrgAlertmanager) GetAlertmanagerConfiguration(ctx context.Context, org int64) (definitions.GettableUserConfig, error)

func (*MultiOrgAlertmanager) LoadAndSyncAlertmanagersForOrgs

func (moa *MultiOrgAlertmanager) LoadAndSyncAlertmanagersForOrgs(ctx context.Context) error

func (*MultiOrgAlertmanager) Run

func (moa *MultiOrgAlertmanager) Run(ctx context.Context) error

func (*MultiOrgAlertmanager) StopAndWait

func (moa *MultiOrgAlertmanager) StopAndWait()

func (*MultiOrgAlertmanager) SyncAlertmanagersForOrgs

func (moa *MultiOrgAlertmanager) SyncAlertmanagersForOrgs(ctx context.Context, orgIDs []int64)

SyncAlertmanagersForOrgs syncs configuration of the Alertmanager required by each organization.

type NilChannel

type NilChannel struct{}

func (*NilChannel) Broadcast

func (c *NilChannel) Broadcast([]byte)

type NilPeer

type NilPeer struct{}

NilPeer and NilChannel implements the Alertmanager clustering interface.

func (*NilPeer) Position

func (p *NilPeer) Position() int

func (*NilPeer) WaitReady

func (p *NilPeer) WaitReady(context.Context) error

type ReceiverTimeoutError

type ReceiverTimeoutError struct {
	Receiver *apimodels.PostableGrafanaReceiver
	Err      error
}

func (ReceiverTimeoutError) Error

func (e ReceiverTimeoutError) Error() string

type TestReceiverConfigResult

type TestReceiverConfigResult struct {
	Name   string
	UID    string
	Status string
	Error  error
}

type TestReceiverResult

type TestReceiverResult struct {
	Name    string
	Configs []TestReceiverConfigResult
}

type TestReceiversResult

type TestReceiversResult struct {
	Alert     types.Alert
	Receivers []TestReceiverResult
	NotifedAt time.Time
}

type UnknownReceiverError

type UnknownReceiverError struct {
	UID string
}

func (UnknownReceiverError) Error

func (e UnknownReceiverError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL