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)
|
||
|
}
|