mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge branch 'alerting' of github.com:grafana/grafana into alerting
This commit is contained in:
commit
da59d6547f
@ -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…
Reference in New Issue
Block a user