diff --git a/pkg/services/alerting/alert_rule_reader.go b/pkg/services/alerting/alert_rule_reader.go index d36b6ea2b23..ec203dda0be 100644 --- a/pkg/services/alerting/alert_rule_reader.go +++ b/pkg/services/alerting/alert_rule_reader.go @@ -1,6 +1,7 @@ package alerting import ( + "github.com/grafana/grafana/pkg/bus" m "github.com/grafana/grafana/pkg/models" ) @@ -11,25 +12,35 @@ type RuleReader interface { type AlertRuleReader struct{} func (this AlertRuleReader) Fetch() []m.AlertRule { - return []m.AlertRule{ - //{Id: 1, Title: "alert rule 1", Interval: "10s", Frequency: 10}, - //{Id: 2, Title: "alert rule 2", Interval: "10s", Frequency: 10}, - //{Id: 3, Title: "alert rule 3", Interval: "10s", Frequency: 10}, - //{Id: 4, Title: "alert rule 4", Interval: "10s", Frequency: 5}, - //{Id: 5, Title: "alert rule 5", Interval: "10s", Frequency: 5}, - { - Id: 1, - OrgId: 1, - Title: "alert rule 1", - Frequency: 3, - DatasourceId: 1, - WarnOperator: "<", - WarnLevel: 3, - CritOperator: "<", - CritLevel: 4, - Aggregator: "avg", - Query: `{"refId":"A","target":"statsd.fakesite.counters.session_start.*.count","textEditor":true}"`, - QueryRange: 3600, - }, + /* + return []m.AlertRule{ + //{Id: 1, Title: "alert rule 1", Interval: "10s", Frequency: 10}, + //{Id: 2, Title: "alert rule 2", Interval: "10s", Frequency: 10}, + //{Id: 3, Title: "alert rule 3", Interval: "10s", Frequency: 10}, + //{Id: 4, Title: "alert rule 4", Interval: "10s", Frequency: 5}, + //{Id: 5, Title: "alert rule 5", Interval: "10s", Frequency: 5}, + { + Id: 1, + OrgId: 1, + Title: "alert rule 1", + Frequency: 3, + DatasourceId: 1, + WarnOperator: "<", + WarnLevel: 3, + CritOperator: "<", + CritLevel: 4, + Aggregator: "avg", + Query: `{"refId":"A","target":"statsd.fakesite.counters.session_start.*.count","textEditor":true}"`, + QueryRange: 3600, + }, + } + */ + + cmd := &m.GetAlertsQuery{ + OrgId: 1, } + + bus.Dispatch(cmd) + + return cmd.Result } diff --git a/pkg/services/alerting/executor.go b/pkg/services/alerting/executor.go index ef2b001a638..d950b4b2821 100644 --- a/pkg/services/alerting/executor.go +++ b/pkg/services/alerting/executor.go @@ -48,11 +48,13 @@ func (this *ExecutorImpl) ValidateRule(rule m.AlertRule, series m.TimeSeriesSlic var aggValue = aggregator[rule.Aggregator](serie) - if operators[rule.CritOperator](float64(rule.CritLevel), aggValue) { + //if operators[rule.CritOperator](float64(rule.CritLevel), aggValue) { + if operators[rule.CritOperator](aggValue, float64(rule.CritLevel)) { return &AlertResult{State: m.AlertStateCritical, Id: rule.Id, ActualValue: aggValue} } - if operators[rule.WarnOperator](float64(rule.WarnLevel), aggValue) { + //if operators[rule.WarnOperator](float64(rule.WarnLevel), aggValue) { + if operators[rule.WarnOperator](aggValue, float64(rule.WarnLevel)) { return &AlertResult{State: m.AlertStateWarn, Id: rule.Id, ActualValue: aggValue} } } diff --git a/pkg/services/alerting/executor_test.go b/pkg/services/alerting/executor_test.go index 102655ce5e2..d43833351af 100644 --- a/pkg/services/alerting/executor_test.go +++ b/pkg/services/alerting/executor_test.go @@ -11,7 +11,7 @@ func TestAlertingExecutor(t *testing.T) { executor := &ExecutorImpl{} Convey("Show return ok since avg is above 2", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "sum"} + rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "sum"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{2, 0}}), @@ -22,7 +22,7 @@ func TestAlertingExecutor(t *testing.T) { }) Convey("Show return critical since below 2", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "sum"} + rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "sum"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{2, 0}}), @@ -33,7 +33,7 @@ func TestAlertingExecutor(t *testing.T) { }) Convey("Show return critical since sum is above 10", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "sum"} + rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "sum"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{9, 0}, {9, 0}}), @@ -44,7 +44,7 @@ func TestAlertingExecutor(t *testing.T) { }) Convey("Show return ok since avg is below 10", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "avg"} + rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "avg"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{9, 0}, {9, 0}}), @@ -55,7 +55,7 @@ func TestAlertingExecutor(t *testing.T) { }) Convey("Show return ok since min is below 10", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "min"} + rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "min"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{11, 0}, {9, 0}}), @@ -66,7 +66,7 @@ func TestAlertingExecutor(t *testing.T) { }) Convey("Show return ok since max is above 10", func() { - rule := m.AlertRule{CritLevel: 10, CritOperator: "<", Aggregator: "max"} + rule := m.AlertRule{CritLevel: 10, CritOperator: ">", Aggregator: "max"} timeSeries := []*m.TimeSeries{ m.NewTimeSeries("test1", [][2]float64{{1, 0}, {11, 0}}), diff --git a/public/app/plugins/panel/graph/partials/tab_alerting.html b/public/app/plugins/panel/graph/partials/tab_alerting.html index db04ef8e8e1..12e27d9e63f 100644 --- a/public/app/plugins/panel/graph/partials/tab_alerting.html +++ b/public/app/plugins/panel/graph/partials/tab_alerting.html @@ -45,15 +45,15 @@