| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package alerting
- import (
- "sync"
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/infra/log"
- "github.com/grafana/grafana/pkg/infra/metrics"
- "github.com/grafana/grafana/pkg/models"
- )
- type ruleReader interface {
- fetch() []*Rule
- }
- type defaultRuleReader struct {
- sync.RWMutex
- log log.Logger
- }
- func newRuleReader() *defaultRuleReader {
- ruleReader := &defaultRuleReader{
- log: log.New("alerting.ruleReader"),
- }
- return ruleReader
- }
- func (arr *defaultRuleReader) fetch() []*Rule {
- cmd := &models.GetAllAlertsQuery{}
- if err := bus.Dispatch(cmd); err != nil {
- arr.log.Error("Could not load alerts", "error", err)
- return []*Rule{}
- }
- res := make([]*Rule, 0)
- for _, ruleDef := range cmd.Result {
- if model, err := NewRuleFromDBAlert(ruleDef); err != nil {
- arr.log.Error("Could not build alert model for rule", "ruleId", ruleDef.Id, "error", err)
- } else {
- res = append(res, model)
- }
- }
- metrics.M_Alerting_Active_Alerts.Set(float64(len(res)))
- return res
- }
|