39 lines
928 B
Go
39 lines
928 B
Go
package rules
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go.signoz.io/signoz/pkg/query-service/utils/labels"
|
|
)
|
|
|
|
// A Rule encapsulates a vector expression which is evaluated at a specified
|
|
// interval and acted upon (currently used for alerting).
|
|
type Rule interface {
|
|
ID() string
|
|
Name() string
|
|
Type() RuleType
|
|
|
|
Labels() labels.BaseLabels
|
|
Annotations() labels.BaseLabels
|
|
Condition() *RuleCondition
|
|
State() AlertState
|
|
ActiveAlerts() []*Alert
|
|
|
|
PreferredChannels() []string
|
|
|
|
Eval(context.Context, time.Time, *Queriers) (interface{}, error)
|
|
String() string
|
|
// Query() string
|
|
SetLastError(error)
|
|
LastError() error
|
|
SetHealth(RuleHealth)
|
|
Health() RuleHealth
|
|
SetEvaluationDuration(time.Duration)
|
|
GetEvaluationDuration() time.Duration
|
|
SetEvaluationTimestamp(time.Time)
|
|
GetEvaluationTimestamp() time.Time
|
|
|
|
SendAlerts(ctx context.Context, ts time.Time, resendDelay time.Duration, interval time.Duration, notifyFunc NotifyFunc)
|
|
}
|