diff --git a/etc/mail.tpl b/etc/mail.tpl index 49504fca..083360e4 100644 --- a/etc/mail.tpl +++ b/etc/mail.tpl @@ -163,6 +163,14 @@ 告警设备: {{.Endpoint}} + + 设备名称: + {{.Name}} + + + 设备备注: + {{.Note}} + 挂载节点: diff --git a/etc/sms.tpl b/etc/sms.tpl index 429ea031..7253b4ae 100644 --- a/etc/sms.tpl +++ b/etc/sms.tpl @@ -2,6 +2,8 @@ 级别状态:{{.Status}} 策略名称:{{.Sname}} 告警设备:{{.Endpoint}} +设备名称:{{.Name}} +设备备注:{{.Note}} 挂载节点: {{range .Bindings}}{{.}} {{end}}监控指标:{{.Metric}} diff --git a/src/models/resource.go b/src/models/resource.go index 37afd0ea..5f9f2b9f 100644 --- a/src/models/resource.go +++ b/src/models/resource.go @@ -54,6 +54,15 @@ func ResourceIdsByIdents(idents []string) ([]int64, error) { return ids, err } +func ResourcesByIdents(idents []string) ([]Resource, error) { + if len(idents) == 0 { + return []Resource{}, nil + } + var resouces = []Resource{} + err := DB["rdb"].Table(new(Resource)).In("ident", idents).Find(&resouces) + return resouces, err +} + func ResourceIdentsByIds(ids []int64) ([]string, error) { if len(ids) == 0 { return []string{}, nil diff --git a/src/modules/monapi/notify/notify.go b/src/modules/monapi/notify/notify.go index 7fa9df8f..e7c61a1e 100644 --- a/src/modules/monapi/notify/notify.go +++ b/src/modules/monapi/notify/notify.go @@ -108,11 +108,14 @@ func genContent(isUpgrade bool, events []*models.Event) (string, string) { } } + resources := getResources(events) + metric := strings.Join(metricList, ",") status := genStatus(events) sname := events[cnt-1].Sname endpoint := genEndpoint(events) + name, note := genNameAndNoteByResources(resources) tags := genTags(events) value := events[cnt-1].Value info := events[cnt-1].Info @@ -156,6 +159,8 @@ func genContent(isUpgrade bool, events []*models.Event) (string, string) { "Status": status, "Sname": sname, "Endpoint": endpoint, + "Name": name, + "Note": note, "CurNodePath": curNodePath, "Metric": metric, "Tags": tags, @@ -282,6 +287,38 @@ func HostBindingsForMon(endpointList []string) ([]string, error) { return list, nil } +func getResources(events []*models.Event) []models.Resource { + idents := []string{} + for i := 0; i < len(events); i++ { + idents = append(idents, events[i].Endpoint) + } + resources, err := models.ResourcesByIdents(idents) + if err != nil { + logger.Errorf("get resources by idents failed : %v", err) + } + return resources +} + +func genNameAndNoteByResources(resources []models.Resource) (name, note string) { + names := []string{} + notes := []string{} + for i := 0; i < len(resources); i++ { + names = append(names, resources[i].Name) + notes = append(notes, resources[i].Note) + } + names = config.Set(names) + notes = config.Set(notes) + + if len(resources) == 1 { + name = names[0] + note = notes[0] + return + } + name = fmt.Sprintf("%s(%v)", strings.Join(names, ","), len(names)) + note = fmt.Sprintf("%s(%v)", strings.Join(notes, ","), len(notes)) + return +} + func getEndpoint(events []*models.Event) []string { endpointList := []string{} for i := 0; i < len(events); i++ {