MCPcopy
hub / github.com/ccfos/nightingale / SendCallbacks

Method SendCallbacks

alert/dispatch/dispatch.go:764–815  ·  view source on GitHub ↗
(rule *models.AlertRule, notifyTarget *NotifyTarget, event *models.AlertCurEvent)

Source from the content-addressed store, hash-verified

762}
763
764func (e *Dispatch) SendCallbacks(rule *models.AlertRule, notifyTarget *NotifyTarget, event *models.AlertCurEvent) {
765 uids := notifyTarget.ToUidList()
766 urls := notifyTarget.ToCallbackList()
767 whMap := notifyTarget.ToWebhookMap()
768 ogw := event.OverrideGlobalWebhook()
769 for _, urlStr := range urls {
770 if len(urlStr) == 0 {
771 continue
772 }
773
774 cbCtx := sender.BuildCallBackContext(e.ctx, urlStr, rule, []*models.AlertCurEvent{event}, uids, e.userCache, e.alerting.WebhookBatchSend, e.Astats)
775
776 if wh, ok := whMap[cbCtx.CallBackURL]; !ogw && ok && wh.Enable {
777 logger.Debugf("SendCallbacks: webhook[%s] is in global conf.", cbCtx.CallBackURL)
778 continue
779 }
780
781 if strings.HasPrefix(urlStr, "${ibex}") {
782 e.CallBacks[models.IbexDomain].CallBack(cbCtx)
783 continue
784 }
785
786 if !(strings.HasPrefix(urlStr, "http://") || strings.HasPrefix(urlStr, "https://")) {
787 cbCtx.CallBackURL = "http://" + urlStr
788 }
789
790 parsedURL, err := url.Parse(urlStr)
791 if err != nil {
792 logger.Errorf("SendCallbacks: failed to url.Parse(urlStr=%s): %v", urlStr, err)
793 continue
794 }
795
796 // process feishu card
797 if parsedURL.Host == models.FeishuDomain && parsedURL.Query().Get("card") == "1" {
798 e.CallBacks[models.FeishuCardDomain].CallBack(cbCtx)
799 continue
800 }
801
802 // process lark card
803 if parsedURL.Host == models.LarkDomain && parsedURL.Query().Get("card") == "1" {
804 e.CallBacks[models.LarkCardDomain].CallBack(cbCtx)
805 continue
806 }
807
808 callBacker, ok := e.CallBacks[parsedURL.Host]
809 if ok {
810 callBacker.CallBack(cbCtx)
811 } else {
812 e.CallBacks[models.DefaultDomain].CallBack(cbCtx)
813 }
814 }
815}
816
817func (e *Dispatch) HandleIbex(rule *models.AlertRule, event *models.AlertCurEvent) {
818 // 解析 RuleConfig 字段

Callers 1

SendMethod · 0.95

Calls 9

BuildCallBackContextFunction · 0.92
ToUidListMethod · 0.80
ToCallbackListMethod · 0.80
ToWebhookMapMethod · 0.80
OverrideGlobalWebhookMethod · 0.80
CallBackMethod · 0.65
QueryMethod · 0.65
ParseMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected