From 4619a05f43a12b8592a46f10db8ff3f37c28f9f5 Mon Sep 17 00:00:00 2001 From: bergquist Date: Wed, 31 Aug 2016 14:06:54 +0200 Subject: [PATCH] feat(alerting): save execution error message to annotations --- pkg/services/alerting/result_handler.go | 5 ++++- pkg/tsdb/graphite/graphite.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/services/alerting/result_handler.go b/pkg/services/alerting/result_handler.go index 6f19c0e7e52..f6c4e90138f 100644 --- a/pkg/services/alerting/result_handler.go +++ b/pkg/services/alerting/result_handler.go @@ -31,12 +31,15 @@ func (handler *DefaultResultHandler) Handle(ctx *EvalContext) { oldState := ctx.Rule.State exeuctionError := "" + annotationData := simplejson.New() if ctx.Error != nil { handler.log.Error("Alert Rule Result Error", "ruleId", ctx.Rule.Id, "error", ctx.Error) ctx.Rule.State = m.AlertStateExeuctionError exeuctionError = ctx.Error.Error() + annotationData.Set("errorMessage", exeuctionError) } else if ctx.Firing { ctx.Rule.State = m.AlertStateType(ctx.Rule.Severity) + annotationData = simplejson.NewFromAny(ctx.EvalMatches) } else { ctx.Rule.State = m.AlertStateOK } @@ -66,7 +69,7 @@ func (handler *DefaultResultHandler) Handle(ctx *EvalContext) { NewState: string(ctx.Rule.State), PrevState: string(oldState), Timestamp: time.Now(), - Data: simplejson.NewFromAny(ctx.EvalMatches), + Data: annotationData, } annotationRepo := annotations.GetRepository() diff --git a/pkg/tsdb/graphite/graphite.go b/pkg/tsdb/graphite/graphite.go index 68f92d7527e..874f2b7959b 100644 --- a/pkg/tsdb/graphite/graphite.go +++ b/pkg/tsdb/graphite/graphite.go @@ -49,12 +49,12 @@ func (e *GraphiteExecutor) Execute(queries tsdb.QuerySlice, context *tsdb.QueryC } res, err := client.Do(req) - defer res.Body.Close() if err != nil { result.Error = err return result } + defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { result.Error = err