func (s *Server) appendPagerDutyService(c pagerduty.Config) { if c.Enabled { l := s.LogService.NewLogger("[pagerduty] ", log.LstdFlags) srv := pagerduty.NewService(c, l) srv.HTTPDService = s.HTTPDService s.TaskMaster.PagerDutyService = srv s.Services = append(s.Services, srv) } }
func (s *Server) appendPagerDutyService() { c := s.config.PagerDuty l := s.LogService.NewLogger("[pagerduty] ", log.LstdFlags) srv := pagerduty.NewService(c, l) srv.HTTPDService = s.HTTPDService s.TaskMaster.PagerDutyService = srv s.SetDynamicService("pagerduty", srv) s.AppendService("pagerduty", srv) }
func TestStream_AlertPagerDuty(t *testing.T) { requestCount := 0 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { requestCount++ type postData struct { ServiceKey string `json:"service_key"` EventType string `json:"event_type"` Description string `json:"description"` Client string `json:"client"` ClientURL string `json:"client_url"` Details interface{} `json:"details"` } pd := postData{} dec := json.NewDecoder(r.Body) dec.Decode(&pd) if exp := "service_key"; pd.ServiceKey != exp { t.Errorf("unexpected service key got %s exp %s", pd.ServiceKey, exp) } if exp := "trigger"; pd.EventType != exp { t.Errorf("unexpected event type got %s exp %s", pd.EventType, exp) } if exp := "CRITICAL alert for kapacitor/cpu/serverA"; pd.Description != exp { t.Errorf("unexpected description got %s exp %s", pd.Description, exp) } if exp := "kapacitor"; pd.Client != exp { t.Errorf("unexpected client got %s exp %s", pd.Client, exp) } if len(pd.ClientURL) == 0 { t.Errorf("unexpected client url got empty string") } if pd.Details == nil { t.Error("unexpected data got nil") } })) defer ts.Close() var script = ` stream .from().measurement('cpu') .where(lambda: "host" == 'serverA') .groupBy('host') .window() .period(10s) .every(10s) .mapReduce(influxql.count('idle')) .alert() .id('kapacitor/{{ .Name }}/{{ index .Tags "host" }}') .message('{{ .Level }} alert for {{ .ID }}') .info(lambda: "count" > 6.0) .warn(lambda: "count" > 7.0) .crit(lambda: "count" > 8.0) .pagerDuty() .pagerDuty() ` clock, et, replayErr, tm := testStreamer(t, "TestStream_Alert", script) defer tm.Close() c := pagerduty.NewConfig() c.URL = ts.URL c.ServiceKey = "service_key" pd := pagerduty.NewService(c, logService.NewLogger("[test_pd] ", log.LstdFlags)) pd.HTTPDService = tm.HTTPDService tm.PagerDutyService = pd err := fastForwardTask(clock, et, replayErr, tm, 13*time.Second) if err != nil { t.Error(err) } if requestCount != 2 { t.Errorf("unexpected requestCount got %d exp 1", requestCount) } }