diff --git a/pkg/models/alert.go b/pkg/models/alert.go index 850ff22cec4..bf21b8e5ec6 100644 --- a/pkg/models/alert.go +++ b/pkg/models/alert.go @@ -102,10 +102,12 @@ type SaveAlertsCommand struct { } type SetAlertStateCommand struct { - AlertId int64 - OrgId int64 - State AlertStateType - Error string + AlertId int64 + OrgId int64 + State AlertStateType + Error string + EvalData *simplejson.Json + Timestamp time.Time } diff --git a/pkg/services/alerting/result_handler.go b/pkg/services/alerting/result_handler.go index 2f9572dcf80..bb9f46d6084 100644 --- a/pkg/services/alerting/result_handler.go +++ b/pkg/services/alerting/result_handler.go @@ -54,10 +54,11 @@ func (handler *DefaultResultHandler) Handle(ctx *EvalContext) { handler.log.Info("New state change", "alertId", ctx.Rule.Id, "newState", ctx.Rule.State, "oldState", oldState) cmd := &m.SetAlertStateCommand{ - AlertId: ctx.Rule.Id, - OrgId: ctx.Rule.OrgId, - State: ctx.Rule.State, - Error: exeuctionError, + AlertId: ctx.Rule.Id, + OrgId: ctx.Rule.OrgId, + State: ctx.Rule.State, + Error: exeuctionError, + EvalData: annotationData, } if err := bus.Dispatch(cmd); err != nil { diff --git a/pkg/services/sqlstore/alert.go b/pkg/services/sqlstore/alert.go index 30eb2172c69..db8ae666e3a 100644 --- a/pkg/services/sqlstore/alert.go +++ b/pkg/services/sqlstore/alert.go @@ -227,6 +227,8 @@ func SetAlertState(cmd *m.SetAlertStateCommand) error { alert.State = cmd.State alert.StateChanges += 1 alert.NewStateDate = time.Now() + alert.EvalData = cmd.EvalData + if cmd.Error == "" { alert.ExecutionError = " " //without this space, xorm skips updating this field } else {