notifier

package
v0.0.85-test Latest Latest
Warning

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

Go to latest
Published: May 8, 2023 License: AGPL-3.0 Imports: 50 Imported by: 0

Documentation

Index

Constants

View Source
const KVNamespace = "alertmanager"

Variables

View Source
var (
	ErrGetAlertsInternal        = fmt.Errorf("unable to retrieve alerts(s) due to an internal error")
	ErrGetAlertsUnavailable     = fmt.Errorf("unable to retrieve alerts(s) as alertmanager is not initialised yet")
	ErrGetAlertsBadPayload      = fmt.Errorf("unable to retrieve alerts")
	ErrGetAlertGroupsBadPayload = fmt.Errorf("unable to retrieve alerts groups")
)
View Source
var (
	ErrNoAlertmanagerForOrg = fmt.Errorf("Alertmanager does not exist for this organization")
	ErrAlertmanagerNotReady = fmt.Errorf("Alertmanager is not ready yet")
)
View Source
var (
	ErrGetSilencesInternal     = fmt.Errorf("unable to retrieve silence(s) due to an internal error")
	ErrDeleteSilenceInternal   = fmt.Errorf("unable to delete silence due to an internal error")
	ErrCreateSilenceBadPayload = fmt.Errorf("unable to create silence")
	ErrListSilencesBadPayload  = fmt.Errorf("unable to list silences")
	ErrSilenceNotFound         = silence.ErrNotFound
)
View Source
var (
	ErrNoReceivers = errors.New("no receivers")
)

Functions

func GetAvailableNotifiers

func GetAvailableNotifiers() []*alerting.NotifierPlugin

GetAvailableNotifiers returns the metadata of all the notification channels that can be configured.

func Load

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

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 Alertmanager

type Alertmanager struct {
	Settings *setting.Cfg
	Store    store.AlertingStore

	Metrics             *metrics.Alertmanager
	NotificationService notifications.Service
	// contains filtered or unexported fields
}

func (*Alertmanager) ApplyConfig

func (am *Alertmanager) ApplyConfig(dbCfg *ngmodels.AlertConfiguration) error

ApplyConfig applies the configuration to the Alertmanager.

func (*Alertmanager) CreateSilence

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

CreateSilence persists the provided silence and returns the silence ID if successful.

func (*Alertmanager) DeleteSilence

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

DeleteSilence looks for and expires the silence by the provided silenceID. It returns ErrSilenceNotFound if the silence is not present.

func (*Alertmanager) GetAlertGroups

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

func (*Alertmanager) GetAlerts

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

func (*Alertmanager) GetSilence

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

GetSilence retrieves a silence by the provided silenceID. It returns ErrSilenceNotFound if the silence is not present.

func (*Alertmanager) GetStatus

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

func (*Alertmanager) ListSilences

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

ListSilences retrieves a list of stored silences. It supports a set of labels as filters.

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 the database and applies the configuration to the Alertmanager. It rollbacks 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 ClusterPeer

type ClusterPeer interface {
	AddState(string, cluster.State, prometheus.Registerer) cluster.ClusterChannel
	Position() int
	WaitReady(context.Context) 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 FakeConfigStore

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

func NewFakeConfigStore

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

func (*FakeConfigStore) GetAllLatestAlertmanagerConfiguration

func (f *FakeConfigStore) GetAllLatestAlertmanagerConfiguration(context.Context) ([]*models.AlertConfiguration, error)

func (*FakeConfigStore) GetLatestAlertmanagerConfiguration

func (f *FakeConfigStore) GetLatestAlertmanagerConfiguration(_ context.Context, query *models.GetLatestAlertmanagerConfigurationQuery) error

func (*FakeConfigStore) SaveAlertmanagerConfiguration

func (f *FakeConfigStore) SaveAlertmanagerConfiguration(_ context.Context, cmd *models.SaveAlertmanagerConfigurationCmd) error

func (*FakeConfigStore) SaveAlertmanagerConfigurationWithCallback

func (f *FakeConfigStore) SaveAlertmanagerConfigurationWithCallback(_ context.Context, cmd *models.SaveAlertmanagerConfigurationCmd, callback store.SaveCallback) error

func (*FakeConfigStore) UpdateAlertmanagerConfiguration

func (f *FakeConfigStore) UpdateAlertmanagerConfiguration(_ context.Context, cmd *models.SaveAlertmanagerConfigurationCmd) error

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) 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 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 State

type State interface {
	MarshalBinary() ([]byte, error)
}

State represents any of the two 'states' of the alertmanager. Notification log or Silences. MarshalBinary returns the binary representation of this internal state based on the protobuf.

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