rules

package
v1.25.5 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2021 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Alert

type Alert struct {
	State AlertState

	Labels      labels.Labels
	Annotations labels.Labels

	// The value at the last evaluation of the alerting expression.
	Value float64
	// The interval during which the condition of this alert held true.
	// ResolvedAt will be 0 to indicate a still active alert.
	ActiveAt   time.Time
	FiredAt    time.Time
	ResolvedAt time.Time
	LastSentAt time.Time
	ValidUntil time.Time
}

Alert is the user-level representation of a single instance of an alerting rule.

type AlertState

type AlertState int

AlertState denotes the state of an active alert.

const (
	// StateInactive is the state of an alert that is neither firing nor pending.
	StateInactive AlertState = iota
	// StatePending is the state of an alert that has been active for less than
	// the configured threshold duration.
	StatePending
	// StateFiring is the state of an alert that has been active for longer than
	// the configured threshold duration.
	StateFiring
)

func (AlertState) String

func (s AlertState) String() string

type AlertingRule

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

An AlertingRule generates alerts from its vector expression.

func NewAlertingRule

func NewAlertingRule(
	name string, vec parser.Expr, hold time.Duration,
	labels, annotations, externalLabels labels.Labels,
	restored bool, logger log.Logger,
) *AlertingRule

NewAlertingRule constructs a new AlertingRule.

func (*AlertingRule) ActiveAlerts

func (r *AlertingRule) ActiveAlerts() []*Alert

ActiveAlerts returns a slice of active alerts.

func (*AlertingRule) Annotations added in v1.25.3

func (r *AlertingRule) Annotations() labels.Labels

Annotations returns the annotations of the alerting rule.

func (*AlertingRule) Eval added in v1.4.0

func (r *AlertingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, externalURL *url.URL) (promql.Vector, error)

Eval evaluates the rule expression and then creates pending alerts and fires or removes previously pending alerts accordingly.

func (*AlertingRule) ForEachActiveAlert added in v1.25.3

func (r *AlertingRule) ForEachActiveAlert(f func(*Alert))

ForEachActiveAlert runs the given function on each alert. This should be used when you want to use the actual alerts from the AlertingRule and not on its copy. If you want to run on a copy of alerts then don't use this, get the alerts from 'ActiveAlerts()'.

func (*AlertingRule) GetEvaluationDuration added in v1.25.3

func (r *AlertingRule) GetEvaluationDuration() time.Duration

GetEvaluationDuration returns the time in seconds it took to evaluate the alerting rule.

func (*AlertingRule) GetEvaluationTimestamp added in v1.25.3

func (r *AlertingRule) GetEvaluationTimestamp() time.Time

GetEvaluationTimestamp returns the time the evaluation took place.

func (*AlertingRule) HTMLSnippet

func (r *AlertingRule) HTMLSnippet(pathPrefix string) html_template.HTML

HTMLSnippet returns an HTML snippet representing this alerting rule. The resulting snippet is expected to be presented in a <pre> element, so that line breaks and other returned whitespace is respected.

func (*AlertingRule) Health added in v1.25.3

func (r *AlertingRule) Health() RuleHealth

Health returns the current health of the alerting rule.

func (*AlertingRule) HoldDuration added in v1.25.3

func (r *AlertingRule) HoldDuration() time.Duration

HoldDuration returns the hold duration of the alerting rule.

func (*AlertingRule) Labels added in v1.25.3

func (r *AlertingRule) Labels() labels.Labels

Labels returns the labels of the alerting rule.

func (*AlertingRule) LastError added in v1.25.3

func (r *AlertingRule) LastError() error

LastError returns the last error seen by the alerting rule.

func (*AlertingRule) Name

func (r *AlertingRule) Name() string

Name returns the name of the alerting rule.

func (*AlertingRule) Query added in v1.25.3

func (r *AlertingRule) Query() parser.Expr

Query returns the query expression of the alerting rule.

func (*AlertingRule) SetEvaluationDuration added in v1.25.3

func (r *AlertingRule) SetEvaluationDuration(dur time.Duration)

SetEvaluationDuration updates evaluationDuration to the duration it took to evaluate the rule on its last evaluation.

func (*AlertingRule) SetEvaluationTimestamp added in v1.25.3

func (r *AlertingRule) SetEvaluationTimestamp(ts time.Time)

SetEvaluationTimestamp updates evaluationTimestamp to the timestamp of when the rule was last evaluated.

func (*AlertingRule) SetHealth added in v1.25.3

func (r *AlertingRule) SetHealth(health RuleHealth)

SetHealth sets the current health of the alerting rule.

func (*AlertingRule) SetLastError added in v1.25.3

func (r *AlertingRule) SetLastError(err error)

SetLastError sets the current error seen by the alerting rule.

func (*AlertingRule) SetRestored added in v1.25.3

func (r *AlertingRule) SetRestored(restored bool)

SetRestored updates the restoration state of the alerting rule.

func (*AlertingRule) State

func (r *AlertingRule) State() AlertState

State returns the maximum state of alert instances for this rule. StateFiring > StatePending > StateInactive

func (*AlertingRule) String

func (r *AlertingRule) String() string

