Merge branch 'alerting' of github.com:grafana/grafana into alerting

pull/5890/head
Torkel Ödegaard 9 years ago
commit da59d6547f
  1. 10
      pkg/models/alert.go
  2. 18
      pkg/services/alerting/notifiers/slack.go
  3. 5
      pkg/services/alerting/result_handler.go
  4. 1
      pkg/services/sqlstore/alert.go
  5. 1
      pkg/services/sqlstore/migrations/alert_mig.go

@ -10,9 +10,11 @@ type AlertStateType string
type AlertSeverityType string
const (
AlertStatePending AlertStateType = "pending"
AlertStateFiring AlertStateType = "firing"
AlertStateOK AlertStateType = "ok"
AlertStatePending AlertStateType = "pending"
AlertStateExeuctionError AlertStateType = "exeuction_error"
AlertStatePaused AlertStateType = "paused"
AlertStateFiring AlertStateType = "firing"
AlertStateOK AlertStateType = "ok"
)
func (s AlertStateType) IsValid() bool {
@ -41,7 +43,6 @@ type Alert struct {
Severity AlertSeverityType
State AlertStateType
Handler int64
Paused bool
Silenced bool
ExecutionError string
Frequency int64
@ -115,6 +116,7 @@ type SetAlertStateCommand struct {
AlertId int64
OrgId int64
State AlertStateType
Error string
Timestamp time.Time
}

@ -64,20 +64,20 @@ func (this *SlackNotifier) Notify(context *alerting.EvalContext) {
body := map[string]interface{}{
"attachments": []map[string]interface{}{
{
"color": context.GetColor(),
"color": context.GetColor(),
"title": context.GetNotificationTitle(),
"title_link": ruleUrl,
"text": context.Rule.Message,
"fields": fields,
"image_url": context.ImagePublicUrl,
"footer": "Grafana v" + setting.BuildVersion,
"footer_icon": "http://grafana.org/assets/img/fav32.png",
"ts": time.Now().Unix(),
//"pretext": "Optional text that appears above the attachment block",
// "author_name": "Bobby Tables",
// "author_link": "http://flickr.com/bobby/",
// "author_icon": "http://flickr.com/icons/bobby.jpg",
"title": context.GetNotificationTitle(),
"title_link": ruleUrl,
"text": context.Rule.Message,
"fields": fields,
"image_url": context.ImagePublicUrl,
// "thumb_url": "http://example.com/path/to/thumb.png",
"footer": "Grafana v" + setting.BuildVersion,
"footer_icon": "http://grafana.org/assets/img/fav32.png",
"ts": time.Now().Unix(),
},
},
}

@ -29,9 +29,11 @@ func NewResultHandler() *DefaultResultHandler {
func (handler *DefaultResultHandler) Handle(ctx *EvalContext) {
oldState := ctx.Rule.State
exeuctionError := ""
if ctx.Error != nil {
handler.log.Error("Alert Rule Result Error", "ruleId", ctx.Rule.Id, "error", ctx.Error)
ctx.Rule.State = m.AlertStatePending
ctx.Rule.State = m.AlertStateExeuctionError
exeuctionError = ctx.Error.Error()
} else if ctx.Firing {
ctx.Rule.State = m.AlertStateFiring
} else {
@ -47,6 +49,7 @@ func (handler *DefaultResultHandler) Handle(ctx *EvalContext) {
AlertId: ctx.Rule.Id,
OrgId: ctx.Rule.OrgId,
State: ctx.Rule.State,
Error: exeuctionError,
}
if err := bus.Dispatch(cmd); err != nil {

@ -223,6 +223,7 @@ func SetAlertState(cmd *m.SetAlertStateCommand) error {
alert.State = cmd.State
alert.StateChanges += 1
alert.NewStateDate = time.Now()
alert.ExecutionError = cmd.Error
sess.Id(alert.Id).Update(&alert)
return nil

@ -21,7 +21,6 @@ func addAlertMigrations(mg *Migrator) {
{Name: "frequency", Type: DB_BigInt, Nullable: false},
{Name: "handler", Type: DB_BigInt, Nullable: false},
{Name: "severity", Type: DB_Text, Nullable: false},
{Name: "paused", Type: DB_Bool, Nullable: false},
{Name: "silenced", Type: DB_Bool, Nullable: false},
{Name: "execution_error", Type: DB_Text, Nullable: false},
{Name: "eval_data", Type: DB_Text, Nullable: true},

Loading…
Cancel
Save