From 139bbecc10a16bdea7595986d6d6780e5f0e7acf Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Fri, 28 Oct 2016 22:19:51 -0700 Subject: [PATCH 1/7] Added Pagerduty basic alerting --- pkg/metrics/metrics.go | 75 +++++++++-------- pkg/services/alerting/notifiers/pagerduty.go | 83 +++++++++++++++++++ .../app/features/alerting/alert_tab_ctrl.ts | 1 + .../alerting/partials/notification_edit.html | 37 ++++++++- 4 files changed, 159 insertions(+), 37 deletions(-) create mode 100644 pkg/services/alerting/notifiers/pagerduty.go diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go index 481818aab23..25fa43d8d2f 100644 --- a/pkg/metrics/metrics.go +++ b/pkg/metrics/metrics.go @@ -9,42 +9,44 @@ func init() { } var ( - M_Instance_Start Counter - M_Page_Status_200 Counter - M_Page_Status_500 Counter - M_Page_Status_404 Counter - M_Page_Status_Unknown Counter - M_Api_Status_200 Counter - M_Api_Status_404 Counter - M_Api_Status_500 Counter - M_Api_Status_Unknown Counter - M_Proxy_Status_200 Counter - M_Proxy_Status_404 Counter - M_Proxy_Status_500 Counter - M_Proxy_Status_Unknown Counter - M_Api_User_SignUpStarted Counter - M_Api_User_SignUpCompleted Counter - M_Api_User_SignUpInvite Counter - M_Api_Dashboard_Save Timer - M_Api_Dashboard_Get Timer - M_Api_Dashboard_Search Timer - M_Api_Admin_User_Create Counter - M_Api_Login_Post Counter - M_Api_Login_OAuth Counter - M_Api_Org_Create Counter - M_Api_Dashboard_Snapshot_Create Counter - M_Api_Dashboard_Snapshot_External Counter - M_Api_Dashboard_Snapshot_Get Counter - M_Models_Dashboard_Insert Counter - M_Alerting_Result_State_Alerting Counter - M_Alerting_Result_State_Ok Counter - M_Alerting_Result_State_Paused Counter - M_Alerting_Result_State_NoData Counter - M_Alerting_Result_State_Pending Counter - M_Alerting_Active_Alerts Counter - M_Alerting_Notification_Sent_Slack Counter - M_Alerting_Notification_Sent_Email Counter - M_Alerting_Notification_Sent_Webhook Counter + M_Instance_Start Counter + M_Page_Status_200 Counter + M_Page_Status_500 Counter + M_Page_Status_404 Counter + M_Page_Status_Unknown Counter + M_Api_Status_200 Counter + M_Api_Status_404 Counter + M_Api_Status_500 Counter + M_Api_Status_Unknown Counter + M_Proxy_Status_200 Counter + M_Proxy_Status_404 Counter + M_Proxy_Status_500 Counter + M_Proxy_Status_Unknown Counter + M_Api_User_SignUpStarted Counter + M_Api_User_SignUpCompleted Counter + M_Api_User_SignUpInvite Counter + M_Api_Dashboard_Save Timer + M_Api_Dashboard_Get Timer + M_Api_Dashboard_Search Timer + M_Api_Admin_User_Create Counter + M_Api_Login_Post Counter + M_Api_Login_OAuth Counter + M_Api_Org_Create Counter + M_Api_Dashboard_Snapshot_Create Counter + M_Api_Dashboard_Snapshot_External Counter + M_Api_Dashboard_Snapshot_Get Counter + M_Models_Dashboard_Insert Counter + M_Alerting_Result_State_Alerting Counter + M_Alerting_Result_State_Ok Counter + M_Alerting_Result_State_Paused Counter + M_Alerting_Result_State_NoData Counter + M_Alerting_Result_State_Pending Counter + M_Alerting_Active_Alerts Counter + M_Alerting_Notification_Sent_Slack Counter + M_Alerting_Notification_Sent_Email Counter + M_Alerting_Notification_Sent_Webhook Counter + M_Alerting_Notification_Sent_PagerDuty Counter + // Timers M_DataSource_ProxyReq_Timer Timer @@ -107,6 +109,7 @@ func initMetricVars(settings *MetricSettings) { M_Alerting_Notification_Sent_Slack = RegCounter("alerting.notifications_sent", "type", "slack") M_Alerting_Notification_Sent_Email = RegCounter("alerting.notifications_sent", "type", "email") M_Alerting_Notification_Sent_Webhook = RegCounter("alerting.notifications_sent", "type", "webhook") + M_Alerting_Notification_Sent_PagerDuty = RegCounter("alerting.notifications_sent", "type", "pagerduty") // Timers M_DataSource_ProxyReq_Timer = RegTimer("api.dataproxy.request.all") diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go new file mode 100644 index 00000000000..7ccde7524d2 --- /dev/null +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -0,0 +1,83 @@ +package notifiers + +import ( + "github.com/grafana/grafana/pkg/bus" + "github.com/grafana/grafana/pkg/components/simplejson" + "github.com/grafana/grafana/pkg/log" + "github.com/grafana/grafana/pkg/metrics" + m "github.com/grafana/grafana/pkg/models" + "github.com/grafana/grafana/pkg/services/alerting" +) + +func init() { + alerting.RegisterNotifier("pagerduty", NewPagerdutyNotifier) +} + +func NewPagerdutyNotifier(model *m.AlertNotification) (alerting.Notifier, error) { + key := model.Settings.Get("integrationKey").MustString() + if key == "" { + return nil, alerting.ValidationError{Reason: "Could not find integration key property in settings"} + } + + return &PagerdutyNotifier{ + NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), + Key: key, + log: log.New("alerting.notifier.pagerduty"), + }, nil +} + +type PagerdutyNotifier struct { + NotifierBase + Key string + log log.Logger +} + +func (this *PagerdutyNotifier) Notify(evalContext *alerting.EvalContext) error { + this.log.Info("Notifying Pagerduty") + metrics.M_Alerting_Notification_Sent_PagerDuty.Inc(1) + + if evalContext.Rule.State == m.AlertStateAlerting { + + // Pagerduty Events API URL + pgEventsUrl := "https://events.pagerduty.com/generic/2010-04-15/create_event.json" + + bodyJSON := simplejson.New() + bodyJSON.Set("service_key", this.Key) + bodyJSON.Set("description", evalContext.Rule.Name + "-" + evalContext.Rule.Message) + bodyJSON.Set("client", "Grafana") + bodyJSON.Set("event_type", "trigger") + + ruleUrl, err := evalContext.GetRuleUrl() + if err != nil { + this.log.Error("Failed get rule link", "error", err) + return err + } + bodyJSON.Set("client_url", ruleUrl) + + if evalContext.ImagePublicUrl != "" { + var contexts []interface{} + imageJSON := simplejson.New() + imageJSON.Set("type", "image") + imageJSON.Set("src", evalContext.ImagePublicUrl) + contexts[0] = imageJSON + bodyJSON.Set("contexts", contexts) + } + + body, _ := bodyJSON.MarshalJSON() + + cmd := &m.SendWebhook{ + Url: pgEventsUrl, + Body: string(body), + HttpMethod: "POST", + } + + if err := bus.Dispatch(cmd); err != nil { + this.log.Error("Failed to send notification to Pagerduty", "error", err, "body", string(body)) + } + + } else { + this.log.Info("Not sending a trigger to Pagerduty", "state", evalContext.Rule.State) + } + + return nil +} diff --git a/public/app/features/alerting/alert_tab_ctrl.ts b/public/app/features/alerting/alert_tab_ctrl.ts index e505f9be361..c882a6ac3bf 100644 --- a/public/app/features/alerting/alert_tab_ctrl.ts +++ b/public/app/features/alerting/alert_tab_ctrl.ts @@ -90,6 +90,7 @@ export class AlertTabCtrl { case "email": return "fa fa-envelope"; case "slack": return "fa fa-slack"; case "webhook": return "fa fa-cubes"; + case "pagerduty": return "fa fa-bullhorn"; } } diff --git a/public/app/features/alerting/partials/notification_edit.html b/public/app/features/alerting/partials/notification_edit.html index efb22e2e05a..cfd890a0ed2 100644 --- a/public/app/features/alerting/partials/notification_edit.html +++ b/public/app/features/alerting/partials/notification_edit.html @@ -19,7 +19,7 @@
Type
-
@@ -97,6 +97,41 @@ +
+

Pagerduty settings

+
+ Integration Key + +
+
+ + +
+
+ + +
+
+ + +
+
+
From df8cd764b22f865983a1212315cb31705b49ea02 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 31 Oct 2016 23:48:59 -0700 Subject: [PATCH 2/7] Added trigger options with Pagerduty --- pkg/services/alerting/notifiers/pagerduty.go | 32 +++++++++++++++---- .../alerting/partials/notification_edit.html | 9 ------ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go index 7ccde7524d2..a90e7635a04 100644 --- a/pkg/services/alerting/notifiers/pagerduty.go +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -19,24 +19,44 @@ func NewPagerdutyNotifier(model *m.AlertNotification) (alerting.Notifier, error) return nil, alerting.ValidationError{Reason: "Could not find integration key property in settings"} } + alertingStates := make([]m.AlertStateType, 0) + alertingStates = append(alertingStates, m.AlertStateAlerting) + if model.Settings.Get("alertOnExecError").MustBool() { + alertingStates = append(alertingStates, m.AlertStateExecError) + } + if model.Settings.Get("alertOnNoData").MustBool() { + alertingStates = append(alertingStates, m.AlertStateNoData) + } + return &PagerdutyNotifier{ - NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), - Key: key, - log: log.New("alerting.notifier.pagerduty"), + NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), + Key: key, + AlertingStates: alertingStates, + log: log.New("alerting.notifier.pagerduty"), }, nil } type PagerdutyNotifier struct { NotifierBase - Key string - log log.Logger + Key string + AlertingStates []m.AlertStateType + log log.Logger } func (this *PagerdutyNotifier) Notify(evalContext *alerting.EvalContext) error { this.log.Info("Notifying Pagerduty") metrics.M_Alerting_Notification_Sent_PagerDuty.Inc(1) - if evalContext.Rule.State == m.AlertStateAlerting { + shouldNotify := false + + for _, state := range this.AlertingStates { + if evalContext.Rule.State == state { + shouldNotify = true + break + } + } + + if shouldNotify { // Pagerduty Events API URL pgEventsUrl := "https://events.pagerduty.com/generic/2010-04-15/create_event.json" diff --git a/public/app/features/alerting/partials/notification_edit.html b/public/app/features/alerting/partials/notification_edit.html index cfd890a0ed2..379eca2e168 100644 --- a/public/app/features/alerting/partials/notification_edit.html +++ b/public/app/features/alerting/partials/notification_edit.html @@ -121,15 +121,6 @@ tooltip="Trigger incident on Execution Error">
-
- - -
From de0fa3d479575a8ca9971065f8dfdd50991a0f7b Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Tue, 1 Nov 2016 00:19:43 -0700 Subject: [PATCH 3/7] Added pagerduty tests --- .../alerting/notifiers/pagerduty_test.go | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 pkg/services/alerting/notifiers/pagerduty_test.go diff --git a/pkg/services/alerting/notifiers/pagerduty_test.go b/pkg/services/alerting/notifiers/pagerduty_test.go new file mode 100644 index 00000000000..d75126527d5 --- /dev/null +++ b/pkg/services/alerting/notifiers/pagerduty_test.go @@ -0,0 +1,106 @@ +package notifiers + +import ( + "testing" + + "github.com/grafana/grafana/pkg/components/simplejson" + m "github.com/grafana/grafana/pkg/models" + . "github.com/smartystreets/goconvey/convey" +) + +func TestPagerdutyNotifier(t *testing.T) { + Convey("Pagerduty notifier tests", t, func() { + + Convey("Parsing alert notification from settings", func() { + Convey("empty settings should return error", func() { + json := `{ }` + + settingsJSON, _ := simplejson.NewJson([]byte(json)) + model := &m.AlertNotification{ + Name: "pageduty_testing", + Type: "pagerduty", + Settings: settingsJSON, + } + + _, err := NewPagerdutyNotifier(model) + So(err, ShouldNotBeNil) + }) + + Convey("settings with only integrationKey should contain AlertStateAlerting", func() { + json := ` + { + "integrationKey": "abcdefgh0123456789" + }` + + settingsJSON, _ := simplejson.NewJson([]byte(json)) + model := &m.AlertNotification{ + Name: "pagerduty_testing", + Type: "pagerduty", + Settings: settingsJSON, + } + + not, err := NewPagerdutyNotifier(model) + pagerdutyNotifier := not.(*PagerdutyNotifier) + + So(err, ShouldBeNil) + So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") + So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") + So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) + }) + + Convey("settings with alertOnNoData should contain AlertStateNoData too", func() { + json := ` + { + "integrationKey": "abcdefgh0123456789", + "alertOnNoData": true + }` + + settingsJSON, _ := simplejson.NewJson([]byte(json)) + model := &m.AlertNotification{ + Name: "pagerduty_testing", + Type: "pagerduty", + Settings: settingsJSON, + } + + not, err := NewPagerdutyNotifier(model) + pagerdutyNotifier := not.(*PagerdutyNotifier) + + So(err, ShouldBeNil) + So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") + So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") + So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateNoData) + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) + }) + + Convey("settings with alertOnNoData, alertOnExecError should contain both", func() { + json := ` + { + "integrationKey": "abcdefgh0123456789", + "alertOnNoData": true, + "alertOnExecError": true + }` + + settingsJSON, _ := simplejson.NewJson([]byte(json)) + model := &m.AlertNotification{ + Name: "pagerduty_testing", + Type: "pagerduty", + Settings: settingsJSON, + } + + not, err := NewPagerdutyNotifier(model) + pagerdutyNotifier := not.(*PagerdutyNotifier) + + So(err, ShouldBeNil) + So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") + So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") + So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateNoData) + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) + So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateExecError) + }) + + }) + }) +} From 638d3bcb42bf3676a341768f47370c3d4cafae77 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Wed, 2 Nov 2016 11:08:51 -0700 Subject: [PATCH 4/7] Removed NoData option --- pkg/services/alerting/notifiers/pagerduty.go | 35 +++--------- .../alerting/notifiers/pagerduty_test.go | 55 +------------------ .../alerting/partials/notification_edit.html | 11 +--- 3 files changed, 12 insertions(+), 89 deletions(-) diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go index a90e7635a04..f9b0af39602 100644 --- a/pkg/services/alerting/notifiers/pagerduty.go +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -19,54 +19,37 @@ func NewPagerdutyNotifier(model *m.AlertNotification) (alerting.Notifier, error) return nil, alerting.ValidationError{Reason: "Could not find integration key property in settings"} } - alertingStates := make([]m.AlertStateType, 0) - alertingStates = append(alertingStates, m.AlertStateAlerting) - if model.Settings.Get("alertOnExecError").MustBool() { - alertingStates = append(alertingStates, m.AlertStateExecError) - } - if model.Settings.Get("alertOnNoData").MustBool() { - alertingStates = append(alertingStates, m.AlertStateNoData) - } - return &PagerdutyNotifier{ - NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), + NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), Key: key, - AlertingStates: alertingStates, + AlertOnExecError: model.Settings.Get("alertOnExecError").MustBool(), log: log.New("alerting.notifier.pagerduty"), }, nil } type PagerdutyNotifier struct { NotifierBase - Key string - AlertingStates []m.AlertStateType - log log.Logger + Key string + AlertOnExecError bool + log log.Logger } func (this *PagerdutyNotifier) Notify(evalContext *alerting.EvalContext) error { this.log.Info("Notifying Pagerduty") metrics.M_Alerting_Notification_Sent_PagerDuty.Inc(1) - shouldNotify := false - - for _, state := range this.AlertingStates { - if evalContext.Rule.State == state { - shouldNotify = true - break - } - } - - if shouldNotify { + if (evalContext.Rule.State == m.AlertStateAlerting) || + ((this.AlertOnExecError) && (evalContext.Rule.State == m.AlertStateExecError)) { // Pagerduty Events API URL pgEventsUrl := "https://events.pagerduty.com/generic/2010-04-15/create_event.json" bodyJSON := simplejson.New() bodyJSON.Set("service_key", this.Key) - bodyJSON.Set("description", evalContext.Rule.Name + "-" + evalContext.Rule.Message) + bodyJSON.Set("description", evalContext.Rule.Name+"-"+evalContext.Rule.Message) bodyJSON.Set("client", "Grafana") bodyJSON.Set("event_type", "trigger") - + ruleUrl, err := evalContext.GetRuleUrl() if err != nil { this.log.Error("Failed get rule link", "error", err) diff --git a/pkg/services/alerting/notifiers/pagerduty_test.go b/pkg/services/alerting/notifiers/pagerduty_test.go index d75126527d5..fb20450d930 100644 --- a/pkg/services/alerting/notifiers/pagerduty_test.go +++ b/pkg/services/alerting/notifiers/pagerduty_test.go @@ -26,59 +26,10 @@ func TestPagerdutyNotifier(t *testing.T) { So(err, ShouldNotBeNil) }) - Convey("settings with only integrationKey should contain AlertStateAlerting", func() { - json := ` - { - "integrationKey": "abcdefgh0123456789" - }` - - settingsJSON, _ := simplejson.NewJson([]byte(json)) - model := &m.AlertNotification{ - Name: "pagerduty_testing", - Type: "pagerduty", - Settings: settingsJSON, - } - - not, err := NewPagerdutyNotifier(model) - pagerdutyNotifier := not.(*PagerdutyNotifier) - - So(err, ShouldBeNil) - So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") - So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") - So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) - }) - - Convey("settings with alertOnNoData should contain AlertStateNoData too", func() { + Convey("settings with alertOnExecError should trigger incident", func() { json := ` { "integrationKey": "abcdefgh0123456789", - "alertOnNoData": true - }` - - settingsJSON, _ := simplejson.NewJson([]byte(json)) - model := &m.AlertNotification{ - Name: "pagerduty_testing", - Type: "pagerduty", - Settings: settingsJSON, - } - - not, err := NewPagerdutyNotifier(model) - pagerdutyNotifier := not.(*PagerdutyNotifier) - - So(err, ShouldBeNil) - So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") - So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") - So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateNoData) - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) - }) - - Convey("settings with alertOnNoData, alertOnExecError should contain both", func() { - json := ` - { - "integrationKey": "abcdefgh0123456789", - "alertOnNoData": true, "alertOnExecError": true }` @@ -96,9 +47,7 @@ func TestPagerdutyNotifier(t *testing.T) { So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateNoData) - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateAlerting) - So(pagerdutyNotifier.AlertingStates, ShouldContain, m.AlertStateExecError) + So(pagerdutyNotifier.AlertOnExecError, ShouldContain, true) }) }) diff --git a/public/app/features/alerting/partials/notification_edit.html b/public/app/features/alerting/partials/notification_edit.html index 379eca2e168..904fd9df0e5 100644 --- a/public/app/features/alerting/partials/notification_edit.html +++ b/public/app/features/alerting/partials/notification_edit.html @@ -103,22 +103,13 @@ Integration Key
-
- - -
+ tooltip="Trigger incident on Exec Error">
From 4b53ea0a56c3bb9be67b679a8996927389279b43 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Wed, 2 Nov 2016 13:55:39 -0700 Subject: [PATCH 5/7] Fixed pagerduty tests --- pkg/services/alerting/notifiers/pagerduty_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/services/alerting/notifiers/pagerduty_test.go b/pkg/services/alerting/notifiers/pagerduty_test.go index fb20450d930..76ae3ef963f 100644 --- a/pkg/services/alerting/notifiers/pagerduty_test.go +++ b/pkg/services/alerting/notifiers/pagerduty_test.go @@ -47,7 +47,7 @@ func TestPagerdutyNotifier(t *testing.T) { So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") - So(pagerdutyNotifier.AlertOnExecError, ShouldContain, true) + So(pagerdutyNotifier.AlertOnExecError, ShouldEqual, true) }) }) From f8d1eb11a9db7244fb87dd31fa61eb44569523bd Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 7 Nov 2016 07:12:43 -0800 Subject: [PATCH 6/7] Removed ExecError state --- pkg/services/alerting/notifiers/pagerduty.go | 5 +---- pkg/services/alerting/notifiers/pagerduty_test.go | 6 ++---- .../features/alerting/partials/notification_edit.html | 9 --------- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go index f9b0af39602..198fe744018 100644 --- a/pkg/services/alerting/notifiers/pagerduty.go +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -22,7 +22,6 @@ func NewPagerdutyNotifier(model *m.AlertNotification) (alerting.Notifier, error) return &PagerdutyNotifier{ NotifierBase: NewNotifierBase(model.Id, model.IsDefault, model.Name, model.Type, model.Settings), Key: key, - AlertOnExecError: model.Settings.Get("alertOnExecError").MustBool(), log: log.New("alerting.notifier.pagerduty"), }, nil } @@ -30,7 +29,6 @@ func NewPagerdutyNotifier(model *m.AlertNotification) (alerting.Notifier, error) type PagerdutyNotifier struct { NotifierBase Key string - AlertOnExecError bool log log.Logger } @@ -38,8 +36,7 @@ func (this *PagerdutyNotifier) Notify(evalContext *alerting.EvalContext) error { this.log.Info("Notifying Pagerduty") metrics.M_Alerting_Notification_Sent_PagerDuty.Inc(1) - if (evalContext.Rule.State == m.AlertStateAlerting) || - ((this.AlertOnExecError) && (evalContext.Rule.State == m.AlertStateExecError)) { + if evalContext.Rule.State == m.AlertStateAlerting { // Pagerduty Events API URL pgEventsUrl := "https://events.pagerduty.com/generic/2010-04-15/create_event.json" diff --git a/pkg/services/alerting/notifiers/pagerduty_test.go b/pkg/services/alerting/notifiers/pagerduty_test.go index 76ae3ef963f..522bb133d77 100644 --- a/pkg/services/alerting/notifiers/pagerduty_test.go +++ b/pkg/services/alerting/notifiers/pagerduty_test.go @@ -26,11 +26,10 @@ func TestPagerdutyNotifier(t *testing.T) { So(err, ShouldNotBeNil) }) - Convey("settings with alertOnExecError should trigger incident", func() { + Convey("settings should trigger incident", func() { json := ` { - "integrationKey": "abcdefgh0123456789", - "alertOnExecError": true + "integrationKey": "abcdefgh0123456789" }` settingsJSON, _ := simplejson.NewJson([]byte(json)) @@ -47,7 +46,6 @@ func TestPagerdutyNotifier(t *testing.T) { So(pagerdutyNotifier.Name, ShouldEqual, "pagerduty_testing") So(pagerdutyNotifier.Type, ShouldEqual, "pagerduty") So(pagerdutyNotifier.Key, ShouldEqual, "abcdefgh0123456789") - So(pagerdutyNotifier.AlertOnExecError, ShouldEqual, true) }) }) diff --git a/public/app/features/alerting/partials/notification_edit.html b/public/app/features/alerting/partials/notification_edit.html index 904fd9df0e5..7ee96e60c8a 100644 --- a/public/app/features/alerting/partials/notification_edit.html +++ b/public/app/features/alerting/partials/notification_edit.html @@ -103,15 +103,6 @@ Integration Key -
- - -
From 5549d8658a4f7143e75ba3819c923bea79e28193 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 7 Nov 2016 07:27:31 -0800 Subject: [PATCH 7/7] Fixed description message --- pkg/services/alerting/notifiers/pagerduty.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/services/alerting/notifiers/pagerduty.go b/pkg/services/alerting/notifiers/pagerduty.go index 198fe744018..8b8b2df1af4 100644 --- a/pkg/services/alerting/notifiers/pagerduty.go +++ b/pkg/services/alerting/notifiers/pagerduty.go @@ -43,7 +43,7 @@ func (this *PagerdutyNotifier) Notify(evalContext *alerting.EvalContext) error { bodyJSON := simplejson.New() bodyJSON.Set("service_key", this.Key) - bodyJSON.Set("description", evalContext.Rule.Name+"-"+evalContext.Rule.Message) + bodyJSON.Set("description", evalContext.Rule.Name + " - " + evalContext.Rule.Message) bodyJSON.Set("client", "Grafana") bodyJSON.Set("event_type", "trigger")