reader.go 1006 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package alerting
  2. import (
  3. "sync"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/infra/log"
  6. "github.com/grafana/grafana/pkg/infra/metrics"
  7. "github.com/grafana/grafana/pkg/models"
  8. )
  9. type ruleReader interface {
  10. fetch() []*Rule
  11. }
  12. type defaultRuleReader struct {
  13. sync.RWMutex
  14. log log.Logger
  15. }
  16. func newRuleReader() *defaultRuleReader {
  17. ruleReader := &defaultRuleReader{
  18. log: log.New("alerting.ruleReader"),
  19. }
  20. return ruleReader
  21. }
  22. func (arr *defaultRuleReader) fetch() []*Rule {
  23. cmd := &models.GetAllAlertsQuery{}
  24. if err := bus.Dispatch(cmd); err != nil {
  25. arr.log.Error("Could not load alerts", "error", err)
  26. return []*Rule{}
  27. }
  28. res := make([]*Rule, 0)
  29. for _, ruleDef := range cmd.Result {
  30. if model, err := NewRuleFromDBAlert(ruleDef); err != nil {
  31. arr.log.Error("Could not build alert model for rule", "ruleId", ruleDef.Id, "error", err)
  32. } else {
  33. res = append(res, model)
  34. }
  35. }
  36. metrics.M_Alerting_Active_Alerts.Set(float64(len(res)))
  37. return res
  38. }