Documentation ¶
Index ¶
- Constants
- Variables
- func ActiveTimeIntervalNames(ctx context.Context) ([]string, bool)
- func Drain(r *http.Response)
- func FiringAlerts(ctx context.Context) ([]uint64, bool)
- func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error)
- func GetTemplateData(ctx context.Context, tmpl *template.Template, alerts []*types.Alert, ...) *template.Data
- func GroupKey(ctx context.Context) (string, bool)
- func GroupLabels(ctx context.Context) (model.LabelSet, bool)
- func MuteTimeIntervalNames(ctx context.Context) ([]string, bool)
- func Now(ctx context.Context) (time.Time, bool)
- func PostJSON(ctx context.Context, client *http.Client, url string, body io.Reader) (*http.Response, error)
- func PostText(ctx context.Context, client *http.Client, url string, body io.Reader) (*http.Response, error)
- func ReceiverName(ctx context.Context) (string, bool)
- func RedactURL(err error) error
- func RepeatInterval(ctx context.Context) (time.Duration, bool)
- func ResolvedAlerts(ctx context.Context) ([]uint64, bool)
- func RouteID(ctx context.Context) (string, bool)
- func TmplHTML(tmpl *template.Template, data *template.Data, err *error) func(string) string
- func TmplText(tmpl *template.Template, data *template.Data, err *error) func(string) string
- func TruncateInBytes(s string, n int) (string, bool)
- func TruncateInRunes(s string, n int) (string, bool)
- func WithActiveTimeIntervals(ctx context.Context, at []string) context.Context
- func WithFiringAlerts(ctx context.Context, alerts []uint64) context.Context
- func WithGroupKey(ctx context.Context, s string) context.Context
- func WithGroupLabels(ctx context.Context, lset model.LabelSet) context.Context
- func WithMuteTimeIntervals(ctx context.Context, mt []string) context.Context
- func WithNow(ctx context.Context, t time.Time) context.Context
- func WithReceiverName(ctx context.Context, rcv string) context.Context
- func WithRepeatInterval(ctx context.Context, t time.Duration) context.Context
- func WithResolvedAlerts(ctx context.Context, alerts []uint64) context.Context
- func WithRouteID(ctx context.Context, routeID string) context.Context
- type DedupStage
- type ErrorWithReason
- type FanoutStage
- type GossipSettleStage
- type Integration
- type Key
- type Metrics
- type MultiStage
- type MuteStage
- type NotificationLog
- type Notifier
- type Peer
- type PipelineBuilder
- type Reason
- type ResolvedSender
- type Retrier
- type RetryStage
- type RoutingStage
- type SetNotifiesStage
- type Stage
- type StageFunc
- type TimeActiveStage
- type TimeMuteStage
- type WaitStage
Constants ¶
const ( SuppressedReasonSilence = "silence" SuppressedReasonInhibition = "inhibition" SuppressedReasonMuteTimeInterval = "mute_time_interval" SuppressedReasonActiveTimeInterval = "active_time_interval" )
const MinTimeout = 10 * time.Second
MinTimeout is the minimum timeout that is set for the context of a call to a notification pipeline.
Variables ¶
var UserAgentHeader = fmt.Sprintf("Alertmanager/%s", version.Version)
UserAgentHeader is the default User-Agent for notification requests.
Functions ¶
func ActiveTimeIntervalNames ¶
ActiveTimeIntervalNames extracts a slice of active time names from the context. If none exists, the second argument is false.
func Drain ¶
Drain consumes and closes the response's body to make sure that the HTTP client can reuse existing connections.
func FiringAlerts ¶
FiringAlerts extracts a slice of firing alerts from the context. Iff none exists, the second argument is false.
func GetTemplateData ¶
func GetTemplateData(ctx context.Context, tmpl *template.Template, alerts []*types.Alert, l log.Logger) *template.Data
GetTemplateData creates the template data from the context and the alerts.
func GroupKey ¶
GroupKey extracts a group key from the context. Iff none exists, the second argument is false.
func GroupLabels ¶
GroupLabels extracts grouping label set from the context. Iff none exists, the second argument is false.
func MuteTimeIntervalNames ¶
MuteTimeIntervalNames extracts a slice of mute time names from the context. If and only if none exists, the second argument is false.
func Now ¶
Now extracts a now timestamp from the context. Iff none exists, the second argument is false.
func PostJSON ¶
func PostJSON(ctx context.Context, client *http.Client, url string, body io.Reader) (*http.Response, error)
PostJSON sends a POST request with JSON payload to the given URL.
func PostText ¶
func PostText(ctx context.Context, client *http.Client, url string, body io.Reader) (*http.Response, error)
PostText sends a POST request with text payload to the given URL.
func ReceiverName ¶
ReceiverName extracts a receiver name from the context. Iff none exists, the second argument is false.
func RepeatInterval ¶
RepeatInterval extracts a repeat interval from the context. Iff none exists, the second argument is false.
func ResolvedAlerts ¶
ResolvedAlerts extracts a slice of firing alerts from the context. Iff none exists, the second argument is false.
func RouteID ¶
RouteID extracts a RouteID from the context. Iff none exists, the // second argument is false.
func TmplHTML ¶
TmplHTML is using monadic error handling in order to make string templating less verbose. Use with care as the final error checking is easily missed.
func TmplText ¶
TmplText is using monadic error handling in order to make string templating less verbose. Use with care as the final error checking is easily missed.
func TruncateInBytes ¶
TruncateInBytes truncates a string to fit the given size in Bytes.
func TruncateInRunes ¶
TruncateInRunes truncates a string to fit the given size in Runes.
func WithActiveTimeIntervals ¶
func WithFiringAlerts ¶
WithFiringAlerts populates a context with a slice of firing alerts.
func WithGroupKey ¶
WithGroupKey populates a context with a group key.
func WithGroupLabels ¶
WithGroupLabels populates a context with grouping labels.
func WithMuteTimeIntervals ¶
WithMuteTimeIntervals populates a context with a slice of mute time names.
func WithReceiverName ¶
WithReceiverName populates a context with a receiver name.
func WithRepeatInterval ¶
WithRepeatInterval populates a context with a repeat interval.
func WithResolvedAlerts ¶
WithResolvedAlerts populates a context with a slice of resolved alerts.
Types ¶
type DedupStage ¶
type DedupStage struct {
// contains filtered or unexported fields
}
DedupStage filters alerts. Filtering happens based on a notification log.
func NewDedupStage ¶
func NewDedupStage(rs ResolvedSender, l NotificationLog, recv *nflogpb.Receiver) *DedupStage
NewDedupStage wraps a DedupStage that runs against the given notification log.
type ErrorWithReason ¶
func NewErrorWithReason ¶
func NewErrorWithReason(reason Reason, err error) *ErrorWithReason
func (*ErrorWithReason) Error ¶
func (e *ErrorWithReason) Error() string
type FanoutStage ¶
type FanoutStage []Stage
FanoutStage executes its stages concurrently.
func (FanoutStage) Exec ¶
func (fs FanoutStage) Exec(ctx context.Context, l log.Logger, alerts ...*types.Alert) (context.Context, []*types.Alert, error)
Exec attempts to execute all stages concurrently and discards the results. It returns its input alerts and a types.MultiError if one or more stages fail.
type GossipSettleStage ¶
type GossipSettleStage struct {
// contains filtered or unexported fields
}
GossipSettleStage waits until the Gossip has settled to forward alerts.
func NewGossipSettleStage ¶
func NewGossipSettleStage(p Peer) *GossipSettleStage
NewGossipSettleStage returns a new GossipSettleStage.
type Integration ¶
type Integration struct {
// contains filtered or unexported fields
}
Integration wraps a notifier and its configuration to be uniquely identified by name and index from its origin in the configuration.
func NewIntegration ¶
func NewIntegration(notifier Notifier, rs ResolvedSender, name string, idx int, receiverName string) Integration
NewIntegration returns a new integration.
func (*Integration) Index ¶
func (i *Integration) Index() int
Index returns the index of the integration.
func (*Integration) Name ¶
func (i *Integration) Name() string
Name returns the name of the integration.
func (*Integration) SendResolved ¶
func (i *Integration) SendResolved() bool
SendResolved implements the ResolvedSender interface.
func (*Integration) String ¶
func (i *Integration) String() string
String implements the Stringer interface.
type Key ¶
type Key string
Key is a string that can be hashed.
func ExtractGroupKey ¶
ExtractGroupKey gets the group key from the context.
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
func NewMetrics ¶
func NewMetrics(r prometheus.Registerer, ff featurecontrol.Flagger) *Metrics
func (*Metrics) InitializeFor ¶
func (m *Metrics) InitializeFor(receiver map[string][]Integration)
type MuteStage ¶
type MuteStage struct {
// contains filtered or unexported fields
}
MuteStage filters alerts through a Muter.
func NewMuteStage ¶
NewMuteStage return a new MuteStage.
type NotificationLog ¶
type Notifier ¶
Notifier notifies about alerts under constraints of the given context. It returns an error if unsuccessful and a flag whether the error is recoverable. This information is useful for a retry logic.
type Peer ¶
type Peer interface { // WaitReady waits until the node silences and notifications have settled before attempting to send a notification. WaitReady(context.Context) error }
Peer represents the cluster node from where we are the sending the notification.
type PipelineBuilder ¶
type PipelineBuilder struct {
// contains filtered or unexported fields
}
func NewPipelineBuilder ¶
func NewPipelineBuilder(r prometheus.Registerer, ff featurecontrol.Flagger) *PipelineBuilder
func (*PipelineBuilder) New ¶
func (pb *PipelineBuilder) New( receivers map[string][]Integration, wait func() time.Duration, inhibitor *inhibit.Inhibitor, silencer *silence.Silencer, intervener *timeinterval.Intervener, marker types.GroupMarker, notificationLog NotificationLog, peer Peer, ) RoutingStage
New returns a map of receivers to Stages.
type Reason ¶
type Reason int
Reason is the failure reason.
func GetFailureReasonFromStatusCode ¶
GetFailureReasonFromStatusCode returns the reason for the failure based on the status code provided.
type ResolvedSender ¶
type ResolvedSender interface {
SendResolved() bool
}
ResolvedSender returns true if resolved notifications should be sent.
type Retrier ¶
type Retrier struct { // Function to return additional information in the error message. CustomDetailsFunc func(code int, body io.Reader) string // Additional HTTP status codes that should be retried. RetryCodes []int }
Retrier knows when to retry an HTTP request to a receiver. 2xx status codes are successful, anything else is a failure and only 5xx status codes should be retried.
type RetryStage ¶
type RetryStage struct {
// contains filtered or unexported fields
}
RetryStage notifies via passed integration with exponential backoff until it succeeds. It aborts if the context is canceled or timed out.
func NewRetryStage ¶
func NewRetryStage(i Integration, groupName string, metrics *Metrics) *RetryStage
NewRetryStage returns a new instance of a RetryStage.
type RoutingStage ¶
RoutingStage executes the inner stages based on the receiver specified in the context.
type SetNotifiesStage ¶
type SetNotifiesStage struct {
// contains filtered or unexported fields
}
SetNotifiesStage sets the notification information about passed alerts. The passed alerts should have already been sent to the receivers.
func NewSetNotifiesStage ¶
func NewSetNotifiesStage(l NotificationLog, recv *nflogpb.Receiver) *SetNotifiesStage
NewSetNotifiesStage returns a new instance of a SetNotifiesStage.
type Stage ¶
type Stage interface {
Exec(ctx context.Context, l log.Logger, alerts ...*types.Alert) (context.Context, []*types.Alert, error)
}
A Stage processes alerts under the constraints of the given context.
type StageFunc ¶
type StageFunc func(ctx context.Context, l log.Logger, alerts ...*types.Alert) (context.Context, []*types.Alert, error)
StageFunc wraps a function to represent a Stage.
type TimeActiveStage ¶
type TimeActiveStage timeStage
func NewTimeActiveStage ¶
func NewTimeActiveStage(muter types.TimeMuter, marker types.GroupMarker, metrics *Metrics) *TimeActiveStage
func (TimeActiveStage) Exec ¶
func (tas TimeActiveStage) Exec(ctx context.Context, l log.Logger, alerts ...*types.Alert) (context.Context, []*types.Alert, error)
Exec implements the stage interface for TimeActiveStage. TimeActiveStage is responsible for muting alerts whose route is not in an active time.
type TimeMuteStage ¶
type TimeMuteStage timeStage
func NewTimeMuteStage ¶
func NewTimeMuteStage(muter types.TimeMuter, marker types.GroupMarker, metrics *Metrics) *TimeMuteStage
type WaitStage ¶
type WaitStage struct {
// contains filtered or unexported fields
}
WaitStage waits for a certain amount of time before continuing or until the context is done.
func NewWaitStage ¶
NewWaitStage returns a new WaitStage.