Alerting: Move rule evaluation status logic out of prometheus API and into scheduler (#89141)
* Add health fields to rules and an aggregator method to the scheduler * Move health, last error, and last eval time in together to minimize state processing * Wire up a readonly scheduler to prom api * Extract to exported function * Use health in api_prometheus and fix up tests * Rename health struct to status * Fix tests one more time * Several new tests * Handle inactive rules * Push state mapping into state manager * rename to StatusReader * Rectify cyclo complexity rebase * Convert existing package local status implementation to models one * fix tests * undo RuleDefs rename
This commit is contained in:
@@ -886,3 +886,11 @@ func (r *Record) Fingerprint() data.Fingerprint {
|
||||
func hasAnyCondition(rule *AlertRuleWithOptionals) bool {
|
||||
return rule.Condition != "" || (rule.Record != nil && rule.Record.From != "")
|
||||
}
|
||||
|
||||
// RuleStatus contains info about a rule's current evaluation state.
|
||||
type RuleStatus struct {
|
||||
Health string
|
||||
LastError error
|
||||
EvaluationTimestamp time.Time
|
||||
EvaluationDuration time.Duration
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user