sender

package
v0.0.0-...-fb7f86c Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2023 License: AGPL-3.0 Imports: 43 Imported by: 0

Documentation

Overview

nolint

nolint

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AlertmanagerFromGroup

func AlertmanagerFromGroup(tg *targetgroup.Group, cfg *config.AlertmanagerConfig) ([]alertmanager, []alertmanager, error)

AlertmanagerFromGroup extracts a list of alertmanagers from a target group and an associated AlertmanagerConfig.

Types

type Alert

type Alert struct {
	// Label value pairs for purpose of aggregation, matching, and disposition
	// dispatching. This must minimally include an "alertname" label.
	Labels labels.Labels `json:"labels"`

	// Extra key/value information which does not define alert identity.
	Annotations labels.Labels `json:"annotations"`

	// The known time range for this alert. Both ends are optional.
	StartsAt     time.Time `json:"startsAt,omitempty"`
	EndsAt       time.Time `json:"endsAt,omitempty"`
	GeneratorURL string    `json:"generatorURL,omitempty"`
}

Alert is a generic representation of an alert in the Prometheus eco-system.

func (*Alert) Hash

func (a *Alert) Hash() uint64

Hash returns a hash over the alert. It is equivalent to the alert labels hash.

func (*Alert) Name

func (a *Alert) Name() string

Name returns the name of the alert. It is equivalent to the "alertname" label.

func (*Alert) Resolved

func (a *Alert) Resolved() bool

Resolved returns true iff the activity interval ended in the past.

func (*Alert) ResolvedAt

func (a *Alert) ResolvedAt(ts time.Time) bool

ResolvedAt returns true iff the activity interval ended before the given timestamp.

func (*Alert) String

func (a *Alert) String() string

type AlertsRouter

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

AlertsRouter handles alerts generated during alert rule evaluation. Based on rule's orgID and the configuration for that organization, it determines whether an alert needs to be sent to an external Alertmanager and\or internal notifier.Alertmanager

After creating a AlertsRouter, you must call Run to keep the AlertsRouter's state synchronized with the alerting configuration.

func NewAlertsRouter

func NewAlertsRouter(multiOrgNotifier *notifier.MultiOrgAlertmanager, store store.AdminConfigurationStore,
	clk clock.Clock, appURL *url.URL, disabledOrgs map[int64]struct{}, configPollInterval time.Duration,
	datasourceService datasources.DataSourceService, secretService secrets.Service) *AlertsRouter

func (*AlertsRouter) AlertmanagersFor

func (d *AlertsRouter) AlertmanagersFor(orgID int64) []*url.URL

AlertmanagersFor returns all the discovered Alertmanager(s) for a particular organization.

func (*AlertsRouter) DroppedAlertmanagersFor

func (d *AlertsRouter) DroppedAlertmanagersFor(orgID int64) []*url.URL

DroppedAlertmanagersFor returns all the dropped Alertmanager(s) for a particular organization.

func (*AlertsRouter) Run

func (d *AlertsRouter) Run(ctx context.Context) error

Run starts regular updates of the configuration.

func (*AlertsRouter) Send

func (*AlertsRouter) SyncAndApplyConfigFromDatabase

func (d *AlertsRouter) SyncAndApplyConfigFromDatabase() error

SyncAndApplyConfigFromDatabase looks for the admin configuration in the database and adjusts the sender(s) and alert handling mechanism accordingly.

type ExternalAlertmanager

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

ExternalAlertmanager is responsible for dispatching alert notifications to an external Alertmanager service.

func NewExternalAlertmanagerSender

func NewExternalAlertmanagerSender() *ExternalAlertmanager

func (*ExternalAlertmanager) Alertmanagers

func (s *ExternalAlertmanager) Alertmanagers() []*url.URL

Alertmanagers returns a list of the discovered Alertmanager(s).

func (*ExternalAlertmanager) ApplyConfig

func (s *ExternalAlertmanager) ApplyConfig(orgId, id int64, alertmanagers []externalAMcfg) error

ApplyConfig syncs a configuration with the sender.

func (*ExternalAlertmanager) DroppedAlertmanagers

func (s *ExternalAlertmanager) DroppedAlertmanagers() []*url.URL

DroppedAlertmanagers returns a list of Alertmanager(s) we no longer send alerts to.

func (*ExternalAlertmanager) Run

func (s *ExternalAlertmanager) Run()

func (*ExternalAlertmanager) SendAlerts

func (s *ExternalAlertmanager) SendAlerts(alerts apimodels.PostableAlerts)

SendAlerts sends a set of alerts to the configured Alertmanager(s).

func (*ExternalAlertmanager) Stop

func (s *ExternalAlertmanager) Stop()

Stop shuts down the sender.

type FakeExternalAlertmanager

type FakeExternalAlertmanager struct {
	Server *httptest.Server
	// contains filtered or unexported fields
}

func NewFakeExternalAlertmanager

func NewFakeExternalAlertmanager(t *testing.T) *FakeExternalAlertmanager

func (*FakeExternalAlertmanager) AlertNamesCompare

func (am *FakeExternalAlertmanager) AlertNamesCompare(expected []string) bool

func (*FakeExternalAlertmanager) Alerts

func (*FakeExternalAlertmanager) AlertsCount

func (am *FakeExternalAlertmanager) AlertsCount() int

func (*FakeExternalAlertmanager) Close

func (am *FakeExternalAlertmanager) Close()

func (*FakeExternalAlertmanager) Handler

func (am *FakeExternalAlertmanager) Handler() func(w http.ResponseWriter, r *http.Request)

func (*FakeExternalAlertmanager) URL

func (am *FakeExternalAlertmanager) URL() string

type Manager

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

Manager is responsible for dispatching alert notifications to an alert manager service.

func NewManager

func NewManager(o *Options, logger log.Logger) *Manager

NewManager is the manager constructor.

func (*Manager) Alertmanagers

func (n *Manager) Alertmanagers() []*url.URL

Alertmanagers returns a slice of Alertmanager URLs.

func (*Manager) ApplyConfig

func (n *Manager) ApplyConfig(conf *config.Config, headers map[string]map[string]string) error

ApplyConfig updates the status state as the new config requires. Extension: add new parameter headers.

func (*Manager) DroppedAlertmanagers

func (n *Manager) DroppedAlertmanagers() []*url.URL

DroppedAlertmanagers returns a slice of Alertmanager URLs.

func (*Manager) Run

func (n *Manager) Run(tsets <-chan map[string][]*targetgroup.Group)

Run dispatches notifications continuously.

func (*Manager) Send

func (n *Manager) Send(alerts ...*Alert)

Send queues the given notification requests for processing. Panics if called on a handler that is not running.

func (*Manager) Stop

func (n *Manager) Stop()

Stop shuts down the notification handler.

type Options

type Options struct {
	QueueCapacity  int
	ExternalLabels labels.Labels
	RelabelConfigs []*relabel.Config
	// Used for sending HTTP requests to the Alertmanager.
	Do func(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error)

	Registerer prometheus.Registerer
}

Options are the configurable parameters of a Handler.

Jump to

Keyboard shortcuts

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