Skip to content

Commit 8b05af2

Browse files
committed
feat(alerting): add exeuction time to alertResult
1 parent f95be63 commit 8b05af2

File tree

5 files changed

+20
-11
lines changed

5 files changed

+20
-11
lines changed

pkg/services/alerting/engine.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,11 @@ func (e *Engine) executeJob(job *AlertJob) {
9595
select {
9696
case <-time.After(time.Second * 5):
9797
e.resultQueue <- &AlertResult{
98-
State: alertstates.Pending,
99-
Duration: float64(time.Since(now).Nanoseconds()) / float64(1000000),
100-
Error: fmt.Errorf("Timeout"),
101-
AlertJob: job,
98+
State: alertstates.Pending,
99+
Duration: float64(time.Since(now).Nanoseconds()) / float64(1000000),
100+
Error: fmt.Errorf("Timeout"),
101+
AlertJob: job,
102+
ExeuctionTime: time.Now(),
102103
}
103104
e.log.Debug("Job Execution timeout", "alertRuleId", job.Rule.Id)
104105
case result := <-resultChan:

pkg/services/alerting/handler.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package alerting
22

33
import (
44
"fmt"
5+
"time"
56

67
"github.com/grafana/grafana/pkg/bus"
78
"github.com/grafana/grafana/pkg/log"
@@ -28,9 +29,10 @@ func (e *HandlerImpl) Execute(job *AlertJob, resultQueue chan *AlertResult) {
2829
timeSeries, err := e.executeQuery(job)
2930
if err != nil {
3031
resultQueue <- &AlertResult{
31-
Error: err,
32-
State: alertstates.Pending,
33-
AlertJob: job,
32+
Error: err,
33+
State: alertstates.Pending,
34+
AlertJob: job,
35+
ExeuctionTime: time.Now(),
3436
}
3537
}
3638

@@ -136,5 +138,5 @@ func (e *HandlerImpl) evaluateRule(rule *AlertRule, series tsdb.TimeSeriesSlice)
136138
}
137139
}
138140

139-
return &AlertResult{State: executionState, Description: "Returned " + executionState, TriggeredAlerts: triggeredAlert}
141+
return &AlertResult{State: executionState, Description: "Returned " + executionState, TriggeredAlerts: triggeredAlert, ExeuctionTime: time.Now()}
140142
}

pkg/services/alerting/models.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package alerting
22

3+
import "time"
4+
35
type AlertJob struct {
46
Offset int64
57
Delay bool
@@ -28,6 +30,7 @@ type AlertResult struct {
2830
Description string
2931
Error error
3032
AlertJob *AlertJob
33+
ExeuctionTime time.Time
3134
}
3235

3336
type TriggeredAlert struct {

pkg/services/alerting/result_handler.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,15 @@ func (handler *ResultHandlerImpl) shouldUpdateState(result *AlertResult) bool {
5555
return false
5656
}
5757

58-
now := time.Now()
59-
6058
if query.Result == nil {
6159
return true
6260
}
6361

64-
olderThen15Min := query.Result.Created.Before(now.Add(time.Minute * -15))
62+
//now := time.Now()
63+
//olderThen15Min := query.Result.Created.Before(now.Add(time.Minute * -15))
64+
lastExecution := query.Result.Created
65+
asdf := result.ExeuctionTime.Add(time.Minute * -15)
66+
olderThen15Min := lastExecution.Before(asdf)
6567
changedState := query.Result.NewState != result.State
6668

6769
return changedState || olderThen15Min

pkg/services/alerting/result_handler_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ func TestAlertResultHandler(t *testing.T) {
5151
Created: now.Add(time.Minute * -30),
5252
}
5353
mockResult.State = alertstates.Critical
54+
mockResult.ExeuctionTime = time.Now()
5455
So(resultHandler.shouldUpdateState(mockResult), ShouldBeTrue)
5556
})
5657
})

0 commit comments

Comments
 (0)