这边做了一个wehook程序来判断event里的channels是否有voice,只用于电话告警的场景。
a组配置了cpu>95的告警,b组订阅了这个告警并新加了电话的channel,但是实际告警触发后b组团队并没有收到电话告警,日志提示no sender vioce。
查看了这块的代码,在处理订阅告警时只会通过handleNotice去处理,这个里面只会使用script和plugin的方式,
因为所有告警都会post到webhook,所以这块订阅是不会添加这个了吗,大概我理解这两个是隔离的告警处理应用。
// notify.go
func notify(event *models.AlertCurEvent) {
LogEvent(event, "notify")
notice := genNotice(event)
stdinBytes, err := json.Marshal(notice)
if err != nil {
logger.Errorf("event_notify: failed to marshal notice: %v", err)
return
}
alertingRedisPub(event.Cluster, stdinBytes)
alertingWebhook(event)
handleNotice(notice, stdinBytes)
// handle alert subscribes
subs, has := memsto.AlertSubscribeCache.Get(event.RuleId)
if has {
handleSubscribes(*event, subs)
}
subs, has = memsto.AlertSubscribeCache.Get(0)
if has {
handleSubscribes(*event, subs)
}
}