type FileLoader added in v1.25.3

type FileLoader struct{}

FileLoader is the default GroupLoader implementation. It defers to rulefmt.ParseFile and parser.ParseExpr

func (FileLoader) Load added in v1.25.3

func (FileLoader) Load(identifier string) (*rulefmt.RuleGroups, []error)

func (FileLoader) Parse added in v1.25.3

func (FileLoader) Parse(query string) (parser.Expr, error)

type Group

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

Group is a set of rules that have a logical relation.

func NewGroup added in v1.4.0

func NewGroup(o GroupOptions) *Group

NewGroup makes a new Group with the given name, options, and rules.

func (*Group) AlertingRules added in v1.25.3

func (g *Group) AlertingRules() []*AlertingRule

AlertingRules returns the list of the group's alerting rules.

func (*Group) CopyState added in v1.25.3

func (g *Group) CopyState(from *Group)

CopyState copies the alerting rule and staleness related state from the given group.

Rules are matched based on their name and labels. If there are duplicates, the first is matched with the first, second with the second etc.

func (*Group) Equals added in v1.25.3

func (g *Group) Equals(ng *Group) bool

Equals return if two groups are the same.

func (*Group) Eval added in v1.4.0

func (g *Group) Eval(ctx context.Context, ts time.Time)

Eval runs a single evaluation cycle in which all rules are evaluated sequentially.

func (*Group) File added in v1.25.3

func (g *Group) File() string

File returns the group's file.

func (*Group) GetEvaluationTime added in v1.25.3

func (g *Group) GetEvaluationTime() time.Duration

GetEvaluationTime returns the time in seconds it took to evaluate the rule group.

func (*Group) GetLastEvaluation added in v1.25.3

func (g *Group) GetLastEvaluation() time.Time

GetLastEvaluation returns the time the last evaluation of the rule group took place.

func (*Group) HasAlertingRules added in v1.25.3

func (g *Group) HasAlertingRules() bool

HasAlertingRules returns true if the group contains at least one AlertingRule.

func (*Group) Interval added in v1.25.3

func (g *Group) Interval() time.Duration

Interval returns the group's interval.

func (*Group) Name added in v1.25.3

func (g *Group) Name() string

Name returns the group name.

func (*Group) RestoreForState added in v1.25.3

func (g *Group) RestoreForState(ts time.Time)

RestoreForState restores the 'for' state of the alerts by looking up last ActiveAt from storage.

func (*Group) Rules added in v1.25.3

func (g *Group) Rules() []Rule

Rules returns the group's rules.

type GroupLoader added in v1.25.3

type GroupLoader interface {
	Load(identifier string) (*rulefmt.RuleGroups, []error)
	Parse(query string) (parser.Expr, error)
}

GroupLoader is responsible for loading rule groups from arbitrary sources and parsing them.

type GroupOptions added in v1.25.3

type GroupOptions struct {
	Name, File    string
	Interval      time.Duration
	Rules         []Rule
	ShouldRestore bool
	Opts          *ManagerOptions
	// contains filtered or unexported fields
}

type Manager

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

The Manager manages recording and alerting rules.

func NewManager

func NewManager(o *ManagerOptions) *Manager

NewManager returns an implementation of Manager, ready to be started by calling the Run method.

func (*Manager) AlertingRules

func (m *Manager) AlertingRules() []*AlertingRule

AlertingRules returns the list of the manager's alerting rules.

func (*Manager) LoadGroups added in v1.25.3

func (m *Manager) LoadGroups(
	interval time.Duration, externalLabels labels.Labels, filenames ...string,
) (map[string]*Group, []error)

LoadGroups reads groups from a list of files.

func (*Manager) RuleGroups added in v1.25.3

func (m *Manager) RuleGroups() []*Group

RuleGroups returns the list of manager's rule groups.

func (*Manager) Rules

func (m *Manager) Rules() []Rule

Rules returns the list of the manager's rules.

func (*Manager) Run

func (m *Manager) Run()

Run starts processing of the rule manager. It is blocking.

func (*Manager) Stop

func (m *Manager) Stop()

Stop the rule manager's rule evaluation cycles.

func (*Manager) Update added in v1.25.3

func (m *Manager) Update(interval time.Duration, files []string, externalLabels labels.Labels) error

Update the rule manager's state as the config requires. If loading the new rules failed the old rule set is restored.

type ManagerOptions

type ManagerOptions struct {
	ExternalURL     *url.URL
	QueryFunc       QueryFunc
	NotifyFunc      NotifyFunc
	Context         context.Context
	Appendable      storage.Appendable
	Queryable       storage.Queryable
	Logger          log.Logger
	Registerer      prometheus.Registerer
	OutageTolerance time.Duration
	ForGracePeriod  time.Duration
	ResendDelay     time.Duration
	GroupLoader     GroupLoader

	Metrics *Metrics
}

ManagerOptions bundles options for the Manager.

type Metrics added in v1.25.3

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

Metrics for rule evaluation.

func NewGroupMetrics added in v1.25.3

func NewGroupMetrics(reg prometheus.Registerer) *Metrics

NewGroupMetrics creates a new instance of Metrics and registers it with the provided registerer, if not nil.

type NotifyFunc added in v1.25.3

type NotifyFunc func(ctx context.Context, expr string, alerts ...*Alert)

NotifyFunc sends notifications about a set of alerts generated by the given expression.

type QueryFunc added in v1.25.3

type QueryFunc func(ctx context.Context, q string, t time.Time) (promql.Vector, error)

QueryFunc processes PromQL queries.

func EngineQueryFunc added in v1.25.3

func EngineQueryFunc(engine *promql.Engine, q storage.Queryable) QueryFunc

EngineQueryFunc returns a new query function that executes instant queries against the given engine. It converts scalar into vector results.

type RecordingRule

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

A RecordingRule records its vector expression into new timeseries.

func NewRecordingRule

func NewRecordingRule(name string, vector parser.Expr, lset labels.Labels) *RecordingRule

NewRecordingRule returns a new recording rule.

func (*RecordingRule) Eval added in v1.4.0

func (rule *RecordingRule) Eval(ctx context.Context, ts time.Time, query QueryFunc, _ *url.URL) (promql.Vector, error)

Eval evaluates the rule and then overrides the metric names and labels accordingly.

func (*RecordingRule) GetEvaluationDuration added in v1.25.3

func (rule *RecordingRule) GetEvaluationDuration() time.Duration

GetEvaluationDuration returns the time in seconds it took to evaluate the recording rule.

func (*RecordingRule) GetEvaluationTimestamp added in v1.25.3

func (rule *RecordingRule) GetEvaluationTimestamp() time.Time

GetEvaluationTimestamp returns the time the evaluation took place.

func (*RecordingRule) HTMLSnippet

func (rule *RecordingRule) HTMLSnippet(pathPrefix string) template.HTML

HTMLSnippet returns an HTML snippet representing this rule.

func (*RecordingRule) Health added in v1.25.3

func (rule *RecordingRule) Health() RuleHealth

Health returns the current health of the recording rule.

func (*RecordingRule) Labels added in v1.25.3

func (rule *RecordingRule) Labels() labels.Labels

Labels returns the rule labels.

func (*RecordingRule) LastError added in v1.25.3

func (rule *RecordingRule) LastError() error

LastError returns the last error seen by the recording rule.

func (*RecordingRule) Name

func (rule *RecordingRule) Name() string

Name returns the rule name.

func (*RecordingRule) Query added in v1.25.3

func (rule *RecordingRule) Query() parser.Expr

Query returns the rule query expression.

func (*RecordingRule) SetEvaluationDuration added in v1.25.3

func (rule *RecordingRule) SetEvaluationDuration(dur time.Duration)

SetEvaluationDuration updates evaluationDuration to the time in seconds it took to evaluate the rule on its last evaluation.

func (*RecordingRule) SetEvaluationTimestamp added in v1.25.3

func (rule *RecordingRule) SetEvaluationTimestamp(ts time.Time)

SetEvaluationTimestamp updates evaluationTimestamp to the timestamp of when the rule was last evaluated.

func (*RecordingRule) SetHealth added in v1.25.3

func (rule *RecordingRule) SetHealth(health RuleHealth)

SetHealth sets the current health of the recording rule.

func (*RecordingRule) SetLastError added in v1.25.3

func (rule *RecordingRule) SetLastError(err error)

SetLastError sets the current error seen by the recording rule.

func (*RecordingRule) String

func (rule *RecordingRule) String() string

type Rule

type Rule interface {
	Name() string
	// Labels of the rule.
	Labels() labels.Labels
	// eval evaluates the rule, including any associated recording or alerting actions.
	Eval(context.Context, time.Time, QueryFunc, *url.URL) (promql.Vector, error)
	// String returns a human-readable string representation of the rule.
	String() string
	// SetLastErr sets the current error experienced by the rule.
	SetLastError(error)
	// LastErr returns the last error experienced by the rule.
	LastError() error
	// SetHealth sets the current health of the rule.
	SetHealth(RuleHealth)
	// Health returns the current health of the rule.
	Health() RuleHealth
	SetEvaluationDuration(time.Duration)
	// GetEvaluationDuration returns last evaluation duration.
	// NOTE: Used dynamically by rules.html template.
	GetEvaluationDuration() time.Duration
	SetEvaluationTimestamp(time.Time)
	// GetEvaluationTimestamp returns last evaluation timestamp.
	// NOTE: Used dynamically by rules.html template.
	GetEvaluationTimestamp() time.Time
	// HTMLSnippet returns a human-readable string representation of the rule,
	// decorated with HTML elements for use the web frontend.
	HTMLSnippet(pathPrefix string) html_template.HTML
}

A Rule encapsulates a vector expression which is evaluated at a specified interval and acted upon (currently either recorded or used for alerting).

type RuleHealth added in v1.25.3

type RuleHealth string

RuleHealth describes the health state of a rule.

const (
	HealthUnknown RuleHealth = "unknown"
	HealthGood    RuleHealth = "ok"
	HealthBad     RuleHealth = "err"
)

The possible health states of a rule based on the last execution.

Jump to

Keyboard shortcuts

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