grafana/pkg/services/alerting/models.go
2023-08-30 18:46:47 +03:00

53 lines
1.3 KiB
Go

package alerting
import (
"sync"
"github.com/grafana/grafana/pkg/components/null"
"github.com/grafana/grafana/pkg/services/auth/identity"
"github.com/grafana/grafana/pkg/services/dashboards"
)
// Job holds state about when the alert rule should be evaluated.
type Job struct {
Offset int64
OffsetWait bool
Delay bool
running bool
Rule *Rule
runningLock sync.Mutex // Lock for running property which is used in the Scheduler and AlertEngine execution
}
// GetRunning returns true if the job is running. A lock is taken and released on the Job to ensure atomicity.
func (j *Job) GetRunning() bool {
defer j.runningLock.Unlock()
j.runningLock.Lock()
return j.running
}
// SetRunning sets the running property on the Job. A lock is taken and released on the Job to ensure atomicity.
func (j *Job) SetRunning(b bool) {
j.runningLock.Lock()
j.running = b
j.runningLock.Unlock()
}
// ResultLogEntry represents log data for the alert evaluation.
type ResultLogEntry struct {
Message string
Data any
}
// EvalMatch represents the series violating the threshold.
type EvalMatch struct {
Value null.Float `json:"value"`
Metric string `json:"metric"`
Tags map[string]string `json:"tags"`
}
type DashAlertInfo struct {
User identity.Requester
Dash *dashboards.Dashboard
OrgID int64
}