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 @@
挂载节点: |
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++ {
|