Documentation
¶
Index ¶
- Constants
- func NewNotifier(configs []*pb.NotificationConfig, amURL string) *notifier
- type AggregationRule
- type AggregationRules
- type Alert
- type AlertAggregate
- type AlertAggregates
- type AlertFingerprint
- type AlertLabelSet
- type AlertLabelSets
- type AlertManager
- type AlertPayload
- type Alerts
- type ApiSilence
- type Filter
- type Filters
- type InhibitRule
- type InhibitRules
- type Inhibitor
- type IsSilencedInterrogator
- type MemoryAlertManagerOptions
- type Notifier
- type Silence
- type SilenceID
- type Silencer
- func (s *Silencer) AddSilence(sc *Silence) SilenceID
- func (s *Silencer) Close()
- func (s *Silencer) DelSilence(id SilenceID) error
- func (s *Silencer) Filter(l AlertLabelSets) AlertLabelSets
- func (s *Silencer) GetSilence(id SilenceID) (*Silence, error)
- func (s *Silencer) HasChanged() bool
- func (s *Silencer) IsSilenced(l AlertLabelSet) (bool, *Silence)
- func (s *Silencer) LoadFromFile(fileName string) error
- func (s *Silencer) SaveToFile(fileName string) error
- func (s *Silencer) SilenceSummary() Silences
- func (s *Silencer) UpdateSilence(sc *Silence) error
- type Silences
Constants ¶
const AlertNameLabel = "alertname"
Variables ¶
This section is empty.
Functions ¶
func NewNotifier ¶
func NewNotifier(configs []*pb.NotificationConfig, amURL string) *notifier
NewNotifier construct a new notifier.
Types ¶
type AggregationRule ¶
type AggregationRule struct {
Filters Filters
RepeatRate time.Duration
NotificationConfigName string
}
AggregationRule creates and manages the scope for received events.
func (*AggregationRule) Handles ¶
func (r *AggregationRule) Handles(l *Alert) bool
Returns whether a given AggregationRule matches an Alert.
type AggregationRules ¶
type AggregationRules []*AggregationRule
type Alert ¶
type Alert struct {
// Short summary of alert.
Summary string `json:"summary"`
// Long description of alert.
Description string `json:"description"`
// Runbook link or reference for the alert.
Runbook string `json:"runbook"`
// Label value pairs for purpose of aggregation, matching, and disposition
// dispatching. This must minimally include an "alertname" label.
Labels AlertLabelSet `json:"labels"`
// Extra key/value information which is not used for aggregation.
Payload AlertPayload `json:"payload"`
}
Alert models an action triggered by Prometheus.
func (*Alert) Fingerprint ¶
func (a *Alert) Fingerprint() AlertFingerprint
type AlertAggregate ¶
type AlertAggregate struct {
Alert *Alert
Rule *AggregationRule
// When was this AggregationInstance created?
Created time.Time
// When was the last refresh received into this AlertAggregate?
LastRefreshed time.Time
// When was the last notification sent out for this AlertAggregate?
LastNotification time.Time
// When should the next notification be sent according to the current Rule's
// RepeatRate?
NextNotification time.Time
}
An AlertAggregate tracks the latest alert received for a given alert fingerprint and some metadata about the alert.
func (*AlertAggregate) Ingest ¶
func (agg *AlertAggregate) Ingest(a *Alert)
Ingests a received Alert into this AlertAggregate and updates metadata.
type AlertAggregates ¶
type AlertAggregates []*AlertAggregate
func (AlertAggregates) Len ¶
func (aggs AlertAggregates) Len() int
Methods implementing heap.Interface.
func (*AlertAggregates) Pop ¶
func (aggs *AlertAggregates) Pop() interface{}
func (*AlertAggregates) Push ¶
func (aggs *AlertAggregates) Push(agg interface{})
func (AlertAggregates) Swap ¶
func (aggs AlertAggregates) Swap(i, j int)
type AlertFingerprint ¶
type AlertFingerprint uint64
func (AlertFingerprint) String ¶
func (fp AlertFingerprint) String() string
type AlertLabelSet ¶
func (AlertLabelSet) Equal ¶
func (l AlertLabelSet) Equal(o AlertLabelSet) bool
func (AlertLabelSet) Fingerprint ¶
func (l AlertLabelSet) Fingerprint() AlertFingerprint
func (AlertLabelSet) MatchOnLabels ¶
func (l AlertLabelSet) MatchOnLabels(o AlertLabelSet, labels []string) bool
type AlertLabelSets ¶
type AlertLabelSets []AlertLabelSet
type AlertManager ¶
type AlertManager interface {
// Ingests a new alert entry into the store. If an alert with the same
// fingerprint already exists, it only updates the existing entry's metadata.
Receive(Alerts)
// Retrieves all alerts from the store that match the provided Filters.
GetAll(Filters) AlertAggregates
// Sets the AggregationRules to associate with alerts.
SetAggregationRules(AggregationRules)
// Runs the AlertManager dispatcher loop.
Run()
}
AlertManager stores Alerts and removes them upon expiry.
func NewMemoryAlertManager ¶
func NewMemoryAlertManager(o *MemoryAlertManagerOptions) AlertManager
Constructs a new memoryAlertManager.
type AlertPayload ¶
type ApiSilence ¶
type Filter ¶
type Filter struct {
Name *regexp.Regexp
Value *regexp.Regexp
NamePattern string
ValuePattern string
// contains filtered or unexported fields
}
func (*Filter) Handles ¶
func (f *Filter) Handles(l AlertLabelSet) bool
type Filters ¶
type Filters []*Filter
func (Filters) Filter ¶
func (f Filters) Filter(l AlertLabelSets) AlertLabelSets
func (Filters) Handles ¶
func (f Filters) Handles(l AlertLabelSet) bool
type InhibitRule ¶
func (*InhibitRule) Filter ¶
func (i *InhibitRule) Filter(s AlertLabelSets, t AlertLabelSets) AlertLabelSets
Returns those target AlertLabelSets which are not inhibited by any of the source AlertLabelSets.
type InhibitRules ¶
type InhibitRules []*InhibitRule
type Inhibitor ¶
type Inhibitor struct {
// contains filtered or unexported fields
}
Inhibitor calculates inhibition rules between its labelset inputs and only emits uninhibited alert labelsets.
func (*Inhibitor) Filter ¶
func (i *Inhibitor) Filter(l AlertLabelSets) AlertLabelSets
Returns those AlertLabelSets which are not inhibited by any other AlertLabelSet in the provided list.
func (*Inhibitor) HasChanged ¶
Returns whether inhibits have changed since the last call to HasChanged.
func (*Inhibitor) IsInhibited ¶
func (i *Inhibitor) IsInhibited(t AlertLabelSet, l AlertLabelSets) bool
Returns whether a given AlertLabelSet is inhibited by a group of other AlertLabelSets.
func (*Inhibitor) SetInhibitRules ¶
func (i *Inhibitor) SetInhibitRules(r InhibitRules)
Replaces the current InhibitRules with a new set.
type IsSilencedInterrogator ¶
type IsSilencedInterrogator interface {
IsSilenced(AlertLabelSet) (bool, *Silence)
}
type MemoryAlertManagerOptions ¶
type MemoryAlertManagerOptions struct {
// Inhibitor for filtering out inhibited alerts.
Inhibitor *Inhibitor
// Silencer for filtering out silenced alerts.
Silencer *Silencer
// Notifier for dispatching notifications.
Notifier Notifier
// The minimum interval for alert refreshes before being purged.
MinRefreshInterval time.Duration
}
Options for constructing a memoryAlertManager.
type Notifier ¶
type Notifier interface {
// Queue a notification for asynchronous dispatching.
QueueNotification(a *Alert, op notificationOp, configName string) error
// Replace current notification configs. Already enqueued messages will remain
// unaffected.
SetNotificationConfigs([]*pb.NotificationConfig)
// Start alert notification dispatch loop.
Dispatch()
// Stop the alert notification dispatch loop.
Close()
}
A Notifier is responsible for sending notifications for alerts according to a provided notification configuration.
type Silence ¶
type Silence struct {
// The numeric ID of the silence.
ID SilenceID
// Name/email of the silence creator.
CreatedBy string
// When the silence was first created (Unix timestamp).
CreatedAt time.Time
// When the silence expires (Unix timestamp).
EndsAt time.Time
// Additional comment about the silence.
Comment string
// Filters that determine which alerts are silenced.
Filters Filters
// contains filtered or unexported fields
}
func (*Silence) MarshalJSON ¶
func (Silence) Matches ¶
func (s Silence) Matches(l AlertLabelSet) bool
func (*Silence) UnmarshalJSON ¶
type Silencer ¶
type Silencer struct {
// Silences managed by this Silencer.
Silences map[SilenceID]*Silence
// contains filtered or unexported fields
}
func NewSilencer ¶
func NewSilencer() *Silencer
func (*Silencer) AddSilence ¶
func (*Silencer) DelSilence ¶
func (*Silencer) Filter ¶
func (s *Silencer) Filter(l AlertLabelSets) AlertLabelSets
Returns only those AlertLabelSets which are not matched by any silence.
func (*Silencer) HasChanged ¶
Returns whether silences have been added/updated/removed since the last call to HasChanged.
func (*Silencer) IsSilenced ¶
func (s *Silencer) IsSilenced(l AlertLabelSet) (bool, *Silence)
func (*Silencer) LoadFromFile ¶
Loads a JSON representation of silences from a file.
func (*Silencer) SaveToFile ¶
Saves a JSON representation of silences to a file.